1.指定客户查询
从上边界面上可以看到我们这里用到的控件有
控件名称 |
说明 |
标注(Label) |
控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。 |
选项卡(TabControl) |
|
下拉框(ComboBox) |
|
文本(TextBox) |
|
按钮(Button) |
|
菜单(ToolStripMenuItem) |
|
工具栏(ToolStrip) |
|
组容器(GroupBox) |
|
表格(DataGridView) |
功能实现:
第一步:数据库
1、表与关系
表1: 房间资源表(dbo.SYS_RoomResource)
Primary Key(主键): RoomResourcesID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
RoomResourcesID |
int - Identity |
No |
房间资源ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
TheCodeModelID |
int |
Yes |
属性明细表,代码模式ID |
|
Number |
nchar (10) |
Yes |
编号 |
|
UnitNumberID |
int |
Yes |
单元表,单元ID |
|
FloorStotey |
nchar (10) |
Yes |
楼层 |
|
RoomCategoryID |
int |
Yes |
属性明细表,房间类别ID |
|
TowardID |
int |
Yes |
属性明细表,朝向ID |
|
DoorModelID |
int |
Yes |
属性明细表,户型ID |
|
RoomTypeID |
int |
Yes |
属性明细表,房间类型ID |
|
RoomLandScapeID |
int |
Yes |
属性明细表,房间景观ID |
|
RoomSpecialID |
int |
Yes |
属性明细表,房间特殊ID |
|
ConstructionArea |
decimal (18, 2) |
Yes |
建筑面积 |
|
PricateArea |
decimal (18, 2) |
Yes |
私有面积 |
|
PublicArea |
decimal (18, 2) |
Yes |
公摊面积 |
|
Usage |
decimal (18, 2) |
Yes |
使用率 |
|
TheUnitPrice |
decimal (18, 2) |
Yes |
标价单价 |
|
BidPrice |
decimal (18, 2) |
Yes |
标价总价 |
|
NumberOfPrice |
nchar (10) |
Yes |
价格次数 |
|
SalesStatusID |
int |
((102)) |
Yes |
属性明细表,销售状态ID |
BriefNote |
nchar (30) |
Yes |
简要备注 |
|
SchematicDiagram |
image |
Yes |
示意图 |
|
Chart |
image |
Yes |
效果图 |
表2: 楼栋信息表(dbo.SYS_FloorInformation)
Primary Key(主键): FloorID
非主键ID值均是外键
(这里因为在这个表里边没有设置有默认值,所以没有默认值的那一列)
列名 |
数据类型 |
Nulls? |
说明 |
FloorID |
int - Identity |
No |
楼栋ID |
ProjectID |
int |
Yes |
项目信息表,项目ID |
FloorStructureID |
int |
Yes |
属性明细表,楼栋结构ID |
OpenBatchID |
int |
Yes |
属性明细表,开盘批次ID |
LaunchSituationID |
int |
Yes |
属性明细表,推出情况ID |
OpeningSituationID |
int |
Yes |
属性明细表,开盘情况ID |
FloorLevelID |
int |
Yes |
楼栋级别ID |
SortNumber |
nchar (10) |
Yes |
序号 |
FloorName |
nchar (20) |
Yes |
楼栋名称 |
PropertyRightFloorName |
nchar (20) |
Yes |
产权楼栋名称 |
FloorStorey |
nchar (10) |
Yes |
楼栋层数 |
LaunchDate |
datetime |
Yes |
推出日期 |
DoMortgageDate |
datetime |
Yes |
具备办按揭日期 |
CapsDate |
datetime |
Yes |
封顶日期 |
AccumulationFundDate |
datetime |
Yes |
具备办公积金日期 |
ExpectedPayDate |
datetime |
Yes |
预计交房日期 |
PropertyRightDate |
datetime |
Yes |
具备办产权日期 |
MakingRoomDate |
datetime |
Yes |
交房日期 |
表3: 项目信息表(dbo.SYS_ProjectInformation)
Primary Key(主键): ProjectID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ProjectID |
int - Identity |
No |
项目ID |
|
SortNumber |
int |
Yes |
排序号 |
|
ProjectAreaID |
int |
Yes |
属性明细表,项目区域ID |
|
Project_FatherlID |
int |
Yes |
项目信息表,项目级别ID |
|
ProjectName |
nchar (20) |
Yes |
项目名称 |
|
PropertyRightProjectName |
nchar (20) |
Yes |
产权项目名称 |
|
ProjectCompanyName |
nchar (20) |
Yes |
项目公司名称 |
|
ProjectAddress |
nchar (50) |
Yes |
项目座落地址 |
|
CaseWhether |
bit |
Yes |
是否结案 |
|
CancelWhether |
bit |
((0)) |
Yes |
有效否 |
表4: 房源保留表(dbo.PW_RoomSelect_Keep)
Primary Key(主键): KeepID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
KeepID |
int - Identity |
No |
保留ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
RoomResourcesID |
int |
Yes |
房间资源ID,房间ID |
|
UnitPrice |
decimal (18, 2) |
Yes |
单价 |
|
Price |
decimal (18, 2) |
Yes |
售价 |
|
KeepPeople |
int |
Yes |
保留人 |
|
Note |
nchar (300) |
Yes |
说明 |
|
StartDate |
datetime |
Yes |
开始时间 |
|
KeepTime |
nchar (10) |
Yes |
保留时长 |
|
KeepDate |
nchar (10) |
Yes |
保留天数 |
|
OperatingPerson |
int |
Yes |
经办人员 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表5: 客户信息 (dbo.PW_ClientInformation)
Primary Key(主键): ClientID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ClientID |
int - Identity |
No |
客户ID |
|
ProjectID |
int |
Yes |
项目信息表,项目ID |
|
ClientNumber |
nchar (10) |
Yes |
客户编号 |
|
ClientName |
nchar (10) |
Yes |
客户名称 |
|
EarlyVisitIntention |
nchar (10) |
Yes |
初访意向 |
|
Gender |
nchar (10) |
Yes |
性别 |
|
MaritalStatus |
nchar (10) |
Yes |
婚否 |
|
ClientRegistrationWayID |
int |
Yes |
属性明细表,客户登记方式ID |
|
RelationPhone |
nchar (15) |
Yes |
联系电话 |
|
ElectronMail |
nchar (30) |
Yes |
电子邮箱 |
|
HomeBuyerConsultantID |
int |
Yes |
员工表,置业顾问ID |
|
DateOfVisit |
datetime |
Yes |
来访日期 |
|
CommunicationAddress |
nchar (50) |
Yes |
通讯地址 |
|
Postcode |
nchar (10) |
Yes |
邮编 |
|
IDentityCard |
nchar (30) |
Yes |
身份证号 |
|
BirthDay |
date |
Yes |
出生日期 |
|
Age |
nchar (20) |
Yes |
年龄 |
|
Professional |
nchar (20) |
Yes |
职业 |
|
NowLivingArea |
nchar (20) |
Yes |
现居住区域 |
|
LearnTheWayToTheCase |
nchar (20) |
Yes |
获取本案途径 |
|
VisitConstitute |
nchar (20) |
Yes |
来客构成 |
|
Traffic |
nchar (20) |
Yes |
交通 |
|
RealEstateSituation |
nchar (20) |
Yes |
置业状况 |
|
ResidentialMortgageLoans |
nchar (20) |
Yes |
住宅按揭贷款 |
|
HomesBuyersPurpose |
nchar (20) |
Yes |
置业目的 |
|
PlanTorealEstatePrice |
nchar (20) |
Yes |
计划置业价格 |
|
DemandArea |
nchar (20) |
Yes |
需求面积 |
|
PaymentWay |
nchar (20) |
Yes |
付款方式ID |
|
BuyingConsideration |
nchar (20) |
Yes |
买房考虑因素 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表6: 客户事件记录表 (dbo.PW_ClientEventRecord)
Primary Key(主键): EventRecordID
非主键ID值均是外键
列名 |
数据类型 |
Nulls? |
说明 |
EventRecordID |
int - Identity |
No |
事件记录ID |
ClientID |
int |
Yes |
客户信息表,客户ID |
RecordDate |
datetime |
Yes |
记录日期 |
Characteristic |
nchar (200) |
Yes |
特征 |
explain |
nchar (200) |
Yes |
说明 |
表7: 客户交往明细表 (dbo.PW_ClientContractDetails)
Primary Key(主键): ClientContractDetailsID
非主键ID值均是外键
列名 |
数据类型 |
Nulls? |
说明 |
ClientContractDetailsID |
int - Identity |
No |
客户交往明细ID |
ProjectID |
int |
Yes |
项目信息表,项目ID |
ClientID |
int |
Yes |
客户表,客户ID |
ContractTime |
datetime |
Yes |
交往时间 |
DegreeOfInterest |
char (10) |
Yes |
意向程度 |
InteractionsID |
int |
Yes |
属性明细表,交往方式ID |
VisitFormID |
int |
Yes |
属性明细表,来访形态ID |
HomeBuyerConsultantID |
int |
Yes |
员工表,置业顾问ID |
RecommendedHousingID |
int |
Yes |
房间资源表,推荐房源ID |
CommunicationContent |
nchar (30) |
Yes |
交往内容 |
表8: 预定表 (dbo.PW_ReserveUnit)
Primary Key(主键): ReserveUnitID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ReserveUnitID |
int - Identity |
No |
预订单元ID |
|
ClientID |
int |
Yes |
客户表,客户ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
UnitNumberID |
int |
Yes |
单元表,单元ID |
|
RoomNumeral |
nchar (10) |
Yes |
房间排号 |
|
PresalseArea |
nchar (10) |
Yes |
预售面积 |
|
ReservationPrice |
money |
Yes |
预收单价 |
|
BookingReservationPrice |
money |
Yes |
预定总价 |
|
AccountsReceivableBookingGoid |
money |
Yes |
应收预约金 |
|
BookingDate |
datetime |
Yes |
预定日期 |
|
ValidDate |
datetime |
Yes |
有效日期 |
|
BriefNote |
nchar (20) |
Yes |
简要备注 |
|
AuditDate |
date |
Yes |
审核日期 |
|
NewReserveUnitID |
int |
Yes |
预定表,新预定ID |
|
ChangeReason |
int |
Yes |
属性明细表,变更原因ID |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表9: 保留表 (dbo. PW_RoomSelect_Keep)
Primary Key(主键): KeepID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
KeepID |
int - Identity |
No |
保留ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
RoomResourcesID |
int |
Yes |
房间资源表,房间ID |
|
UnitPrice |
decimal (18, 2) |
Yes |
单价 |
|
Price |
decimal (18, 2) |
Yes |
售价 |
|
KeepPeople |
int |
Yes |
保留人 |
|
Note |
nchar (300) |
Yes |
说明 |
|
StartDate |
datetime |
Yes |
开始时间 |
|
KeepTime |
nchar (10) |
Yes |
保留时长 |
|
KeepDate |
nchar (10) |
Yes |
保留天数 |
|
OperatingPerson |
int |
Yes |
经办人员 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表10: 预留表 (dbo. PW_SeserveUnit)
Primary Key(主键): SeserveUnitID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
SeserveUnitID |
int - Identity |
No |
预留单元ID |
|
ClientID |
int |
Yes |
客户信息表,客户ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
UnitNumberID |
int |
Yes |
房间资源表,房间单元ID |
|
RoomNumeral |
nchar (10) |
Yes |
房间排号 |
|
PresalseArea |
decimal (18, 2) |
Yes |
预售面积 |
|
SeservationUnitPrice |
decimal (18, 2) |
Yes |
预留单价 |
|
BookingSeservationPrice |
decimal (18, 2) |
Yes |
预留总价 |
|
AccountsReceivableBookingGoid |
money |
Yes |
应收预约金 |
|
SeservatingDate |
datetime |
Yes |
预留日期 |
|
ValidDate |
datetime |
Yes |
有效日期 |
|
BriefNote |
nchar (100) |
Yes |
简要备注 |
|
AuditDate |
datetime |
Yes |
审核日期 |
|
NewSeserveUnitID |
int |
Yes |
预留表,新的预留ID |
|
ChangeReason |
int |
Yes |
变更原因 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表11: 认购表 (dbo. PW_SubscribeUnit)
Primary Key(主键): SubscribeUnitID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
SubscribeUnitID |
int - Identity |
No |
认购单元ID |
|
SalesChangeID |
int |
Yes |
销售便更表,销售变更ID |
|
SubscriptioNumber |
nchar (20) |
Yes |
认购单编号 |
|
SubscribeToDate |
datetime |
Yes |
认购日期 |
|
AnticipatedDateSigned |
datetime |
Yes |
预计签约日期 |
|
ContractArea |
nchar (10) |
Yes |
合同面积 |
|
TypeOfPanymentID |
int |
Yes |
付款方式表,付款方式ID |
|
PaymentDetailsOfNameID |
int |
Yes |
付款方式明细表,付款名称细目ID |
|
SalesAreaOfWayID |
int |
Yes |
属性明细表,销售面积方式ID |
|
FsvorableDiscount |
decimal (18, 2) |
Yes |
优惠折扣 |
|
ClinchADealUnitPrice |
money |
Yes |
成交单价 |
|
ClinchADealThePrice |
money |
Yes |
成交总价 |
|
ClientID |
int |
Yes |
客户信息表,客户ID |
|
AgentID |
int |
Yes |
员工表,经办人ID |
|
BriefNote |
nchar (20) |
Yes |
简要备注 |
|
ReviewWhether |
bit |
((0)) |
Yes |
审核否 |
CancelWhether |
bit |
((0)) |
Yes |
作废否 |
ChangeOfAuditStatusID |
int |
Yes |
属性明细表,变更审核状态ID |
|
RoomResourcesID |
int |
Yes |
房间资源表,房源ID |
|
AfterUpdateID |
int |
Yes |
认购表,修改后的认购ID |
表12: 认筹表 (dbo. PW_ClientConfessToRaise)
Primary Key(主键): ClientConfessToRaiseID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ClientConfessToRaiseID |
int - Identity |
No |
客户认筹ID |
|
ClientID |
int |
Yes |
客户信息表,客户ID |
|
RaiseNumeralRecognition |
nchar (10) |
Yes |
认筹排号 |
|
TheOrderNumber |
nchar (10) |
Yes |
订单号 |
|
ConfessToRaiseClassificationID |
int |
Yes |
属性明细表,筹卡分类ID |
|
AccountsReceivableAppointmentGold |
money |
Yes |
应收预约金 |
|
ConfesstoraiseDate |
datetime |
Yes |
认筹日期 |
|
EffectiveDate |
datetime |
Yes |
有效日期 |
|
IntentionUnitInstructions |
nchar (10) |
Yes |
意向单元说明 |
|
Note |
nchar (30) |
Yes |
备注 |
|
ToSeserve |
bit |
((0)) |
Yes |
转预留否 |
SeserveID |
int |
Yes |
预留表,预留ID |
|
AuditWhether |
bit |
((0)) |
Yes |
审核否 |
IncalidWhether |
bit |
((0)) |
Yes |
作废否 |
AfterUpdateID |
int |
Yes |
认筹表,修改后ID |
2、具体代码实现
第一步:数据库存储过程
if @Type='CustomerQuery_Load_BindingdgvProject'--查询项目信息用来绑定dgv
begin
SELECT ProjectID, rtrim(SortNumber) as SortNumber, rtrim(ProjectName) as ProjectName
FROM SYS_ProjectInformation
end
if @Type='btnSelect_Click_SelectAppointCustomer'--条件查询客户
begin
with CTE as (--with用的是临时表,CTE是临时表的名字
SELECT PW_ClientInformation.ClientName, PW_ClientInformation.ClientID, PW_ClientInformation.RelationPhone,
PW_ClientInformation.HomeBuyerConsultantID, SYS_Staff.StaffName
FROM PW_ClientInformation INNER JOIN
SYS_Staff ON PW_ClientInformation.HomeBuyerConsultantID = SYS_Staff.StaffID
where (PW_ClientInformation.ClientID in(SELECT ClientID
FROM PW_ClientConfessToRaise where PW_ClientConfessToRaise.IncalidWhether=0)
or PW_ClientInformation.ClientID in(SELECT ClientID
FROM PW_ReserveUnit where PW_ReserveUnit.IncalidOr=0 )
or PW_ClientInformation.ClientID in(SELECT ClientID
FROM PW_SeserveUnit where PW_SeserveUnit.IncalidOr=0 )
or PW_ClientInformation.ClientID in(SELECT KeepPeople
FROM PW_RoomSelect_Keep
where PW_RoomSelect_Keep.IncalidOr=0)) and PW_ClientInformation.IncalidOr=0 )
select rtrim(ClientName) ClientName, ClientID, rtrim(RelationPhone) RelationPhone,HomeBuyerConsultantID,RTRIM(StaffName) as HomeBuyerConsultantName
from CTE --在临时表里边查询相关的信息
where ClientName like '%' + rtrim(ltrim(@Condition)) + '%' or RelationPhone like '%' + rtrim(ltrim(@Condition)) + '%'--条件
end
if @Type='dgvProject_CellMouseDoubleClick_BindingcboFloor'--根据选定的项目,来绑定cbo楼栋
begin
SELECT FloorID, rtrim(FloorName) as FloorName
FROM SYS_FloorInformation
where SYS_FloorInformation.ProjectID=@ProjectID
end
if @Type='cboBuildingNumber_SelectionChangeCommitted_BindingcboRoomResource'
begin
SELECT RoomResourcesID, rtrim(Number) as Number
FROM SYS_RoomResources
where RoomResourcesID in (SELECT UnitNumberID
FROM PW_ReserveUnit where PW_ReserveUnit.IncalidOr=0) and SYS_RoomResources.FloorID=@FloorID
union --union是联合表的标志
SELECT RoomResourcesID, rtrim(Number) as Number
FROM SYS_RoomResources
where RoomResourcesID in (SELECT RoomResourcesID
FROM PW_RoomSelect_Keep where PW_RoomSelect_Keep.IncalidOr=0) and SYS_RoomResources.FloorID=@FloorID
union
SELECT RoomResourcesID, rtrim(Number) as Number
FROM SYS_RoomResources
where RoomResourcesID in (SELECT UnitNumberID
FROM PW_SeserveUnit where PW_SeserveUnit.IncalidOr=0) and SYS_RoomResources.FloorID=@FloorID
union
SELECT RoomResourcesID, rtrim(Number) as Number
FROM SYS_RoomResources
where RoomResourcesID in (SELECT RoomResourcesID
FROM PW_SubscribeUnit where PW_SubscribeUnit.CancelWhether=0) and SYS_RoomResources.FloorID=@FloorID
end
if @Type='cboRoomNumber_SelectionChangeCommitted_SelectCustomer'--根据选定的房源来查询所属房源相应的客户
begin
SELECT RTRIM(PW_ClientInformation.RelationPhone) AS RelationPhone, PW_ClientInformation.HomeBuyerConsultantID, RTRIM(SYS_Staff.StaffName) AS HomeBuyerConsultantName, PW_ClientInformation.ClientID,
RTRIM(PW_ClientInformation.ClientName) as ClientName
FROM PW_ClientInformation INNER JOIN
SYS_Staff ON PW_ClientInformation.HomeBuyerConsultantID = SYS_Staff.StaffID
where PW_ClientInformation.ClientID in (
SELECT ClientID FROM PW_ReserveUnit where PW_ReserveUnit.IncalidOr=0 and PW_ReserveUnit.ReserveUnitID=@RoomResourcesID)
or PW_ClientInformation.ClientID in(
SELECT KeepPeople FROM PW_RoomSelect_Keep where PW_RoomSelect_Keep.IncalidOr=0 and PW_RoomSelect_Keep.RoomResourcesID=@RoomResourcesID)
or PW_ClientInformation.ClientID in(
SELECT ClientID FROM PW_SeserveUnit where PW_SeserveUnit.IncalidOr=0 and PW_SeserveUnit.SeserveUnitID=@RoomResourcesID)
or PW_ClientInformation.ClientID in(
SELECT ClientID FROM PW_SubscribeUnit where PW_SubscribeUnit.CancelWhether=0 and PW_SubscribeUnit.SubscribeUnitID=@RoomResourcesID)
end
if @Type='Binding_dgvdgvClientRecord'--查询客户记录
begin
SELECT RTRIM(PW_ClientInformation.ClientNumber) AS ClientNumber, RTRIM(PW_ClientInformation.ClientName) AS ClientName, PW_ClientEventRecord.RecordDate AS RecordDate,
RTRIM(PW_ClientEventRecord.Characteristic) AS Characteristic, RTRIM(PW_ClientEventRecord.explain) AS explain, PW_ClientInformation.ClientID
FROM PW_ClientEventRecord INNER JOIN
PW_ClientInformation ON PW_ClientEventRecord.ClientID = PW_ClientInformation.ClientID
where PW_ClientEventRecord.ClientID=@ClientID
end
第二步:BLL(逻辑层)具体代码
[OperationContract]
#region 绑定dgv项目
public DataSet CustomerQuery_Load_BindingdgvProject()
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
};
SQLCMDpas[0].Value = "CustomerQuery_Load_BindingdgvProject";
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 模糊查询客户
public DataSet btnSelect_Click_SelectAppointCustomer(string strCondition)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@Condition", SqlDbType.Char),
};
SQLCMDpas[0].Value = "btnSelect_Click_SelectAppointCustomer";
SQLCMDpas[1].Value = strCondition;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 绑定cboFloor
public DataSet dgvProject_CellMouseDoubleClick_BindingcboFloor(int intProjectID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@ProjectID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "dgvProject_CellMouseDoubleClick_BindingcboFloor";
SQLCMDpas[1].Value = intProjectID;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 绑定cboRoomResource
public DataSet cboBuildingNumber_SelectionChangeCommitted_BindingcboRoomResource(int intFloorID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@FloorID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "cboBuildingNumber_SelectionChangeCommitted_BindingcboRoomResource";
SQLCMDpas[1].Value = intFloorID;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 绑定dgvClientRecord
public DataSet Binding_dgvdgvClientRecord(int intClientID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@ClientID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "Binding_dgvdgvClientRecord";
SQLCMDpas[1].Value = intClientID;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 根据房间查询客户
public DataSet cboRoomNumber_SelectionChangeCommitted_SelectCustomer(int intRoomResourcesID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@RoomResourcesID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "cboRoomNumber_SelectionChangeCommitted_SelectCustomer";
SQLCMDpas[1].Value = intRoomResourcesID;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
第三步:界面层(UIL)的代码
BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_CustomerQuery.frmMarketManagement_CustomerQueryClient myfrmMarketManagement_CustomerQueryClient = new BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_CustomerQuery.frmMarketManagement_CustomerQueryClient();//实例化BLL
DataTable dtNotBuyClient = new DataTable();
DataTable dtAllCustomer = new DataTable();
private void frmMarketManagement_CustomerQuery_Load(object sender, EventArgs e)
{
DataTable dtProject = myfrmMarketManagement_CustomerQueryClient.CustomerQuery_Load_BindingdgvProject().Tables[0];
dgvProject.DataSource = dtProject;
DataTable dtHomeBuyerConsultant = myfrmMarketManagement_CustomerQueryClient.Binding_cboHomeBuyerConsultant().Tables[0];
PublicMethod.SettingComboBox(cboHomeBuyerConsultant, dtHomeBuyerConsultant, "StaffID", "HomeBuyerConsultantName");//调用自己写的公用方法设置cbo数据源,具体调用之前的已经过,不详说
dtNotBuyClient = myfrmMarketManagement_CustomerQueryClient.Binding_dgvNotBuyClient().Tables[0];//绑定dgv
dgvNotBuyClient.DataSource = dtNotBuyClient;
dtAllCustomer = myfrmMarketManagement_CustomerQueryClient.Binding_dgvAllCustomer().Tables[0];
dgvAllCustomer.DataSource = dtAllCustomer;//绑定dgv
}
private void btnSelectProject_Click(object sender, EventArgs e)
{
dgvProject.Size =new Size(266, 125);//设定dgv的大小
dgvProject.Visible = true;//设置dgv的可见性
}
private void dgvProject_MouseLeave(object sender, EventArgs e)
{
dgvProject.Visible = false;
}
int intProjectID = 0;//声明全局变量
private void dgvProject_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)//dgv双击绑定客户
{
intProjectID = (int)dgvProject.CurrentRow.Cells["ProjectID"].Value;
txtProjectName.Text = dgvProject.CurrentRow.Cells["项目名称"].Value.ToString().Trim();//绑定项目文本框
dgvProject.Visible = false;
DataTable dtFloor = myfrmMarketManagement_CustomerQueryClient.dgvProject_CellMouseDoubleClick_BindingcboFloor(intProjectID).Tables[0];
PublicMethod.SettingComboBox(cboBuildingNumber, dtFloor, "FloorID", "FloorName");
int intFloorID = (int)cboBuildingNumber.SelectedValue;
DataTable dtRoomResource = myfrmMarketManagement_CustomerQueryClient.cboBuildingNumber_SelectionChangeCommitted_BindingcboRoomResource(intFloorID).Tables[0];
PublicMethod.SettingComboBox(cboRoomNumber, dtRoomResource, "RoomResourcesID", "Number");
}
private void cboBuildingNumber_SelectionChangeCommitted(object sender, EventArgs e)
{
int intFloorID = (int)cboBuildingNumber.SelectedValue;//获取cbo楼栋选定的值
DataTable dtRoomResource = myfrmMarketManagement_CustomerQueryClient.cboBuildingNumber_SelectionChangeCommitted_BindingcboRoomResource(intFloorID).Tables[0];
PublicMethod.SettingComboBox(cboRoomNumber, dtRoomResource, "RoomResourcesID", "Number");//根据cbo楼栋选定的值查出一张表,再绑定到cbo房间号
}
private void cboRoomNumber_SelectionChangeCommitted(object sender, EventArgs e)
{
txtCientNameAndPhone.Text = "";
int intRoomResourceID = (int)cboRoomNumber.SelectedValue;
DataTable dtCustomer = myfrmMarketManagement_CustomerQueryClient.cboRoomNumber_SelectionChangeCommitted_SelectCustomer(intRoomResourceID).Tables[0];//根据选定的房间来查询客户
if (dtCustomer.Rows.Count > 0)
{
int intCustomerID = (int)dtCustomer.Rows[0]["ClientID"];
txtUnitNumber.Text = cboRoomNumber.Text.ToString();
txtContactPhoneNumber.Text = dtCustomer.Rows[0]["RelationPhone"].ToString().Trim();
txtHomeBuyerConsultant.Text = dtCustomer.Rows[0]["HomeBuyerConsultantName"].ToString().Trim();
DataTable dtClientRecord = myfrmMarketManagement_CustomerQueryClient.Binding_dgvdgvClientRecord(intCustomerID).Tables[0];//根据选定的客户来绑定客户记录
dgvClientRecord.DataSource = dtClientRecord;
}
}
private void txtProjectName_TextChanged(object sender, EventArgs e)//当文本框的文本改变时候发生
{
string strProjectName=txtProjectName.Text.ToString().Trim();
if (strProjectName == "")
{
dgvProject.Visible = false;
return;
}
}
private void txtCientNameAndPhone_KeyPress(object sender, KeyPressEventArgs e)//当文本框“客户姓名或电话”按下且放开一个键时发生
{
if (e.KeyChar == (char)Keys.Enter)//当按下的那个键时Enter键时,执行帮dgv的客户绑定,并相应查询记录
{
intCustomerID = (int)dgvCustomer.CurrentRow.Cells["CustomerID"].Value;
txtCientNameAndPhone.Text = dgvCustomer.CurrentRow.Cells["CustomName"].Value.ToString().Trim();
txtContactPhoneNumber.Text = dgvCustomer.CurrentRow.Cells["CustomerPhoneNumber"].Value.ToString().Trim();
txtHomeBuyerConsultant.Text = dgvCustomer.CurrentRow.Cells["HomeBuyerConsultantName"].Value.ToString().Trim();
DataTable dtClientRecord = myfrmMarketManagement_CustomerQueryClient.Binding_dgvdgvClientRecord(intCustomerID).Tables[0];//查询客户记录
dgvClientRecord.DataSource = dtClientRecord;
dgvCustomer.Visible = false;
return;
}
}
private void dgvCustomer_MouseLeave(object sender, EventArgs e)//鼠标离开dgv的事件
{
dgvCustomer.Visible = false;//设置dgv可见性
}
private void txtCientNameAndPhone_Enter(object sender, EventArgs e)
{
string strCondition = txtCientNameAndPhone.Text.ToString().Trim();
DataTable dtCustomer = myfrmMarketManagement_CustomerQueryClient.btnSelect_Click_SelectAppointCustomer(strCondition).Tables[0];
dgvCustomer.DataSource = dtCustomer;
dgvCustomer.Size = new Size(266, 125);//甚至dgv的大小
dgvCustomer.Visible = true;//设置dgv 的可见性
}
int intCustomerID = 0;
private void dgvCustomer_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)//dgv双击绑定客户
{
intCustomerID = (int)dgvCustomer.CurrentRow.Cells["CustomerID"].Value;
txtCientNameAndPhone.Text = dgvCustomer.CurrentRow.Cells["CustomName"].Value.ToString().Trim();
txtContactPhoneNumber.Text = dgvCustomer.CurrentRow.Cells["CustomerPhoneNumber"].Value.ToString().Trim();
txtHomeBuyerConsultant.Text = dgvCustomer.CurrentRow.Cells["HomeBuyerConsultantName"].Value.ToString().Trim();
DataTable dtClientRecord = myfrmMarketManagement_CustomerQueryClient.Binding_dgvdgvClientRecord(intCustomerID).Tables[0];
dgvClientRecord.DataSource = dtClientRecord;//绑定客户重要事件记录
dgvCustomer.Visible = false;
}
int intCurrentIndex = 0;
private void txtCientNameAndPhone_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 38) //当按下上键时
{
if (intCurrentIndex > 0)
intCurrentIndex--;
}
if (e.KeyValue == 40) //当按下下键时
{
if (intCurrentIndex < dgvCustomer.Rows.Count - 1)
intCurrentIndex++;
}
string strCondition = txtCientNameAndPhone.Text.ToString().Trim();
dgvCustomer.CurrentCell = dgvCustomer.Rows[intCurrentIndex].Cells[0];
}
private void txtCientNameAndPhone_TextChanged(object sender, EventArgs e)
{
string strCondition = txtCientNameAndPhone.Text.ToString().Trim();
DataTable dtCustomer = myfrmMarketManagement_CustomerQueryClient.btnSelect_Click_SelectAppointCustomer(strCondition).Tables[0];
dgvCustomer.DataSource = dtCustomer;//绑定dgv客户
}
2.未购客户批量查询
从界面上可以看到我们这里用到的控件有
控件名称 |
说明 |
标注(Label) |
控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。 |
选项卡(TabControl) |
|
复选框(CheckBox) |
|
单选按钮(RadioButton) |
|
文本(TextBox) |
|
按钮(Button) |
|
菜单(ToolStripMenuItem) |
|
工具栏(ToolStrip) |
|
组容器(GroupBox) |
|
表格(DataGridView) |
功能实现:
第一步:数据库
1、表与关系
表1: 房间资源表(dbo.SYS_RoomResource)
Primary Key(主键): RoomResourcesID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
RoomResourcesID |
int - Identity |
No |
房间资源ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
TheCodeModelID |
int |
Yes |
属性明细表,代码模式ID |
|
Number |
nchar (10) |
Yes |
编号 |
|
UnitNumberID |
int |
Yes |
单元表,单元ID |
|
FloorStotey |
nchar (10) |
Yes |
楼层 |
|
RoomCategoryID |
int |
Yes |
属性明细表,房间类别ID |
|
TowardID |
int |
Yes |
属性明细表,朝向ID |
|
DoorModelID |
int |
Yes |
属性明细表,户型ID |
|
RoomTypeID |
int |
Yes |
属性明细表,房间类型ID |
|
RoomLandScapeID |
int |
Yes |
属性明细表,房间景观ID |
|
RoomSpecialID |
int |
Yes |
属性明细表,房间特殊ID |
|
ConstructionArea |
decimal (18, 2) |
Yes |
建筑面积 |
|
PricateArea |
decimal (18, 2) |
Yes |
私有面积 |
|
PublicArea |
decimal (18, 2) |
Yes |
公摊面积 |
|
Usage |
decimal (18, 2) |
Yes |
使用率 |
|
TheUnitPrice |
decimal (18, 2) |
Yes |
标价单价 |
|
BidPrice |
decimal (18, 2) |
Yes |
标价总价 |
|
NumberOfPrice |
nchar (10) |
Yes |
价格次数 |
|
SalesStatusID |
int |
((102)) |
Yes |
属性明细表,销售状态ID |
BriefNote |
nchar (30) |
Yes |
简要备注 |
|
SchematicDiagram |
image |
Yes |
示意图 |
|
Chart |
image |
Yes |
效果图 |
表2: 楼栋信息表(dbo.SYS_FloorInformation)
Primary Key(主键): FloorID
非主键ID值均是外键
(这里因为在这个表里边没有设置有默认值,所以没有默认值的那一列)
列名 |
数据类型 |
Nulls? |
说明 |
FloorID |
int - Identity |
No |
楼栋ID |
ProjectID |
int |
Yes |
项目信息表,项目ID |
FloorStructureID |
int |
Yes |
属性明细表,楼栋结构ID |
OpenBatchID |
int |
Yes |
属性明细表,开盘批次ID |
LaunchSituationID |
int |
Yes |
属性明细表,推出情况ID |
OpeningSituationID |
int |
Yes |
属性明细表,开盘情况ID |
FloorLevelID |
int |
Yes |
楼栋级别ID |
SortNumber |
nchar (10) |
Yes |
序号 |
FloorName |
nchar (20) |
Yes |
楼栋名称 |
PropertyRightFloorName |
nchar (20) |
Yes |
产权楼栋名称 |
FloorStorey |
nchar (10) |
Yes |
楼栋层数 |
LaunchDate |
datetime |
Yes |
推出日期 |
DoMortgageDate |
datetime |
Yes |
具备办按揭日期 |
CapsDate |
datetime |
Yes |
封顶日期 |
AccumulationFundDate |
datetime |
Yes |
具备办公积金日期 |
ExpectedPayDate |
datetime |
Yes |
预计交房日期 |
PropertyRightDate |
datetime |
Yes |
具备办产权日期 |
MakingRoomDate |
datetime |
Yes |
交房日期 |
表3: 项目信息表(dbo.SYS_ProjectInformation)
Primary Key(主键): ProjectID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ProjectID |
int - Identity |
No |
项目ID |
|
SortNumber |
int |
Yes |
排序号 |
|
ProjectAreaID |
int |
Yes |
属性明细表,项目区域ID |
|
Project_FatherlID |
int |
Yes |
项目信息表,项目级别ID |
|
ProjectName |
nchar (20) |
Yes |
项目名称 |
|
PropertyRightProjectName |
nchar (20) |
Yes |
产权项目名称 |
|
ProjectCompanyName |
nchar (20) |
Yes |
项目公司名称 |
|
ProjectAddress |
nchar (50) |
Yes |
项目座落地址 |
|
CaseWhether |
bit |
Yes |
是否结案 |
|
CancelWhether |
bit |
((0)) |
Yes |
有效否 |
表4: 房源保留表(dbo.PW_RoomSelect_Keep)
Primary Key(主键): KeepID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
KeepID |
int - Identity |
No |
保留ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
RoomResourcesID |
int |
Yes |
房间资源ID,房间ID |
|
UnitPrice |
decimal (18, 2) |
Yes |
单价 |
|
Price |
decimal (18, 2) |
Yes |
售价 |
|
KeepPeople |
int |
Yes |
保留人 |
|
Note |
nchar (300) |
Yes |
说明 |
|
StartDate |
datetime |
Yes |
开始时间 |
|
KeepTime |
nchar (10) |
Yes |
保留时长 |
|
KeepDate |
nchar (10) |
Yes |
保留天数 |
|
OperatingPerson |
int |
Yes |
经办人员 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表5: 客户信息 (dbo.PW_ClientInformation)
Primary Key(主键): ClientID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ClientID |
int - Identity |
No |
客户ID |
|
ProjectID |
int |
Yes |
项目信息表,项目ID |
|
ClientNumber |
nchar (10) |
Yes |
客户编号 |
|
ClientName |
nchar (10) |
Yes |
客户名称 |
|
EarlyVisitIntention |
nchar (10) |
Yes |
初访意向 |
|
Gender |
nchar (10) |
Yes |
性别 |
|
MaritalStatus |
nchar (10) |
Yes |
婚否 |
|
ClientRegistrationWayID |
int |
Yes |
属性明细表,客户登记方式ID |
|
RelationPhone |
nchar (15) |
Yes |
联系电话 |
|
ElectronMail |
nchar (30) |
Yes |
电子邮箱 |
|
HomeBuyerConsultantID |
int |
Yes |
员工表,置业顾问ID |
|
DateOfVisit |
datetime |
Yes |
来访日期 |
|
CommunicationAddress |
nchar (50) |
Yes |
通讯地址 |
|
Postcode |
nchar (10) |
Yes |
邮编 |
|
IDentityCard |
nchar (30) |
Yes |
身份证号 |
|
BirthDay |
date |
Yes |
出生日期 |
|
Age |
nchar (20) |
Yes |
年龄 |
|
Professional |
nchar (20) |
Yes |
职业 |
|
NowLivingArea |
nchar (20) |
Yes |
现居住区域 |
|
LearnTheWayToTheCase |
nchar (20) |
Yes |
获取本案途径 |
|
VisitConstitute |
nchar (20) |
Yes |
来客构成 |
|
Traffic |
nchar (20) |
Yes |
交通 |
|
RealEstateSituation |
nchar (20) |
Yes |
置业状况 |
|
ResidentialMortgageLoans |
nchar (20) |
Yes |
住宅按揭贷款 |
|
HomesBuyersPurpose |
nchar (20) |
Yes |
置业目的 |
|
PlanTorealEstatePrice |
nchar (20) |
Yes |
计划置业价格 |
|
DemandArea |
nchar (20) |
Yes |
需求面积 |
|
PaymentWay |
nchar (20) |
Yes |
付款方式ID |
|
BuyingConsideration |
nchar (20) |
Yes |
买房考虑因素 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表6: 预定表 (dbo.PW_ReserveUnit)
Primary Key(主键): ReserveUnitID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ReserveUnitID |
int - Identity |
No |
预订单元ID |
|
ClientID |
int |
Yes |
客户表,客户ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
UnitNumberID |
int |
Yes |
单元表,单元ID |
|
RoomNumeral |
nchar (10) |
Yes |
房间排号 |
|
PresalseArea |
nchar (10) |
Yes |
预售面积 |
|
ReservationPrice |
money |
Yes |
预收单价 |
|
BookingReservationPrice |
money |
Yes |
预定总价 |
|
AccountsReceivableBookingGoid |
money |
Yes |
应收预约金 |
|
BookingDate |
datetime |
Yes |
预定日期 |
|
ValidDate |
datetime |
Yes |
有效日期 |
|
BriefNote |
nchar (20) |
Yes |
简要备注 |
|
AuditDate |
date |
Yes |
审核日期 |
|
NewReserveUnitID |
int |
Yes |
预定表,新预定ID |
|
ChangeReason |
int |
Yes |
属性明细表,变更原因ID |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表7: 预留表 (dbo. PW_SeserveUnit)
Primary Key(主键): SeserveUnitID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
SeserveUnitID |
int - Identity |
No |
预留单元ID |
|
ClientID |
int |
Yes |
客户信息表,客户ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
UnitNumberID |
int |
Yes |
房间资源表,房间单元ID |
|
RoomNumeral |
nchar (10) |
Yes |
房间排号 |
|
PresalseArea |
decimal (18, 2) |
Yes |
预售面积 |
|
SeservationUnitPrice |
decimal (18, 2) |
Yes |
预留单价 |
|
BookingSeservationPrice |
decimal (18, 2) |
Yes |
预留总价 |
|
AccountsReceivableBookingGoid |
money |
Yes |
应收预约金 |
|
SeservatingDate |
datetime |
Yes |
预留日期 |
|
ValidDate |
datetime |
Yes |
有效日期 |
|
BriefNote |
nchar (100) |
Yes |
简要备注 |
|
AuditDate |
datetime |
Yes |
审核日期 |
|
NewSeserveUnitID |
int |
Yes |
预留表,新的预留ID |
|
ChangeReason |
int |
Yes |
变更原因 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表8: 认购表 (dbo. PW_SubscribeUnit)
Primary Key(主键): SubscribeUnitID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
SubscribeUnitID |
int - Identity |
No |
认购单元ID |
|
SalesChangeID |
int |
Yes |
销售便更表,销售变更ID |
|
SubscriptioNumber |
nchar (20) |
Yes |
认购单编号 |
|
SubscribeToDate |
datetime |
Yes |
认购日期 |
|
AnticipatedDateSigned |
datetime |
Yes |
预计签约日期 |
|
ContractArea |
nchar (10) |
Yes |
合同面积 |
|
TypeOfPanymentID |
int |
Yes |
付款方式表,付款方式ID |
|
PaymentDetailsOfNameID |
int |
Yes |
付款方式明细表,付款名称细目ID |
|
SalesAreaOfWayID |
int |
Yes |
属性明细表,销售面积方式ID |
|
FsvorableDiscount |
decimal (18, 2) |
Yes |
优惠折扣 |
|
ClinchADealUnitPrice |
money |
Yes |
成交单价 |
|
ClinchADealThePrice |
money |
Yes |
成交总价 |
|
ClientID |
int |
Yes |
客户信息表,客户ID |
|
AgentID |
int |
Yes |
员工表,经办人ID |
|
BriefNote |
nchar (20) |
Yes |
简要备注 |
|
ReviewWhether |
bit |
((0)) |
Yes |
审核否 |
CancelWhether |
bit |
((0)) |
Yes |
作废否 |
ChangeOfAuditStatusID |
int |
Yes |
属性明细表,变更审核状态ID |
|
RoomResourcesID |
int |
Yes |
房间资源表,房源ID |
|
AfterUpdateID |
int |
Yes |
认购表,修改后的认购ID |
表9: 认筹表 (dbo. PW_ClientConfessToRaise)
Primary Key(主键): ClientConfessToRaiseID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ClientConfessToRaiseID |
int - Identity |
No |
客户认筹ID |
|
ClientID |
int |
Yes |
客户信息表,客户ID |
|
RaiseNumeralRecognition |
nchar (10) |
Yes |
认筹排号 |
|
TheOrderNumber |
nchar (10) |
Yes |
订单号 |
|
ConfessToRaiseClassificationID |
int |
Yes |
属性明细表,筹卡分类ID |
|
AccountsReceivableAppointmentGold |
money |
Yes |
应收预约金 |
|
ConfesstoraiseDate |
datetime |
Yes |
认筹日期 |
|
EffectiveDate |
datetime |
Yes |
有效日期 |
|
IntentionUnitInstructions |
nchar (10) |
Yes |
意向单元说明 |
|
Note |
nchar (30) |
Yes |
备注 |
|
ToSeserve |
bit |
((0)) |
Yes |
转预留否 |
SeserveID |
int |
Yes |
预留表,预留ID |
|
AuditWhether |
bit |
((0)) |
Yes |
审核否 |
IncalidWhether |
bit |
((0)) |
Yes |
作废否 |
AfterUpdateID |
int |
Yes |
认筹表,修改后ID |
表10: 员工表 (dbo. SYS_Staff)
Primary Key(主键): StaffID
非主键ID值均是外键
列名 |
数据类型 |
Nulls? |
说明 |
StaffID |
int - Identity |
No |
员工ID |
StaffNumber |
nchar (10) |
Yes |
员工编号 |
StaffName |
nchar (10) |
Yes |
员工姓名 |
DepartMentID |
int |
Yes |
所属部门 |
GenderID |
int |
Yes |
属性明细表,性别ID |
Age |
int |
Yes |
年龄 |
EducationBackgroundID |
int |
Yes |
属性明细表,学历ID |
MarryWhether |
bit |
Yes |
婚否 |
Position |
nchar (10) |
Yes |
职位 |
ContactPhoneNumber |
nchar (15) |
Yes |
联系电话 |
ContactAddress |
nchar (20) |
Yes |
联系地址 |
Notes |
nchar (100) |
Yes |
备注 |
StaffImage |
image |
Yes |
员工照片 |
2、具体代码实现
第一步:数据库存储过程
if @Type='Binding_dgvNotBuyClient'--查询未购客户
begin
with CTE as (
SELECT rtrim(PW_ClientInformation.ClientName) as ClientName, PW_ClientInformation.ClientID, rtrim(PW_ClientInformation.RelationPhone) as RelationPhone, PW_ClientInformation.HomeBuyerConsultantID,
rtrim(SYS_Staff.StaffName) AS HomeBuyerConsultantName, rtrim(PW_ClientInformation.EarlyVisitIntention) as EarlyVisitIntention, rtrim(PW_ClientInformation.Gender) as Gender, rtrim(PW_ClientInformation.MaritalStatus) as MaritalStatus,
PW_ClientInformation.ClientRegistrationWayID, rtrim(SYS_AttributeDetails.AuttributeDetailsName) AS ClientRegistrationWay, rtrim(PW_ClientInformation.ElectronMail) as ElectronMail, PW_ClientInformation.DateOfVisit,
rtrim(PW_ClientInformation.CommunicationAddress) as CommunicationAddress, rtrim(PW_ClientInformation.Postcode) as Postcode, rtrim(PW_ClientInformation.IDentityCard) as IDentityCard, PW_ClientInformation.BirthDay, rtrim(PW_ClientInformation.Age) as Age,
rtrim(PW_ClientInformation.Professional) as Professional, rtrim(PW_ClientInformation.NowLivingArea) as NowLivingArea, rtrim(PW_ClientInformation.LearnTheWayToTheCase) as LearnTheWayToTheCase, rtrim(PW_ClientInformation.VisitConstitute) as VisitConstitute, rtrim(PW_ClientInformation.Traffic) as Traffic,
rtrim(PW_ClientInformation.RealEstateSituation) as RealEstateSituation, rtrim(PW_ClientInformation.ResidentialMortgageLoans) as ResidentialMortgageLoans, rtrim(PW_ClientInformation.HomesBuyersPurpose) as HomesBuyersPurpose, rtrim(PW_ClientInformation.PlanTorealEstatePrice) as PlanTorealEstatePrice,
rtrim(PW_ClientInformation.DemandArea) as DemandArea, rtrim(PW_ClientInformation.PaymentWay) as PaymentWay, rtrim(PW_ClientInformation.BuyingConsideration) as BuyingConsideration
FROM PW_ClientInformation INNER JOIN
SYS_Staff ON PW_ClientInformation.HomeBuyerConsultantID = SYS_Staff.StaffID INNER JOIN
SYS_AttributeDetails ON PW_ClientInformation.ClientRegistrationWayID = SYS_AttributeDetails.AttributeDetailsID
where (PW_ClientInformation.ClientID not in(SELECT ClientID
FROM PW_ClientConfessToRaise where PW_ClientConfessToRaise.IncalidWhether=0)
and PW_ClientInformation.ClientID not in(SELECT ClientID
FROM PW_ReserveUnit where PW_ReserveUnit.IncalidOr=0 )
and PW_ClientInformation.ClientID not in(SELECT ClientID
FROM PW_SeserveUnit where PW_SeserveUnit.IncalidOr=0 )
and PW_ClientInformation.ClientID not in(SELECT KeepPeople
FROM PW_RoomSelect_Keep
where PW_RoomSelect_Keep.IncalidOr=0))and PW_ClientInformation.IncalidOr=0 )
SELECT CTE.*
FROM CTE
end
if @Type='Binding_cboHomeBuyerConsultant'--绑定置业顾问
begin
SELECT StaffID, rtrim(StaffName) as HomeBuyerConsultantName
FROM SYS_Staff
end
第二步:逻辑层(BLL)具体代码解释
[OperationContract]
#region 绑定未购客户
public DataSet Binding_dgvNotBuyClient()
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
};
SQLCMDpas[0].Value = "Binding_dgvNotBuyClient";
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 绑定cbo置业顾问
public DataSet Binding_cboHomeBuyerConsultant()
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
};
SQLCMDpas[0].Value = "Binding_cboHomeBuyerConsultant";
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
第三步:界面层(UIL)具体事件代码
string strCondition = " 1=1 ";
string strConditionHomeBuyerConsultant = "";
private void cboHomeBuyerConsultant_SelectionChangeCommitted(object sender, EventArgs e)
{
int intHomeBuyerConsultantID = (int)cboHomeBuyerConsultant.SelectedValue;
strConditionHomeBuyerConsultant = " and HomeBuyerConsultantID=" + intHomeBuyerConsultantID;
MultiConditionSelect(strCondition + strConditionHomeBuyerConsultant + strConditionGender);
}
string strConditionGender = "";
private void pub_Gender_Click(object sender, EventArgs e)
{
RadioButton radPub = sender as RadioButton;
if (radAllGender.Checked)//根据复选框是否选定来字符串拼接
{
strConditionGender = "";
MultiConditionSelect(strCondition + strConditionHomeBuyerConsultant + strConditionGender);
}
if (radFemale.Checked)
{
strConditionGender = " and Gender ='女'";//拼接条件
MultiConditionSelect(strCondition + strConditionHomeBuyerConsultant + strConditionGender);
}
if (radMale.Checked)
{
strConditionGender = " and Gender ='男'";
MultiConditionSelect(strCondition + strConditionHomeBuyerConsultant + strConditionGender);
}
}
/// <summary>
/// 不定条件查询
/// </summary>
/// <param name="strConditionOfSelect">条件</param>
void MultiConditionSelect(string strConditionOfSelect)
{
DataView dv = new DataView(dtNotBuyClient);
dv.RowFilter = strConditionOfSelect;
DataTable dt = dv.ToTable();
dgvNotBuyClient.DataSource = dt;
}
private void Pub_rad_ES_Click(object sender, EventArgs e)//公用的单选框点击事件
{
txtCustomerNameOrTelephone.Text = "";
string strCondition = "";
if (radAll_ES.Checked)
{
strCondition = "";
}
if (radMale_ES.Checked)
{
strCondition = " Gender ='男'";
}
if (radFemale_ES.Checked)
{
strCondition = " Gender ='女'";
}
DataView dv = new DataView(dtAllCustomer);
dv.RowFilter = strCondition;//过滤数据
DataTable dt = dv.ToTable();
dgvAllCustomer.DataSource = dt;
}
3.客户交往批量查询
从界面上可以看到我们这里用到的控件有
控件名称 |
说明 |
标注(Label) |
控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。 |
选项卡(TabControl) |
|
下拉框(ComboBox) |
|
文本(TextBox) |
|
按钮(Button) |
|
菜单(ToolStripMenuItem) |
|
工具栏(ToolStrip) |
|
单选按钮(RadioButton) |
|
组容器(GroupBox) |
|
表格(DataGridView) |
功能实现:
第一步:数据库
1、表与关系
表1: 房间资源表(dbo.SYS_RoomResource)
Primary Key(主键): RoomResourcesID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
RoomResourcesID |
int - Identity |
No |
房间资源ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
TheCodeModelID |
int |
Yes |
属性明细表,代码模式ID |
|
Number |
nchar (10) |
Yes |
编号 |
|
UnitNumberID |
int |
Yes |
单元表,单元ID |
|
FloorStotey |
nchar (10) |
Yes |
楼层 |
|
RoomCategoryID |
int |
Yes |
属性明细表,房间类别ID |
|
TowardID |
int |
Yes |
属性明细表,朝向ID |
|
DoorModelID |
int |
Yes |
属性明细表,户型ID |
|
RoomTypeID |
int |
Yes |
属性明细表,房间类型ID |
|
RoomLandScapeID |
int |
Yes |
属性明细表,房间景观ID |
|
RoomSpecialID |
int |
Yes |
属性明细表,房间特殊ID |
|
ConstructionArea |
decimal (18, 2) |
Yes |
建筑面积 |
|
PricateArea |
decimal (18, 2) |
Yes |
私有面积 |
|
PublicArea |
decimal (18, 2) |
Yes |
公摊面积 |
|
Usage |
decimal (18, 2) |
Yes |
使用率 |
|
TheUnitPrice |
decimal (18, 2) |
Yes |
标价单价 |
|
BidPrice |
decimal (18, 2) |
Yes |
标价总价 |
|
NumberOfPrice |
nchar (10) |
Yes |
价格次数 |
|
SalesStatusID |
int |
((102)) |
Yes |
属性明细表,销售状态ID |
BriefNote |
nchar (30) |
Yes |
简要备注 |
|
SchematicDiagram |
image |
Yes |
示意图 |
|
Chart |
image |
Yes |
效果图 |
表2: 楼栋信息表(dbo.SYS_FloorInformation)
Primary Key(主键): FloorID
非主键ID值均是外键
(这里因为在这个表里边没有设置有默认值,所以没有默认值的那一列)
列名 |
数据类型 |
Nulls? |
说明 |
FloorID |
int - Identity |
No |
楼栋ID |
ProjectID |
int |
Yes |
项目信息表,项目ID |
FloorStructureID |
int |
Yes |
属性明细表,楼栋结构ID |
OpenBatchID |
int |
Yes |
属性明细表,开盘批次ID |
LaunchSituationID |
int |
Yes |
属性明细表,推出情况ID |
OpeningSituationID |
int |
Yes |
属性明细表,开盘情况ID |
FloorLevelID |
int |
Yes |
楼栋级别ID |
SortNumber |
nchar (10) |
Yes |
序号 |
FloorName |
nchar (20) |
Yes |
楼栋名称 |
PropertyRightFloorName |
nchar (20) |
Yes |
产权楼栋名称 |
FloorStorey |
nchar (10) |
Yes |
楼栋层数 |
LaunchDate |
datetime |
Yes |
推出日期 |
DoMortgageDate |
datetime |
Yes |
具备办按揭日期 |
CapsDate |
datetime |
Yes |
封顶日期 |
AccumulationFundDate |
datetime |
Yes |
具备办公积金日期 |
ExpectedPayDate |
datetime |
Yes |
预计交房日期 |
PropertyRightDate |
datetime |
Yes |
具备办产权日期 |
MakingRoomDate |
datetime |
Yes |
交房日期 |
表3: 项目信息表(dbo.SYS_ProjectInformation)
Primary Key(主键): ProjectID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ProjectID |
int - Identity |
No |
项目ID |
|
SortNumber |
int |
Yes |
排序号 |
|
ProjectAreaID |
int |
Yes |
属性明细表,项目区域ID |
|
Project_FatherlID |
int |
Yes |
项目信息表,项目级别ID |
|
ProjectName |
nchar (20) |
Yes |
项目名称 |
|
PropertyRightProjectName |
nchar (20) |
Yes |
产权项目名称 |
|
ProjectCompanyName |
nchar (20) |
Yes |
项目公司名称 |
|
ProjectAddress |
nchar (50) |
Yes |
项目座落地址 |
|
CaseWhether |
bit |
Yes |
是否结案 |
|
CancelWhether |
bit |
((0)) |
Yes |
有效否 |
表4: 房源保留表(dbo.PW_RoomSelect_Keep)
Primary Key(主键): KeepID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
KeepID |
int - Identity |
No |
保留ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
RoomResourcesID |
int |
Yes |
房间资源ID,房间ID |
|
UnitPrice |
decimal (18, 2) |
Yes |
单价 |
|
Price |
decimal (18, 2) |
Yes |
售价 |
|
KeepPeople |
int |
Yes |
保留人 |
|
Note |
nchar (300) |
Yes |
说明 |
|
StartDate |
datetime |
Yes |
开始时间 |
|
KeepTime |
nchar (10) |
Yes |
保留时长 |
|
KeepDate |
nchar (10) |
Yes |
保留天数 |
|
OperatingPerson |
int |
Yes |
经办人员 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表5: 客户信息 (dbo.PW_ClientInformation)
Primary Key(主键): ClientID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ClientID |
int - Identity |
No |
客户ID |
|
ProjectID |
int |
Yes |
项目信息表,项目ID |
|
ClientNumber |
nchar (10) |
Yes |
客户编号 |
|
ClientName |
nchar (10) |
Yes |
客户名称 |
|
EarlyVisitIntention |
nchar (10) |
Yes |
初访意向 |
|
Gender |
nchar (10) |
Yes |
性别 |
|
MaritalStatus |
nchar (10) |
Yes |
婚否 |
|
ClientRegistrationWayID |
int |
Yes |
属性明细表,客户登记方式ID |
|
RelationPhone |
nchar (15) |
Yes |
联系电话 |
|
ElectronMail |
nchar (30) |
Yes |
电子邮箱 |
|
HomeBuyerConsultantID |
int |
Yes |
员工表,置业顾问ID |
|
DateOfVisit |
datetime |
Yes |
来访日期 |
|
CommunicationAddress |
nchar (50) |
Yes |
通讯地址 |
|
Postcode |
nchar (10) |
Yes |
邮编 |
|
IDentityCard |
nchar (30) |
Yes |
身份证号 |
|
BirthDay |
date |
Yes |
出生日期 |
|
Age |
nchar (20) |
Yes |
年龄 |
|
Professional |
nchar (20) |
Yes |
职业 |
|
NowLivingArea |
nchar (20) |
Yes |
现居住区域 |
|
LearnTheWayToTheCase |
nchar (20) |
Yes |
获取本案途径 |
|
VisitConstitute |
nchar (20) |
Yes |
来客构成 |
|
Traffic |
nchar (20) |
Yes |
交通 |
|
RealEstateSituation |
nchar (20) |
Yes |
置业状况 |
|
ResidentialMortgageLoans |
nchar (20) |
Yes |
住宅按揭贷款 |
|
HomesBuyersPurpose |
nchar (20) |
Yes |
置业目的 |
|
PlanTorealEstatePrice |
nchar (20) |
Yes |
计划置业价格 |
|
DemandArea |
nchar (20) |
Yes |
需求面积 |
|
PaymentWay |
nchar (20) |
Yes |
付款方式ID |
|
BuyingConsideration |
nchar (20) |
Yes |
买房考虑因素 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表6: 客户事件记录表 (dbo.PW_ClientEventRecord)
Primary Key(主键): EventRecordID
非主键ID值均是外键
列名 |
数据类型 |
Nulls? |
说明 |
EventRecordID |
int - Identity |
No |
事件记录ID |
ClientID |
int |
Yes |
客户信息表,客户ID |
RecordDate |
datetime |
Yes |
记录日期 |
Characteristic |
nchar (200) |
Yes |
特征 |
explain |
nchar (200) |
Yes |
说明 |
表7: 客户交往明细表 (dbo.PW_ClientContractDetails)
Primary Key(主键): ClientContractDetailsID
非主键ID值均是外键
列名 |
数据类型 |
Nulls? |
说明 |
ClientContractDetailsID |
int - Identity |
No |
客户交往明细ID |
ProjectID |
int |
Yes |
项目信息表,项目ID |
ClientID |
int |
Yes |
客户表,客户ID |
ContractTime |
datetime |
Yes |
交往时间 |
DegreeOfInterest |
char (10) |
Yes |
意向程度 |
InteractionsID |
int |
Yes |
属性明细表,交往方式ID |
VisitFormID |
int |
Yes |
属性明细表,来访形态ID |
HomeBuyerConsultantID |
int |
Yes |
员工表,置业顾问ID |
RecommendedHousingID |
int |
Yes |
房间资源表,推荐房源ID |
CommunicationContent |
nchar (30) |
Yes |
交往内容 |
表8: 预定表 (dbo.PW_ReserveUnit)
Primary Key(主键): ReserveUnitID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ReserveUnitID |
int - Identity |
No |
预订单元ID |
|
ClientID |
int |
Yes |
客户表,客户ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
UnitNumberID |
int |
Yes |
单元表,单元ID |
|
RoomNumeral |
nchar (10) |
Yes |
房间排号 |
|
PresalseArea |
nchar (10) |
Yes |
预售面积 |
|
ReservationPrice |
money |
Yes |
预收单价 |
|
BookingReservationPrice |
money |
Yes |
预定总价 |
|
AccountsReceivableBookingGoid |
money |
Yes |
应收预约金 |
|
BookingDate |
datetime |
Yes |
预定日期 |
|
ValidDate |
datetime |
Yes |
有效日期 |
|
BriefNote |
nchar (20) |
Yes |
简要备注 |
|
AuditDate |
date |
Yes |
审核日期 |
|
NewReserveUnitID |
int |
Yes |
预定表,新预定ID |
|
ChangeReason |
int |
Yes |
属性明细表,变更原因ID |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表9: 保留表 (dbo. PW_RoomSelect_Keep)
Primary Key(主键): KeepID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
KeepID |
int - Identity |
No |
保留ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
RoomResourcesID |
int |
Yes |
房间资源表,房间ID |
|
UnitPrice |
decimal (18, 2) |
Yes |
单价 |
|
Price |
decimal (18, 2) |
Yes |
售价 |
|
KeepPeople |
int |
Yes |
保留人 |
|
Note |
nchar (300) |
Yes |
说明 |
|
StartDate |
datetime |
Yes |
开始时间 |
|
KeepTime |
nchar (10) |
Yes |
保留时长 |
|
KeepDate |
nchar (10) |
Yes |
保留天数 |
|
OperatingPerson |
int |
Yes |
经办人员 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表10: 预留表 (dbo. PW_SeserveUnit)
Primary Key(主键): SeserveUnitID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
SeserveUnitID |
int - Identity |
No |
预留单元ID |
|
ClientID |
int |
Yes |
客户信息表,客户ID |
|
FloorID |
int |
Yes |
楼栋信息表,楼栋ID |
|
UnitNumberID |
int |
Yes |
房间资源表,房间单元ID |
|
RoomNumeral |
nchar (10) |
Yes |
房间排号 |
|
PresalseArea |
decimal (18, 2) |
Yes |
预售面积 |
|
SeservationUnitPrice |
decimal (18, 2) |
Yes |
预留单价 |
|
BookingSeservationPrice |
decimal (18, 2) |
Yes |
预留总价 |
|
AccountsReceivableBookingGoid |
money |
Yes |
应收预约金 |
|
SeservatingDate |
datetime |
Yes |
预留日期 |
|
ValidDate |
datetime |
Yes |
有效日期 |
|
BriefNote |
nchar (100) |
Yes |
简要备注 |
|
AuditDate |
datetime |
Yes |
审核日期 |
|
NewSeserveUnitID |
int |
Yes |
预留表,新的预留ID |
|
ChangeReason |
int |
Yes |
变更原因 |
|
IncalidOr |
bit |
((0)) |
Yes |
作废否 |
表11: 认购表 (dbo. PW_SubscribeUnit)
Primary Key(主键): SubscribeUnitID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
SubscribeUnitID |
int - Identity |
No |
认购单元ID |
|
SalesChangeID |
int |
Yes |
销售便更表,销售变更ID |
|
SubscriptioNumber |
nchar (20) |
Yes |
认购单编号 |
|
SubscribeToDate |
datetime |
Yes |
认购日期 |
|
AnticipatedDateSigned |
datetime |
Yes |
预计签约日期 |
|
ContractArea |
nchar (10) |
Yes |
合同面积 |
|
TypeOfPanymentID |
int |
Yes |
付款方式表,付款方式ID |
|
PaymentDetailsOfNameID |
int |
Yes |
付款方式明细表,付款名称细目ID |
|
SalesAreaOfWayID |
int |
Yes |
属性明细表,销售面积方式ID |
|
FsvorableDiscount |
decimal (18, 2) |
Yes |
优惠折扣 |
|
ClinchADealUnitPrice |
money |
Yes |
成交单价 |
|
ClinchADealThePrice |
money |
Yes |
成交总价 |
|
ClientID |
int |
Yes |
客户信息表,客户ID |
|
AgentID |
int |
Yes |
员工表,经办人ID |
|
BriefNote |
nchar (20) |
Yes |
简要备注 |
|
ReviewWhether |
bit |
((0)) |
Yes |
审核否 |
CancelWhether |
bit |
((0)) |
Yes |
作废否 |
ChangeOfAuditStatusID |
int |
Yes |
属性明细表,变更审核状态ID |
|
RoomResourcesID |
int |
Yes |
房间资源表,房源ID |
|
AfterUpdateID |
int |
Yes |
认购表,修改后的认购ID |
表12: 认筹表 (dbo. PW_ClientConfessToRaise)
Primary Key(主键): ClientConfessToRaiseID
非主键ID值均是外键
列名 |
数据类型 |
默认值 |
Nulls? |
说明 |
ClientConfessToRaiseID |
int - Identity |
No |
客户认筹ID |
|
ClientID |
int |
Yes |
客户信息表,客户ID |
|
RaiseNumeralRecognition |
nchar (10) |
Yes |
认筹排号 |
|
TheOrderNumber |
nchar (10) |
Yes |
订单号 |
|
ConfessToRaiseClassificationID |
int |
Yes |
属性明细表,筹卡分类ID |
|
AccountsReceivableAppointmentGold |
money |
Yes |
应收预约金 |
|
ConfesstoraiseDate |
datetime |
Yes |
认筹日期 |
|
EffectiveDate |
datetime |
Yes |
有效日期 |
|
IntentionUnitInstructions |
nchar (10) |
Yes |
意向单元说明 |
|
Note |
nchar (30) |
Yes |
备注 |
|
ToSeserve |
bit |
((0)) |
Yes |
转预留否 |
SeserveID |
int |
Yes |
预留表,预留ID |
|
AuditWhether |
bit |
((0)) |
Yes |
审核否 |
IncalidWhether |
bit |
((0)) |
Yes |
作废否 |
AfterUpdateID |
int |
Yes |
认筹表,修改后ID |
表13: 员工表 (dbo. SYS_Staff)
Primary Key(主键): StaffID
非主键ID值均是外键
列名 |
数据类型 |
Nulls? |
说明 |
StaffID |
int - Identity |
No |
员工ID |
StaffNumber |
nchar (10) |
Yes |
员工编号 |
StaffName |
nchar (10) |
Yes |
员工姓名 |
DepartMentID |
int |
Yes |
所属部门 |
GenderID |
int |
Yes |
属性明细表,性别ID |
Age |
int |
Yes |
年龄 |
EducationBackgroundID |
int |
Yes |
属性明细表,学历ID |
MarryWhether |
bit |
Yes |
婚否 |
Position |
nchar (10) |
Yes |
职位 |
ContactPhoneNumber |
nchar (15) |
Yes |
联系电话 |
ContactAddress |
nchar (20) |
Yes |
联系地址 |
Notes |
nchar (100) |
Yes |
备注 |
StaffImage |
image |
Yes |
员工照片 |
2、具体代码实现
第一步:数据库存储过程
if @Type='Binding_dgvAllCustomer'--查询所有客户
begin
SELECT rtrim(PW_ClientInformation.ClientName) as ClientName, PW_ClientInformation.ClientID, rtrim(PW_ClientInformation.RelationPhone) as RelationPhone, PW_ClientInformation.HomeBuyerConsultantID,
rtrim(SYS_Staff.StaffName) AS HomeBuyerConsultantName, rtrim(PW_ClientInformation.EarlyVisitIntention) as EarlyVisitIntention, rtrim(PW_ClientInformation.Gender) as Gender, rtrim(PW_ClientInformation.MaritalStatus) as MaritalStatus,
PW_ClientInformation.ClientRegistrationWayID, rtrim(SYS_AttributeDetails.AuttributeDetailsName) AS ClientRegistrationWay, rtrim(PW_ClientInformation.ElectronMail) as ElectronMail, PW_ClientInformation.DateOfVisit,
rtrim(PW_ClientInformation.CommunicationAddress) as CommunicationAddress, rtrim(PW_ClientInformation.Postcode) as Postcode, rtrim(PW_ClientInformation.IDentityCard) as IDentityCard, PW_ClientInformation.BirthDay, rtrim(PW_ClientInformation.Age) as Age,
rtrim(PW_ClientInformation.Professional) as Professional, rtrim(PW_ClientInformation.NowLivingArea) as NowLivingArea, rtrim(PW_ClientInformation.LearnTheWayToTheCase) as LearnTheWayToTheCase, rtrim(PW_ClientInformation.VisitConstitute) as VisitConstitute, rtrim(PW_ClientInformation.Traffic) as Traffic,
rtrim(PW_ClientInformation.RealEstateSituation) as RealEstateSituation, rtrim(PW_ClientInformation.ResidentialMortgageLoans) as ResidentialMortgageLoans, rtrim(PW_ClientInformation.HomesBuyersPurpose) as HomesBuyersPurpose, rtrim(PW_ClientInformation.PlanTorealEstatePrice) as PlanTorealEstatePrice,
rtrim(PW_ClientInformation.DemandArea) as DemandArea, rtrim(PW_ClientInformation.PaymentWay) as PaymentWay, rtrim(PW_ClientInformation.BuyingConsideration) as BuyingConsideration
FROM PW_ClientInformation INNER JOIN
SYS_Staff ON PW_ClientInformation.HomeBuyerConsultantID = SYS_Staff.StaffID INNER JOIN
SYS_AttributeDetails ON PW_ClientInformation.ClientRegistrationWayID = SYS_AttributeDetails.AttributeDetailsID
where PW_ClientInformation.IncalidOr=0
end
if @Type='dgvAllCustomer_CellMouseClick_BindingdgvClientHistoryRecord'--根据客户查询相关交往的信息
begin
SELECT RTRIM(SYS_AttributeDetails_1.AuttributeDetailsName) AS 交往方式, RTRIM(SYS_AttributeDetails.AuttributeDetailsName) AS 来访形态,
PW_ClientContractDetails.ClientContractDetailsID, PW_ClientContractDetails.ClientID, PW_ClientContractDetails.ContractTime
AS 交往日期, RTRIM(PW_ClientContractDetails.DegreeOfInterest) AS 意向程度, PW_ClientContractDetails.InteractionsID,
PW_ClientContractDetails.VisitFormID, PW_ClientContractDetails.HomeBuyerConsultantID,
PW_ClientContractDetails.RecommendedHousing, RTRIM(PW_ClientContractDetails.CommunicationContent) AS 交往内容, RTRIM(SYS_Staff.StaffName) as 置业顾问
FROM PW_ClientContractDetails INNER JOIN
SYS_AttributeDetails AS SYS_AttributeDetails_1 ON PW_ClientContractDetails.InteractionsID = SYS_AttributeDetails_1.AttributeDetailsID INNER JOIN
SYS_AttributeDetails ON PW_ClientContractDetails.VisitFormID = SYS_AttributeDetails.AttributeDetailsID INNER JOIN
SYS_Staff ON PW_ClientContractDetails.HomeBuyerConsultantID = SYS_Staff.StaffID
where PW_ClientContractDetails.ClientID = @ClientID
end
第二步:逻辑层(BLL)
[OperationContract]
#region 绑定dgvAllCustomer
public DataSet Binding_dgvAllCustomer()
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
};
SQLCMDpas[0].Value = "Binding_dgvAllCustomer";
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 条件绑定dgvClientHistoryRecord
public DataSet dgvAllCustomer_CellMouseClick_BindingdgvClientHistoryRecord(int intClientID)
{
SqlParameter[] SQLCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@ClientID", SqlDbType.Int),
};
SQLCMDpas[0].Value = "dgvAllCustomer_CellMouseClick_BindingdgvClientHistoryRecord";
SQLCMDpas[1].Value = intClientID;
DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_CustomerQuery", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
第三步:界面层(UIL)的代码
private void dgvAllCustomer_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)//双击选择客户
{
int intClientID = (int)dgvAllCustomer.CurrentRow.Cells["客户ID_All"].Value;
DataTable dtClientRecord = myfrmMarketManagement_CustomerQueryClient.dgvAllCustomer_CellMouseClick_BindingdgvClientHistoryRecord(intClientID).Tables[0];
dgvClientHistoryRecord.DataSource = dtClientRecord;
}
private void txtCustomerNameOrTelephone_TextChanged(object sender, EventArgs e)//通过客户名称或者电话号码精确查询
{
string strtxtCustomerNameOrTelephone = txtCustomerNameOrTelephone.Text.ToString().Trim();
if (strtxtCustomerNameOrTelephone != "")
{
radAll_ES.Checked = true;
}
string strCondition = " ClientName like '%" + strtxtCustomerNameOrTelephone + "%' or RelationPhone like '%" + strtxtCustomerNameOrTelephone + "%'";//字符串拼接过滤条件
DataView dv = new DataView(dtAllCustomer);
dv.RowFilter = strCondition;//实现过滤
DataTable dt = dv.ToTable();
dgvAllCustomer.DataSource = dt;//绑定过滤后的信息
}
private void Pub_rad_ES_Click(object sender, EventArgs e)//公用的单选框点击事件
{
txtCustomerNameOrTelephone.Text = "";
string strCondition = "";
if (radAll_ES.Checked)
{
strCondition = "";
}
if (radMale_ES.Checked)
{
strCondition = " Gender ='男'";
}
if (radFemale_ES.Checked)
{
strCondition = " Gender ='女'";
}
DataView dv = new DataView(dtAllCustomer);
dv.RowFilter = strCondition;//过滤数据
DataTable dt = dv.ToTable();
dgvAllCustomer.DataSource = dt;
}