广州本田整车销售系统技术分析(五)
2015-06-15 20:39
351 查看
广州本田整车销售系统技术分析(五)
一、PDI检查主要有查询,PDI检查,重做PDI检查,查看PDI检查B单等四个功能操作
1、查询功能的实现:图1-1.1中的查询条件栏中输入您的查询条件------>按“查询按钮”即可!
看图1-1.1
图1-1.1
A、数据库表与表之间的关系
B、由上图可知该界面用到的控件有:
C、表与表之间的关系所用到的表有:
dbo.CarList(车辆表)
PrimaryKey(s): CarID
dbo.FreightInvoicesList(货运单表)
PrimaryKey(s): FreightInvoicesID
dbo.FreightInvoicesDetailList(货运单明细表)
PrimaryKey(s): FreightInvoicesDetailID
dbo.ColorList(颜色表)
PrimaryKey(s): ColorID
dbo.AttributeGatherDetailList(属性明细表)
PrimaryKey(s):
dbo.PDICheckList(PDI检查表)
PrimaryKey(s): PDICheckID
思路分析:该查询是根据您输入的的查询条件进行查询的不定条件查询,此查询功能的核心是:查询所有的车辆数据---->在界面层(UIL)根据查询条件进行筛选----->将筛选的数据绑定相对应的控件里。
步骤过程:
第一步:写储存过程
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
3.1、PDI检查功能实现的储存过程代码
广州本田整车销售系统技术分析(五)
一、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) |
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 | 是否接车 | ||
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 | 是否接车 |
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 | 直销车否 |
PrimaryKey(s): ColorID
Field | Type | Nulls? | 主键/外键 | Comments |
ColorID | int - Identity | No | 主键 | 颜色ID |
ColorName | nchar (20) | Yes | 颜色名称 | |
ColorCode | nchar (20) | Yes | 颜色代码 |
PrimaryKey(s):
Field | Type | Nulls? | 主键/外键 | Comments | |
AttributeGatherDetailID | int - Identity | No | 主键 | 属性明细ID | |
AttributeGatherID | int | Yes | 外键 | 属性集合ID | |
AttributeGatherDetail | nchar (30) | Yes | 属性明细 | ||
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 |
步骤过程:
第一步:写储存过程
--查询所有车辆数据 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 );//获取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 } 注:此技术仅供与学习用途,禁止用于商业用途!!!
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- flex 控件的重要属性
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- 解析Silverlight调用WCF/Rest异常的解决方法
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- Delphi控件ListView的属性及使用方法详解