广州本田整车销售系统技术分析(五)



广州本田整车销售系统技术分析(五)

一、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.PDICheckListPDI检查表)


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
        }
 注:此技术仅供与学习用途,禁止用于商业用途!!!

 















 


 



 


 





 








  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值