您的位置:首页 > 数据库

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

2015-06-15 20:39 351 查看

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

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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息