顾客生日祝贺模块会把当天生日的顾客信息显示在顾客生日祝贺界面,然后可以对客户进行生日祝贺,还有上页、下页操作。
顾客生日祝贺祝贺界面如图(图2)所示:
(图2)
从界面上可以看到我们这里用到的控件有
控件名称 |
说明 |
(ToolStrip) |
控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。 |
表格(DataGridView) |
|
按钮(toolStripButton) /(Button) |
|
下拉框(ComBoBox) |
|
文本框(TextBox) |
|
日期控件(DateTimePicker) |
显示功能实现:
第一步:数据库
1、表和关系
表1:车辆信息表(BM_CarNewsList)
用于存放车辆录入的信息
列名 |
数据类型 |
主键/外键 |
说明 |
CarNewsID |
int |
主键 |
车辆信息ID |
CarOwnerNewsID |
int |
外键 |
车主信息ID |
RecordNumber |
nchar (20) |
|
档案号 |
LicensePlateNumber |
nchar (20) |
|
车牌号 |
CarModelsCode |
nchar (20) |
|
车型代码 |
VINCode |
nchar (20) |
|
VIN码 |
MotorModel |
nchar (20) |
|
发动机型号 |
TransmissionType |
nchar (20) |
|
变速箱形式 |
MotorNumber |
nchar (20) |
|
发动机号 |
TransmissionNumber |
nchar (20) |
|
变速箱号码 |
KeyNumber |
nchar (20) |
|
钥匙号 |
ShiftWay |
nchar (20) |
|
换挡方式 |
CarModelsYearFund |
nchar (20) |
|
车型年款 |
Displacement |
nchar (20) |
|
排量 |
EquipmentCode |
nchar (20) |
|
装备代码 |
BodyworkColour |
nchar (10) |
|
车身颜色 |
LeaveFactoryDate |
datetime |
|
出厂日期 |
FuelKind |
nchar (20) |
|
燃料种类 |
BuyCarDate |
datetime |
|
购车日期 |
BuyCarMileage |
decimal (18, 2) |
|
购车里程 |
Purpose |
nchar (20) |
|
用途 |
SellUnit |
nchar (20) |
|
销售单位 |
CarBrand |
nchar (20) |
|
车辆品牌 |
CarModelsSimpleCode |
nchar (20) |
|
车型简码 |
IfInWarranTyperiod |
bit |
|
在保修期内 |
UserManage |
bit |
|
用户管理 |
IfEffective |
bit |
|
有效否 |
列名 |
数据类型 |
主键/外键 |
说明 |
CarOwnerNewsID |
int |
主键 |
车主信息ID |
CarOwnerCode |
nchar (20) |
|
车主代码 |
CarOwnerName |
nchar (20) |
|
车主姓名 |
AttributeMinuteID_ClientTypeOne |
int |
外键 |
属性明细ID_客户类型一 |
AttributeMinuteID_ClientTypeTwo |
int |
外键 |
属性明细ID_客户类型二 |
AttributeMinuteID_Sex |
int |
外键 |
属性明细ID_性别 |
Site |
nchar (100) |
|
地址 |
MobilePhone |
nchar (20) |
|
移动电话 |
HousePhone |
nchar (20) |
|
住宅电话 |
OfficePhone |
nchar (20) |
|
办公电话 |
AddressPostcode |
nchar (20) |
|
住址邮编 |
TheGenusCountiesAndCities |
nchar (50) |
|
所属县市 |
WorkUnit |
nchar (50) |
|
工作单位 |
Job |
nchar (50) |
|
职务 |
AttributeMinuteID_MaritalStatus |
int |
外键 |
属性明细ID_婚姻状况 |
IDCard |
nchar (30) |
|
身份证号码 |
Birthday |
datetime |
|
生日 |
Hobby |
nchar (100) |
|
爱好 |
ChangeSite |
nchar (100) |
|
变更地址 |
Postcode |
nchar (20) |
|
邮编 |
Nationality |
nchar (50) |
|
国籍 |
|
nchar (50) |
|
|
FacilitateTheReturnTime |
datetime |
|
方便回访时间 |
CarOwnerPicture |
nchar (3000) |
|
车主照片 |
Remarks |
nchar (50) |
|
备注 |
IfEffective |
bit |
|
有效否 |
列名 |
数据类型 |
主键/外键 |
说明 |
ClientBirthdayWarnID |
int |
主键 |
顾客生日提醒ID |
CarOwnerNewsID |
int |
外键 |
车主信息ID |
StaffID_CongratulatePerson |
int |
外键 |
员工ID_祝贺人 |
AttributeMinuteID_CongratulateWay |
int |
外键 |
属性明细ID_祝贺方式 |
CongratulateDate |
datetime |
|
祝贺日期 |
StaffID_CreatePerson |
int |
外键 |
员工ID_生成人 |
CreateDate |
datetime |
|
生成日期 |
CongratulateContent |
nchar (100) |
|
祝贺内容 |
第二步:技术解析
1、只显示当前时间生日的顾客信息,而且未祝贺的背景色为蓝色,已祝贺的背景色为白色:
第一步:数据库存储过程
IF(@TYPE ='dgvCongratulate_Select_ChaXunKeHuXinXi')
BEGIN
SELECT BM_CarNewsList.CarNewsID, BM_CarNewsList.CarOwnerNewsID, BM_CarNewsList.LicensePlateNumber, BM_CarNewsList.CarModelsCode, BM_CarNewsList.VINCode,
BM_CarOwnerNewsList.CarOwnerCode, BM_CarOwnerNewsList.CarOwnerName, BM_CarOwnerNewsList.AttributeMinuteID_Sex, AttributeMinuteList.AttributeMinuteName AS Sex,
BM_CarOwnerNewsList.MobilePhone, BM_CarOwnerNewsList.HousePhone, BM_CarOwnerNewsList.Birthday
FROM BM_CarNewsList INNER JOIN
BM_CarOwnerNewsList ON BM_CarNewsList.CarOwnerNewsID = BM_CarOwnerNewsList.CarOwnerNewsID INNER JOIN
AttributeMinuteList ON BM_CarOwnerNewsList.AttributeMinuteID_Sex = AttributeMinuteList.AttributeMinuteID
END
IF(@TYPE ='FRM_GuKeShengRiZhuHe_Load_Select_ChaXunKeHuShengRiZhuHe')
BEGIN
SELECT BM_ClientBirthdayWarnList.ClientBirthdayWarnID, BM_ClientBirthdayWarnList.StaffID_CongratulatePerson, BM_StaffRecordList.StaffName AS CongratulatePerson,
BM_ClientBirthdayWarnList.AttributeMinuteID_CongratulateWay, AttributeMinuteList.AttributeMinuteName AS CongratulateWay, BM_ClientBirthdayWarnList.CongratulateDate,
BM_ClientBirthdayWarnList.StaffID_CreatePerson, BM_StaffRecordList_1.StaffName AS CreatePerson, BM_ClientBirthdayWarnList.CreateDate, BM_ClientBirthdayWarnList.CarOwnerNewsID,
BM_ClientBirthdayWarnList.CongratulateContent
FROM BM_ClientBirthdayWarnList INNER JOIN
BM_StaffRecordList ON BM_ClientBirthdayWarnList.StaffID_CongratulatePerson = BM_StaffRecordList.StaffID INNER JOIN
AttributeMinuteList ON BM_ClientBirthdayWarnList.AttributeMinuteID_CongratulateWay = AttributeMinuteList.AttributeMinuteID INNER JOIN
BM_StaffRecordList AS BM_StaffRecordList_1 ON BM_ClientBirthdayWarnList.StaffID_CreatePerson = BM_StaffRecordList_1.StaffID
WHERE BM_ClientBirthdayWarnList.CarOwnerNewsID=@CarOwnerNewsID AND
BM_ClientBirthdayWarnList.CongratulateDate=@CongratulateDate
END
第二步:逻辑层(BLL)代码
[OperationContract]
public DataSet dgvCongratulate_Select_ChaXunKeHuXinXi()
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
};
mySqlParameters[0].Value = "dgvCongratulate_Select_ChaXunKeHuXinXi";
DataTable dt = myDALMethod.QueryDataTable("顾客关系_FRM_KeHuShengRiZhuHe", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
[OperationContract]
public DataSet FRM_GuKeShengRiZhuHe_Load_Select_ChaXunKeHuShengRiZhuHe( DateTime dtmCongratulateDate,int intCarOwnerNewsID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@TYPE",SqlDbType.Char),
new SqlParameter ("@CongratulateDate",SqlDbType.DateTime),
new SqlParameter ("@CarOwnerNewsID",SqlDbType.Int),
};
mySqlParameters[0].Value = "FRM_GuKeShengRiZhuHe_Load_Select_ChaXunKeHuShengRiZhuHe";
mySqlParameters[1].Value = dtmCongratulateDate;
mySqlParameters[2].Value = intCarOwnerNewsID;
DataTable dt = myDALMethod.QueryDataTable("顾客关系_FRM_KeHuShengRiZhuHe", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
第三步:界面层(UIL)代码,写进界面Load事件
dtClientBirthdayWarn = myFRM_KeHuShengRiZhuHeClient.dgvCongratulate_Select_ChaXunKeHuXinXi().Tables[0];
dtClient = dtClientBirthdayWarn.Copy();//把查询得到的整个表复制到新创建的表
dtClient.Clear();//清除表里的数据
for (int i = 0; i < dtClientBirthdayWarn.Rows.Count; i++)//循环遍历dtClientBirthdayWarn
{
for (int Z = 0; Z < 100; Z++)
{
if (Convert.ToDateTime(dtClientBirthdayWarn.Rows[i]["Birthday"]).AddYears(Z).ToShortDateString() == DateTime.Now.ToShortDateString())
//如果顾客生日以年自增=现在日期
{
DataRow row = dtClient.NewRow();//创建空白行
row.ItemArray = dtClientBirthdayWarn.Rows[i].ItemArray;//把dtClientBirthdayWarn第i行放进空白行
dtClient.Rows.Add(row);//把行数据放进表中
//dgvClientBirthdayWarn.Rows.Add(dtClientBirthdayWarn.Rows[i]);
}
}
}
dgvCongratulate.DataSource = dtClient;
for (int i = 0; i < dgvCongratulate.Rows.Count; i++)
{
int CarOwnerNewsID = Convert.ToInt32(dgvCongratulate.Rows[i].Cells["车主信息ID"].Value );
DateTime Time=Convert.ToDateTime(DateTime.Now.ToShortDateString());
dtWarn = myFRM_KeHuShengRiZhuHeClient.FRM_GuKeShengRiZhuHe_Load_Select_ChaXunKeHuShengRiZhuHe(Time,CarOwnerNewsID).Tables[0];
if (dtWarn.Rows.Count < 1)
{
dgvCongratulate.Rows[i].DefaultCellStyle.BackColor = Color.Blue;
}
}
2、祝贺功能:
第一步:数据库存储过程
IF(@TYPE ='btnConfirm_Click_Insert_XinZengZhuHeXinXi')
BEGIN
INSERT BM_ClientBirthdayWarnList (CarOwnerNewsID, StaffID_CongratulatePerson,
AttributeMinuteID_CongratulateWay, CongratulateDate, StaffID_CreatePerson,
CreateDate,CongratulateContent)
VALUES (@CarOwnerNewsID,@StaffID_CongratulatePerson,
@AttributeMinuteID_CongratulateWay,@CongratulateDate,@StaffID_CreatePerson,
@CreateDate,@CongratulateContent)
END
第二步:逻辑层(BLL)代码
[OperationContract]
public int btnConfirm_Click_Insert_XinZengZhuHeXinXi(int intCarOwnerNewsID, int intStaffID_CongratulatePerson,
int intAttributeMinuteID_CongratulateWay, DateTime dtmCongratulateDate, int intStaffID_CreatePerson,
DateTime dtmCreateDate, string strCongratulateContent)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@CarOwnerNewsID",SqlDbType.Int),
new SqlParameter("@StaffID_CongratulatePerson",SqlDbType.Int),
new SqlParameter("@AttributeMinuteID_CongratulateWay",SqlDbType.Int),
new SqlParameter("@CongratulateDate",SqlDbType.DateTime),
new SqlParameter("@StaffID_CreatePerson",SqlDbType.Int),
new SqlParameter("@CreateDate",SqlDbType.DateTime),
new SqlParameter("@CongratulateContent",SqlDbType.Char),
};
mySqlParameters[0].Value = "btnConfirm_Click_Insert_XinZengZhuHeXinXi";
mySqlParameters[1].Value = intCarOwnerNewsID;
mySqlParameters[2].Value = intStaffID_CongratulatePerson;
mySqlParameters[3].Value = intAttributeMinuteID_CongratulateWay;
mySqlParameters[4].Value = dtmCongratulateDate;
mySqlParameters[5].Value = intStaffID_CreatePerson;
mySqlParameters[6].Value = dtmCreateDate;
mySqlParameters[7].Value = strCongratulateContent;
return myDALMethod.UpdateData("顾客关系_FRM_KeHuShengRiZhuHe_ZhuHe", mySqlParameters);
}
第三步:界面层(UIL)代码,写进Button单击事件
///
///
///
/// 触发者
/// 触发事件
private void btnConfirm_Click(object sender, EventArgs e)
{
int intCarOwnerNewsID = FRM_KeHuShengRiZhuHe.CarOwnerNewsID;
int intStaffID_CongratulatePerson = PublicStaticObject.YuanGongID;
int intAttributeMinuteID_CongratulateWay = Convert.ToInt32(cboCongratulateWay.SelectedValue);
DateTime dtmCongratulateDate = Convert.ToDateTime(dtpCongratulateDate.Text.Trim());
int intStaffID_CreatePerson = PublicStaticObject .YuanGongID;
DateTime dtmCreateDate = DateTime.Now;
string strCongratulateContent = txtCongratulateContent.Text.Trim();
int i = myFRM_KeHuShengRiZhuHe_ZhuHeClient.btnConfirm_Click_Insert_XinZengZhuHeXinXi(intCarOwnerNewsID,
intStaffID_CongratulatePerson, intAttributeMinuteID_CongratulateWay, dtmCongratulateDate,
intStaffID_CreatePerson, dtmCreateDate, strCongratulateContent);
BaoCunFou = true;
if (i > 0)
{
MessageBox.Show("祝贺成功!!!");
this.Close();
}
else { MessageBox.Show("祝贺失败!!!"); }
}