广州本田整车销售系统技术分析(五)
一、PDI检查主要有查询,PDI检查,重做PDI检查,查看PDI检查B单等四个功能操作
1、查询功能的实现:图1-1.1中的查询条件栏中输入您的查询条件------>按“查询按钮”即可!
看图1-1.1
图1-1.1
A、数据库表与表之间的关系
B、由上图可知该界面用到的控件有:
控件名称 | 说明 |
日期控件(DateTimePicker) | 控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。 |
下拉框(ComboBox) | |
文本(TextBox) | |
按钮(Button) | |
下拉树(treeView) | |
选项卡(TabControl) | |
标题框(GrouBox) | |
单选按钮(RadioButton) |
|
C、表与表之间的关系所用到的表有:
dbo.CarList(车辆表)
PrimaryKey(s): CarID
Field | Type | Nulls? | 主键/外键 | Comments | |
CarID | int - Identity | No | 主键 | 车辆ID
| |
FreightInvoicesDetailID | int | Yes | 外键 | 货运单明细ID
| |
CarTypeID | int | Yes | 外键 | 车辆类型ID
| |
CarFrameNumber | nchar (60) | Yes |
| 车架号
| |
CarEngineNumber | nchar (60) | Yes |
| 发动机号
| |
CarKindID | int | Yes | 外键 | 车种ID
| |
CarMondelID | int | Yes | 外键 | 车型ID
| |
CarBodyColorID | int | Yes | 外键 | 车身颜色ID
| |
CarUnderOrnamentsColorID | int | Yes | 外键 | 内饰颜色ID
| |
CarTransmissionID | int | Yes | 外键 | 变速箱ID
| |
CarKeyNumber | nchar (20) | Yes |
| 钥匙号
| |
CarStockPrice | decimal (18, 3) | Yes |
| 进货价格
| |
ProductionManufacturersID | int | Yes | 外键 | 生产厂家ID
| |
CarPDIWhetherDetection | bit | Yes |
| PDI检查否
| |
CarStatusID | int | Yes | 外键 | 车辆状态ID
| |
OldCarID | int | Yes |
| 原车辆ID
| |
OutSurveyCommodityCarID | int | Yes | 外键 | 外调商品车ID
| |
WhetherSchedule | bit | Yes |
| 是否预定
| |
ThoughtCarPDIWhetherDetection | bit | Yes |
| 通过PDI检查否
| |
WhetherStraightMelt | bit | Yes |
| 直销车否
| |
WhetherConnectCar | bit | Yes |
| 是否接车
| |
dbo.FreightInvoicesList(货运单表)
PrimaryKey(s): FreightInvoicesID
Field | Type | Nulls? | 主键/外键 | Comments |
FreightInvoicesID | int - Identity | No | 主键 | 货运单ID
|
FreightInvoicesNumber | nchar (60) | Yes |
| 货运单编号
|
IssueCarStaffID | int | Yes | 外键 | 发车员ID
|
ForWardingdate | datetime | Yes |
| 发运日期
|
TransportCompanyID | int | Yes | 外键 | 承运方ID
|
TrafficCarID | int | Yes | 外键 | 运输车ID
|
TrafficDriverID | int | Yes | 外键 | 运输司机ID
|
PassManageerID | int | Yes | 外键 | 经办人ID
|
Sum | decimal (18, 3) | Yes |
| 总价
|
PlanHandCarDate | datetime | Yes |
| 计划交车日期
|
OrderNumber | nchar (20) | Yes |
| 订单号
|
InvoiceNumber | nchar (20) | Yes |
| 发票号
|
Remark | nchar (100) | Yes |
| 备注
|
WhetherFinishConnectCar | bit | Yes |
| 是否完成接车
|
WhetherExamineaAndVerify | bit | Yes |
| 审核否
|
WhetherConnectCar | bit | Yes |
| 是否接车
|
dbo.FreightInvoicesDetailList(货运单明细表)
PrimaryKey(s): FreightInvoicesDetailID
Field | Type | Nulls? | 主键/外键 | Comments |
FreightInvoicesDetailID | int - Identity | No | 主键 | 货运单明细ID
|
FreightInvoicesID | int | Yes | 外键 | 货运单ID
|
CommodityCarID | int | Yes | 外键 | 货物车辆ID
|
Quantity | int | Yes |
| 数量
|
WhetherStraightMelt | bit | Yes |
| 直销车否
|
dbo.ColorList(颜色表)
PrimaryKey(s): ColorID
Field | Type | Nulls? | 主键/外键 | Comments |
ColorID | int - Identity | No | 主键 | 颜色ID
|
ColorName | nchar (20) | Yes |
| 颜色名称
|
ColorCode | nchar (20) | Yes |
| 颜色代码
|
dbo.AttributeGatherDetailList(属性明细表)
PrimaryKey(s):
Field | Type | Nulls? | 主键/外键 | Comments | |
AttributeGatherDetailID | int - Identity | No | 主键 | 属性明细ID
| |
AttributeGatherID | int | Yes | 外键 | 属性集合ID
| |
AttributeGatherDetail | nchar (30) | Yes |
| 属性明细
| |
dbo.PDICheckList(PDI检查表)
PrimaryKey(s): PDICheckID
Field | Type | Nulls? | 主键/外键 | Comments |
PDICheckID | int - Identity | No | 主键 | PDI检查ID
|
CarID | int | Yes | 外键 | 车辆ID
|
RunMileage | decimal (18, 3) | Yes |
| 行使里程
|
CheckDate | date | Yes |
| PDI检查时间
|
CheckerID | int | Yes | 外键 | 检查员ID
|
CheckeSignDate | date | Yes |
| 检查员签字日期
|
SalesManID | int | Yes | 外键 | 销售员ID
|
SalesManSignDate | date | Yes |
| 销售员签字日期
|
CarMastter | nchar (20) | Yes |
| 车主
|
CarMastterSignDate | date | Yes |
| 车主签字日期
|
OldPIDCheckID | int | Yes |
| 原PDI检查ID
|
思路分析:该查询是根据您输入的的查询条件进行查询的不定条件查询,此查询功能的核心是:查询所有的车辆数据---->在界面层(UIL)根据查询条件进行筛选----->将筛选的数据绑定相对应的控件里。
步骤过程:
第一步:写储存过程
--查询所有车辆数据
if(@Type='frm_PDI_Load_Select_CheLiangBiao')
begin
SELECT CarList.CarID, CarList.CarFrameNumber, AttributeGatherDetailList.AttributeGatherDetail AS CheZhong, AttributeGatherDetailList_1.AttributeGatherDetail AS CheXing,
ColorList.ColorName AS CheShengYanShe, AttributeGatherDetailList_2.AttributeGatherDetail AS ShenChanChangJia, CarList.WhetherConnectCar, CarList.WhetherStraightMelt, CarList.CarMondelID,
CarList.ProductionManufacturersID, CarList.CarEngineNumber, ColorList.ColorCode AS YanSheDaiMa, CarList.ThoughtCarPDIWhetherDetection,
AttributeGatherDetailList_3.AttributeGatherDetail AS BianSuXiangHao, CarList.CarKeyNumber, FreightInvoicesList.FreightInvoicesNumber, ColorList_1.ColorName AS NeiShiYanShe,
ColorList_1.ColorCode AS NeiShiYanSheDaiMa, PDICheckList.CheckDate, (CASE WHEN CarList.CarPDIWhetherDetection = 1 THEN '是' ELSE '否' END) AS CarPDIWhetherDetection,
PDICheckList.PDICheckID
FROM CarList INNER JOIN
AttributeGatherDetailList ON CarList.CarKindID = AttributeGatherDetailList.AttributeGatherDetailID INNER JOIN
AttributeGatherDetailList AS AttributeGatherDetailList_1 ON CarList.CarMondelID = AttributeGatherDetailList_1.AttributeGatherDetailID INNER JOIN
ColorList ON CarList.CarBodyColorID = ColorList.ColorID INNER JOIN
AttributeGatherDetailList AS AttributeGatherDetailList_2 ON CarList.ProductionManufacturersID = AttributeGatherDetailList_2.AttributeGatherDetailID INNER JOIN
FreightInvoicesDetailList ON CarList.FreightInvoicesDetailID = FreightInvoicesDetailList.FreightInvoicesDetailID INNER JOIN
FreightInvoicesList ON FreightInvoicesDetailList.FreightInvoicesID = FreightInvoicesList.FreightInvoicesID INNER JOIN
AttributeGatherDetailList AS AttributeGatherDetailList_3 ON CarList.CarTransmissionID = AttributeGatherDetailList_3.AttributeGatherDetailID INNER JOIN
ColorList AS ColorList_1 ON CarList.CarUnderOrnamentsColorID = ColorList_1.ColorID LEFT OUTER JOIN
PDICheckList ON CarList.CarID = PDICheckList.CarID
WHERE (CarList.WhetherConnectCar = 1)
ORDER BY PDICheckList.CheckDate DESC
end
注1、CASE WHEN CarList.CarPDIWhetherDetection = 1 THEN '是' ELSE '否' END) AS CarPDIWhetherDetection
如果 CarList.CarPDIWhetherDetection (PDI检查否)= 1 则返回值为“是”,否则为“否”
注 2、 ORDER BY PDICheckList.CheckDate DESC 根据最新的检查日期进行排序
第二步:写逻辑层
#region 查询车辆表
[OperationContract]
public DataSet frm_PDI_Load_Select_CheLiangBiao()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType.Char)
};
mySqlParameters[0].Value = "frm_PDI_Load_Select_CheLiangBiao";
DataTable dt = myDALMethod.QueryDataTable("接车管理_JieCheGuanLi_PDI_JianCha", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion
第三步:写界面层(UIL)
/// <summary>
/// 查询按钮的单击事件
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发环境</param>
private void btnSelect_Click(object sender, EventArgs e)
{
BangDingdgv_Car(dtCheLiang);
DataView dv = new DataView(dtCheLiang);
string strChaXunTiaoJian = "";
DataTable dtNewCheLiangBiao;
if (dtCheLiang.Rows.Count == 0)
{
MessageBox.Show("抱歉,没要检测到您要的数据!!!");
return;
}
if (radWeiZuoPDIJianCha.Checked == true)
{
strChaXunTiaoJian+= " CarPDIWhetherDetection like '%" + "否" + "%' and";
}
else
{
strChaXunTiaoJian+= " CarPDIWhetherDetection like '%" + "是" + "%' and";
}
if (txtCarFrameNumber.Text.ToString().Trim() != "")
{
strChaXunTiaoJian += " CarFrameNumber like '%" + txtCarFrameNumber.Text.ToString().Trim() + "%' and";
}
if (txtCarEngineNumber.Text.ToString().Trim() != "")
{
strChaXunTiaoJian += " CarEngineNumber like '%" + txtCarEngineNumber.Text.ToString().Trim() + "%' and";
}
if (txtFreightInvoicesNumber.Text.ToString().Trim() != "")
{
strChaXunTiaoJian += " FreightInvoicesNumber like '%" + txtFreightInvoicesNumber.Text.ToString().Trim() + "%' and";
}
if (dtpCheckDate_KaiShi.Checked == true)
{
strChaXunTiaoJian += " CheckDate>='" + dtpCheckDate_KaiShi.Value + "'AND CheckDate<='" + dtPCheckDate_JieShu.Value + "'and";
}
if (strChaXunTiaoJian.Length < 3)//没进行多条件查询操作
{ }
else//进行多条件操作
{
dv.RowFilter = strChaXunTiaoJian.Remove(strChaXunTiaoJian.Length - 3);//删除多余的“and”
dtNewCheLiangBiao = dv.ToTable();
if (dtNewCheLiangBiao.Rows.Count == 0)
{
MessageBox.Show("抱歉,没要检测到您要的数据!!!");
return;
}
BangDingdgv_Car( dtNewCheLiangBiao);//绑定数据
}
}
2、查看PDI检查B单功能:
功能的实现:在车辆列表中选择一辆已经做PDI检查的车辆------->单击“PDI检查B单按钮”------->就可查看并修改PDI检查B单所对应的信息看图:2-1.1
思路分析:选择一辆已做PDI检查的车辆---->根据车辆ID查询PDI检查ID------>根据PDI检查ID查询PDI检查B单---->查询出的数据绑定到相对应的控件里------>可对PDI检查B单进行修改。
图2-1.1
2-1.1
3、PDI检查功能:
功能的实现:在车辆列表中选择一辆还没做PDI检查的车辆----->在PDI检查项目中选择存在问题的PDI检查项目打“勾”------>接着就会弹出PDI检查B单界面------>录入相关的问题及解决方法------>按保存按钮
思路分析:在车辆列表中选择一辆还没做PDI检查的车辆,在进行的检查中,若存在有问题的PDI检查项目,则在PDI检查项目中打钩,紧接着就会弹出PDI检查B单界面,否则就常规保存。
看图3-1.1
图3-1.1
<p class="MsoNormal"><span style="font-family:宋体;font-size: 10pt; mso-font-kerning: 1.0000pt; mso-spacerun: 'yes';">2.1<span style="font-family:宋体;">、</span><span style="font-family:Times New Roman;">PDI</span><span style="font-family:宋体;">检查功能实现的存过程:</span></span></p><p class="MsoNormal"><span style="font-family:宋体;font-size: 10pt; mso-font-kerning: 1.0000pt; mso-spacerun: 'yes';"></span><pre class="sql" name="code">A、绑定下拉框:
--绑定变速箱
if(@Type='Select_BianSuXiang')
begin
SELECT LTRIM(RTRIM(AttributeGatherDetailList.AttributeGatherDetailID)) as AttributeGatherDetailID, LTRIM(RTRIM(AttributeGatherDetailList.AttributeGatherDetail)) as AttributeGatherDetail
FROM AttributeGatherDetailList INNER JOIN
AttributeGatherList ON AttributeGatherDetailList.AttributeGatherID = AttributeGatherList.AttributeGatherID
WHERE AttributeGatherList.AttributeGatherID=8
end
--()绑定经办人
if(@Type='Select_CboJingBanRen')
begin
SELECT LTRIM(RTRIM(StaffID)) as StaffID, LTRIM(RTRIM(StaffName)) as StaffName
FROM StaffList
End
注:以上两个是绑定下拉框的储存过程
B、根据车辆ID查询车辆信息
--根据PDICheckIDC查询PDI检查B单
if(@Type='PDICheckBInvoicesID_Select')
begin
SELECT PDICheckBInvoicesID, PDICheckID,LTRIM(RTRIM(Question))as Question, LTRIM(RTRIM(ServiceCondition))as ServiceCondition
FROM PDICheckBInvoicesList
where PDICheckBInvoicesList.PDICheckID =@PDICheckID and PDICheckBInvoicesList.KeYongFou=1
End
--根据车辆ID查询车辆表
if(@Type='Select_YouTiaoJianSelectCheLiangBiao')
begin
SELECT CarList.CarID, CarList.CarFrameNumber, AttributeGatherDetailList.AttributeGatherDetail AS CheZhong, AttributeGatherDetailList_1.AttributeGatherDetail AS CheXing,
ColorList.ColorName AS CheShengYanShe, AttributeGatherDetailList_2.AttributeGatherDetail AS ShenChanChangJia, CarList.WhetherConnectCar, CarList.WhetherStraightMelt, CarList.CarMondelID,
CarList.ProductionManufacturersID, CarList.CarEngineNumber, ColorList.ColorCode AS YanSheDaiMa, CarList.ThoughtCarPDIWhetherDetection,
AttributeGatherDetailList_3.AttributeGatherDetail AS BianSuXiangHao, CarList.CarKeyNumber, CarList.CarPDIWhetherDetection, FreightInvoicesList.FreightInvoicesNumber,
ColorList_1.ColorName AS NeiShiYanShe, ColorList_1.ColorCode AS NeiShiYanSheDaiMa, CarList.CarTransmissionID
FROM CarList INNER JOIN
AttributeGatherDetailList ON CarList.CarKindID = AttributeGatherDetailList.AttributeGatherDetailID INNER JOIN
AttributeGatherDetailList AS AttributeGatherDetailList_1 ON CarList.CarMondelID = AttributeGatherDetailList_1.AttributeGatherDetailID INNER JOIN
ColorList ON CarList.CarBodyColorID = ColorList.ColorID INNER JOIN
AttributeGatherDetailList AS AttributeGatherDetailList_2 ON CarList.ProductionManufacturersID = AttributeGatherDetailList_2.AttributeGatherDetailID INNER JOIN
FreightInvoicesDetailList ON CarList.FreightInvoicesDetailID = FreightInvoicesDetailList.FreightInvoicesDetailID INNER JOIN
FreightInvoicesList ON FreightInvoicesDetailList.FreightInvoicesID = FreightInvoicesList.FreightInvoicesID INNER JOIN
AttributeGatherDetailList AS AttributeGatherDetailList_3 ON CarList.CarTransmissionID = AttributeGatherDetailList_3.AttributeGatherDetailID INNER JOIN
ColorList AS ColorList_1 ON CarList.CarUnderOrnamentsColorID = ColorList_1.ColorID
where <a target=_blank href="mailto:CarList.CarID=@CarID">CarList.CarID=@CarID</a>
end
注:此段储存过程用于绑定车辆的信息
C、修改PDI检查B单
--根据PDICheckBInvoicesID修改PDICheckBInvoicesList
if(@Type='PDICheckBInvoicesList_Update')
begin
IF EXISTS ( SELECT PDICheckBInvoicesList.CheckerID
FROM PDICheckBInvoicesList
where PDICheckBInvoicesList.PDICheckBInvoicesID=@PDICheckBInvoicesID and PDICheckBInvoicesList.KeYongFou=1
)
begin
update PDICheckBInvoicesList
set ServiceCondition=@ServiceCondition,Question=@Question,CheckerID=@CheckerID,CheckDate=@CheckDate,SignDate=@SignDate
where PDICheckBInvoicesList.PDICheckBInvoicesID =@PDICheckBInvoicesID
end
ELSE
BEGIN
insert into PDICheckBInvoicesList(PDICheckID, CheckDate, CheckerID, SignDate, Question, ServiceCondition,KeYongFou)
values (@PDICheckID, @CheckDate, @CheckerID, @SignDate, @Question, @ServiceCondition,1)
END
End
注:如果根据PDI检查ID能在PDI检查B单查出数据,则就执行第一段储存过程,否则就执行第二段储存过程
D、删除部分:
--根据PDICheckBInvoicesIDPDI检查B单表的可用否状态
if(@Type='PDICheckBInvoicesList_Update_KeYongFou')
begin
update PDICheckBInvoicesList
set PDICheckBInvoicesList.KeYongFou=0
where PDICheckBInvoicesList.PDICheckBInvoicesID =@PDICheckBInvoicesID
end
</pre><pre class="csharp" name="code">2.2、PDI检查功能实现的存过程的逻辑层(BLL)
#region 变速箱号
[OperationContract]
public DataSet Select_BianSuXiang()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType.Char),
};
mySqlParameters[0].Value = "Select_BianSuXiang";
DataTable dt = myDALMethod.QueryDataTable("公共方法_Combox绑定", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion
#region 经办人
[OperationContract]
public DataSet Select_CboJingBanRen()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType.Char),
};
mySqlParameters[0].Value = "Select_CboJingBanRen";
DataTable dt = myDALMethod.QueryDataTable("公共方法_Combox绑定", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion
注:以上是绑定下拉框的储存过程
#region 根据车辆ID查询车辆表
[OperationContract]
public DataSet Select_YouTiaoJianSelectCheLiangBiao(int CarID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType.Char),
new SqlParameter("@CarID",SqlDbType.Int)
};
mySqlParameters[0].Value = "Select_YouTiaoJianSelectCheLiangBiao";
mySqlParameters[1].Value = CarID;
DataTable dt = myDALMethod.QueryDataTable("接车管理_JieCheGuanLi_PDI_JianCha", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion
注;此段储存过程是绑定车辆信息的BLL
#region 根据PDICheckBInvoicesIDPDI检查B单表的可用否状态
[OperationContract]
public int PDICheckBInvoicesList_Update_KeYongFou(int PDICheckBInvoicesID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType.Char),
new SqlParameter("@PDICheckBInvoicesID",SqlDbType.Int)
};
mySqlParameters[0].Value = "PDICheckBInvoicesList_Update_KeYongFou";
mySqlParameters[1].Value = PDICheckBInvoicesID;
int i = myDALMethod.UpdateData("接车管理_JieCheGuanLi_PDI_JianCha", mySqlParameters);
return i;
}
#endregion
注;此段储存过程是修改PDI检查B单的BLL
#region 根据PDICheckBInvoicesIDPDI检查B单表的可用否状态
[OperationContract]
public int PDICheckBInvoicesList_Update_KeYongFou(int PDICheckBInvoicesID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType.Char),
new SqlParameter("@PDICheckBInvoicesID",SqlDbType.Int)
};
mySqlParameters[0].Value = "PDICheckBInvoicesList_Update_KeYongFou";
mySqlParameters[1].Value = PDICheckBInvoicesID;
int i = myDALMethod.UpdateData("接车管理_JieCheGuanLi_PDI_JianCha", mySqlParameters);
return i;
}
#endregion
注;此段储存过程是删除检查B单的BLL
3.1、PDI检查功能实现的储存过程代码
--新增PDIB单检查表
if(@Type='PDIJianChaBdanBiao_Insert')
begin
insert into PDICheckBInvoicesList(PDICheckID, CheckDate, CheckerID, SignDate, Question, ServiceCondition,KeYongFou)
values (@PDICheckID, @CheckDate, @CheckerID, @SignDate, @Question, @ServiceCondition,1)
end
--修改车辆表的PDI检查否状态
if(@Type='CheLiangBiao(PDITongGuoFou)_Update')
begin
UPDATE CarList
set CarList.ThoughtCarPDIWhetherDetection=0
where CarList.CarID=@CarID
end
3.2、PDI检查功能实现的逻辑层代码:
注:新增PDIB单检查表的BLL代码
#region 新增PDIB单检查表
[OperationContract]
public int PDIJianChaBdanBiao_Insert(int PDICheckID, DateTime CheckDate, int CheckerID, DateTime SignDate, string Question, string ServiceCondition)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType.Char),
new SqlParameter("@PDICheckID",SqlDbType.Int),
new SqlParameter("@CheckDate",SqlDbType.DateTime),
new SqlParameter("@CheckerID",SqlDbType.Int),
new SqlParameter("@SignDate",SqlDbType.DateTime),
new SqlParameter("@Question",SqlDbType.Char),
new SqlParameter("@ServiceCondition",SqlDbType.Char)
};
mySqlParameters[0].Value = "PDIJianChaBdanBiao_Insert";
mySqlParameters[1].Value = PDICheckID;
mySqlParameters[2].Value = CheckDate;
mySqlParameters[3].Value = CheckerID;
mySqlParameters[4].Value = SignDate;
mySqlParameters[5].Value = Question;
mySqlParameters[6].Value = ServiceCondition;
int dt = myDALMethod.UpdateData("接车管理_JieCheGuanLi_PDI_JianCha", mySqlParameters);
return dt;
}
#endregion
注:修改车辆表的PDI检查通过否状态的BLL代码
#region 修改车辆表的PDI检查通过否
[OperationContract]
public int CheLiangBiaoPDITongGuoFou_Update(int CarID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type",SqlDbType.Char),
new SqlParameter("@CarID",SqlDbType.Int)
};
mySqlParameters[0].Value = "CheLiangBiao(PDITongGuoFou)_Update";
mySqlParameters[1].Value = CarID;
int dt = myDALMethod.UpdateData("接车管理_JieCheGuanLi_PDI_JianCha", mySqlParameters);
return dt;
}
#endregion
第三步:写界面层(UIL)包括:PDI检查B单及PDI检查两部分
A、界面与界面之间有关值的传值代码:
namespace 广州本田整车销售管理系统.接车管理
{
public partial class frmPDIB : Form
{
/// <summary>
/// 界面之间传值的有关变量的声明
/// </summary>
List<string> liWenTiLieBiao = new List<string>();//声明一个泛型数组用于接收PDI检查界面传值过来的有问题的PDI检查项目名称
string strCheJiaHao = "";
string strFaDongJiHao = "";
string strYaoShiHao = "";
string strCheXing = "";
int intJianChaDanID = 0;
int intCheLiangID = 0;
int intPDIJianChaBDan = 0;
int intJieCheJianChaJiLuID = 0;
public frmPDIB(List <string> listWenTilLieBiao,string CheJiaHao, string FaDongJiHao,string YaoShiHao,string CheXing,int JianChaDanID,int CheLiangID,int KuaiGaun)
{
//界面之间的数据赋值
liWenTiLieBiao = listWenTilLieBiao;
strCheJiaHao = CheJiaHao;
strFaDongJiHao = FaDongJiHao;
strYaoShiHao = YaoShiHao;
strCheXing = CheXing;
intJianChaDanID = JianChaDanID;
intCheLiangID = CheLiangID;
intPDIJianChaBDan = KuaiGaun;
InitializeComponent();
}
B、frmPDIB_Load事件代码:
/// <summary>
/// frmPDIB_Load事件
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发环境</param>
private void frmPDIB_Load(object sender, EventArgs e)
{
lbPDIjianChaXianMuLieBiao.Visible = true;//隐藏label1
trv_WenTiLieBiao.Visible = true;//显示trv_WenTiLieBiao
BangDingXiaLaKuan();//调用一个自定义绑定下拉框的方法
BangDingPDIJianChaBDan();//调用一个自定义一个绑定PDI检查项目列表的方法
PDIJianChaBDan();//调用一个自定义绑定PDI检查B单的方法
BangDingWenBenKuangDeZhi();//调用一个自定义绑定文本框方法
}
C、绑定下拉框代码:
在frmPDIB_Load事件调用BangDingXiaLaKuan();的方法
/// <summary>
/// 自定义一个方法绑定下拉框及文本框及文本框的赋值
/// </summary>
public void BangDingXiaLaKuan()
{
#region 绑定下拉框及文本框
DataTable dtBianSuXiang = my公共方法_Combox绑定Client.Select_BianSuXiang().Tables[0];//获取变速箱数据
DataTable dtJianChaYuan = my公共方法_Combox绑定Client.Select_CboJingBanRen().Tables[0];//获取检查员数据
cboCarTransmission.DataSource = dtBianSuXiang;//绑定cboCarTransmission的数据源
cboCarTransmission.DisplayMember = "AttributeGatherDetail";
cboCarTransmission.ValueMember = "AttributeGatherDetailID";
cboChecker.DataSource = dtJianChaYuan;//绑定cboChecker的数据源
cboChecker.DisplayMember = "StaffName";
cboChecker.ValueMember = "StaffID";
#endregion
}
D、在frmPDIB_Load事件调用BangDingXiaLaKuan();的方法。
/// <summary>
/// 自定义一个绑定PDI检查项目列表的方法
/// </summary>
public void BangDingPDIJianChaBDan()
{
#region 绑定treeWeiTilieBiao
treeBiaoTi = new TreeNode("检查项目问题列表");
trv_WenTiLieBiao.Nodes.Add(treeBiaoTi);
for (int i = 0; i < liWenTiLieBiao.Count; i++)
{
TreeNode treeWenTiNeiRong = new TreeNode(liWenTiLieBiao[i]);
treeBiaoTi.Nodes.Add(treeWenTiNeiRong);
}
trv_WenTiLieBiao.ExpandAll();//展开所有节点
#endregion
}
E、修改按钮控件的代码
/// <summary>
/// btnXiuGai(修改按钮)的单击事件
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发环境</param>
private void btnXiuGai_Click(object sender, EventArgs e)
{
txtQuestion.Text = dgvWenTiLieBiao.CurrentRow.Cells["问题或缺陷"].Value.ToString().Trim();
txtServiceCondition.Text = dgvWenTiLieBiao.CurrentRow.Cells["零件更新或维修情况"].Value.ToString().Trim();
striXiuGai = "修改按钮";//做已经执行btnXiuGai_Click操作的标志
}
F、确定按钮控件的代码:
/// <summary>
/// btnconfirm(确定按钮)单击事件
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发环境</param>
private void btnconfirm_Click(object sender, EventArgs e)
{
//确保txtQuestion.Text有值
if (txtQuestion.Text == "" || txtQuestion.Text == "")
{
MessageBox.Show("当前你还没录入“问题或缺陷”或“零件更新或维修情况”,请您录入后再继续!!!");
return;
}
if (striXiuGai == "修改按钮")//判断是否已点击“修改按钮”,如果是则执行里面的代码
{
dgvWenTiLieBiao.CurrentRow.Cells["问题或缺陷"].Value = txtQuestion.Text;
dgvWenTiLieBiao.CurrentRow.Cells["零件更新或维修情况"].Value = txtServiceCondition.Text;
striXiuGai = "";
return;
}
dgvWenTiLieBiao.Rows.Add();//添加一行
for (int i = 0; i < dgvWenTiLieBiao.Rows.Count; i++)//给dgvWenTi赋值
{
dgvWenTiLieBiao.Rows[dgvWenTiLieBiao.Rows.Count-1].Cells["问题或缺陷"].Value = txtQuestion.Text;
dgvWenTiLieBiao.Rows[dgvWenTiLieBiao.Rows.Count-1].Cells["零件更新或维修情况"].Value = txtServiceCondition.Text;
dgvWenTiLieBiao.Rows[dgvWenTiLieBiao.Rows.Count-1].Cells["接车检查记录ID"].Value = "-1";//此处赋值为-1并没有特殊意义,只用于区分该PDI检查记录是否为新增
}
//清空文本框
txtServiceCondition.Text = "";
txtQuestion.Text = "";
}
G、取消按钮的代码:
/// <summary>
/// btncancel(取消按钮)的单击事件
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">除发环境</param>
private void btncancel_Click(object sender, EventArgs e)
{
//清空文本框
txtServiceCondition.Text = "";
txtQuestion.Text = "";
}
H、删除控件的代码:
/// <summary>
/// 删除按钮的单击事件
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发环境</param>
private void btnCler_Click(object sender, EventArgs e)
{
if (intJieCheJianChaJiLuID == 0)//判断是否已选择PDI检查项目表
{
MessageBox.Show("当前您还没有选择您要删除的检查项目,请选择后再继续。。。。");
return;
}
//获取PDI检查项目记录ID
int intJianChanXiangMuJiLuID = Convert.ToInt32(dgvWenTiLieBiao.CurrentRow.Cells["接车检查记录ID"].Value.ToString().Trim());
if (intJianChanXiangMuJiLuID > 0)//判断intJianChanXiangMuJiLuID是否大于0
{
myWenTiLieBiaoShanChuJiLu.Add(intJieCheJianChaJiLuID);//用泛型数组记录删除的intJianChanXiangMuJiLuID(PDI检查项目记录ID)
dgvWenTiLieBiao.Rows.Remove(dgvWenTiLieBiao.CurrentRow);//移除当前删除的行
}
else
{
dgvWenTiLieBiao.Rows.Remove(dgvWenTiLieBiao.CurrentRow);//移除当前删除的行
}
}
I、dgvWenTiLieBiao的单击事件的代码
/// <summary>
/// dgvWenTiLieBiao的单击事件
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发环境</param>
private void dgvWenTiLieBiao_CellClick(object sender, DataGridViewCellEventArgs e)
{
//获取PDI检查B单ID
intJieCheJianChaJiLuID = Convert.ToInt32(dgvWenTiLieBiao.CurrentRow.Cells["接车检查记录ID"].Value.ToString().Trim());
btnXiuGai.Enabled = true;//启用 btnXiuGai(修改按钮)控件
}
J、绑定车辆信息代码:
在frmPDIB_Load事件调用BangDingWenBenKuangDeZhi();的方法
/// <summary>
/// 自定义一个文本框的赋值的方法
/// </summary>
public void BangDingWenBenKuangDeZhi()
{
#region 文本框的赋值
//根据车辆ID获取车辆信息
System.Data.DataTable dtCheLingXinXi = myfrm_JieCheGuanLi_PDIClient.Select_YouTiaoJianSelectCheLiangBiao(intCheLiangID).Tables[0];
txtCarFrameNumber.Text = dtCheLingXinXi.Rows[0]["CarFrameNumber"].ToString().Trim();
txtCarEngineNumber.Text = dtCheLingXinXi.Rows[0]["CarEngineNumber"].ToString().Trim();
txtCarKeyNumber.Text = dtCheLingXinXi.Rows[0]["CarKeyNumber"].ToString().Trim();
cboCarTransmission.SelectedValue = dtCheLingXinXi.Rows[0]["CarTransmissionID"].ToString().Trim();
txtCarMondel.Text = dtCheLingXinXi.Rows[0]["CheXing"].ToString().Trim();
txtCarFrameNumber.Text = strCheJiaHao;
txtCarMondel.Text = strCheXing;
txtCarEngineNumber.Text = strFaDongJiHao;
txtCarKeyNumber.Text = strYaoShiHao;
#endregion
}
K、保存按钮代码(包括:修改与删除两部分):
/// <summary>
/// btnSave(保存按钮的单击事件)
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">除法环境</param>
private void btnSave_Click(object sender, EventArgs e)
{
#region 修改PDIB检查单
if (intPDIJianChaBDan == 1)//判断是否为“PDIB检查B单按钮”修改的保存
{
//声明字段并给它赋值
int intJianChaZheID = Convert.ToInt32(cboChecker.SelectedValue);
DateTime dtJianChaRiQi = dtmCheckDate.Value;
DateTime dtQianZiRiQi = dtmSignDate.Value;
for (int t = 0; t < dgvWenTiLieBiao.Rows.Count; t++)
{
int intJieCheJianChaXiangMuID = Convert.ToInt32(dgvWenTiLieBiao.Rows[t].Cells["接车检查记录ID"].Value.ToString().Trim());
string strWenTiJiQueXian = dgvWenTiLieBiao.Rows[t].Cells["问题或缺陷"].Value.ToString().Trim();
string strLingJianJiWeiHu = dgvWenTiLieBiao.Rows[t].Cells["零件更新或维修情况"].Value.ToString().Trim();
//修改
int intXiuGaiPDIjianChaBDan = myfrm_JieCheGuanLi_PDIClient.PDICheckBInvoicesList_Update(strLingJianJiWeiHu, strWenTiJiQueXian, intJianChaZheID, dtJianChaRiQi, dtQianZiRiQi, intJieCheJianChaXiangMuID,intJianChaDanID);
if (intXiuGaiPDIjianChaBDan > 0 || intXiuGaiPDIjianChaBDan<0)
{
intJiLu++;
}
}
#region PDIB检查单的删除部分
for(int n=0;n<myWenTiLieBiaoShanChuJiLu.Count;n++)
{
int intPDIJianChaBDanID=Convert.ToInt32(myWenTiLieBiaoShanChuJiLu[n]);//获取PDI检查B单ID
//修改PDI检查B单
int intPDIJianChaBdanXiuGai = myfrm_JieCheGuanLi_PDIClient.PDICheckBInvoicesList_Update_KeYongFou(intPDIJianChaBDanID);
if (intPDIJianChaBdanXiuGai > 0)
{
intPDIbDanChengGongShu++;//累加成功修改PDI检查B单表
}
}
#endregion
if (intJiLu == dgvWenTiLieBiao.Rows.Count && intPDIbDanChengGongShu == myWenTiLieBiaoShanChuJiLu.Count)
{
MessageBox.Show("修改成功!!!!");
intLeiJiao = 0;
this.Close();//关闭窗体
return;
}
else
{
MessageBox.Show("修改失败!!!!");
this.Close();//关闭窗体
}
return;
}
#endregion
J、注:新增PDI检查表的代码
#region 新增PDI检查表
if (dgvWenTiLieBiao.Rows.Count == 0)//判断dgvWenTiLieBiao是否为空,若为空则提示!
{
MessageBox.Show("你还没有录入PDI检查问题信息,请录入后再继续。。。");
return;
}
DateTime dtpJianChaRiQi = dtmCheckDate.Value;
int intJianChaYuanID = Convert.ToInt32(cboChecker.SelectedValue);
DateTime dtpQianZiRiQi = dtmSignDate.Value;
for (int k = 0; k < dgvWenTiLieBiao.Rows.Count; k++)
{
string strWenTiJiQueXian = dgvWenTiLieBiao.Rows[k].Cells["问题或缺陷"].Value.ToString().Trim();
string strLingJianJiWeiHu = dgvWenTiLieBiao.Rows[k].Cells["零件更新或维修情况"].Value.ToString().Trim();
int i = Convert.ToInt32(myfrm_JieCheGuanLi_PDIClient.PDIJianChaBdanBiao_Insert(intJianChaDanID, dtpJianChaRiQi, intJianChaYuanID, dtpQianZiRiQi, strWenTiJiQueXian, strLingJianJiWeiHu));
if (i > 0)
{
intXiuGaiTogGuoPDIJianChaFou = myfrm_JieCheGuanLi_PDIClient.CheLiangBiaoPDITongGuoFou_Update(intCheLiangID);//通过PDI检查否
if (intXiuGaiTogGuoPDIJianChaFou > 0)
{
intLeiJiao++;//累加成功判断数
}
}
}
dgvWenTiLieBiao.EndEdit();//结束dgvWenTi编辑
if (intLeiJiao==dgvWenTiLieBiao.Rows.Count)
{
MessageBox.Show("保存成功!!!!");
intLeiJiao = 0;
this.Close();//关闭窗体
}
else
{
MessageBox.Show("保存失败!!!!");
this.Close();//关闭窗体
}
#endregion
}
注:此技术仅供与学习用途,禁止用于商业用途!!!