新锐房地产销售管理系统(部分流程)技术解释(三)销售管理_房源查询

1.查询房源

房源查询这个模块,可以根据 所选择的项目和楼栋来把房源的信息查询出来,具体体现如下。右边显示的是这个房源的具体信息,销售信息是某一个房源的重要操作记录(例如预定、预留之类的记录)。主界面如下图所示:


从界面上可以看到我们这里用到的控件有

控件名称

说明

标注(Label)

控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。

选项卡(TabControl)

下拉框(ComboBox)

文本(TextBox)

按钮(Button)

菜单(ToolStripMenuItem)

工具栏(ToolStrip)

表格(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.SYS_AttributeSet

Primary Key(主键):  SYS_ShuXingJiHe

列名

数据类型

Nulls?

说明

SYS_ShuXingJiHe

int - Identity

No

属性集合ID

 

AttributeSetName

nchar (10)

Yes

属性集合名称

 

表5: 属性明细表(dbo.SYS_AttributeDetails

Primary Key(主键):  AttributeDetailsID

列名

数据类型

默认值

Nulls?

说明

AttributeDetailsID

int - Identity

 

No

属性明细ID

 

AuttributeSetID

int

 

Yes

属性集合表,属性集合ID

 

AuttributeDetailsName

nchar (10)

 

Yes

属性明细名称

 

EffectiveWhether

bit

((1))

Yes

有效否

 


 

2、绑定下拉框

第一步:数据库的存储过程

IF @Type='HousingQuery_Load_BindingcboProject'--绑定下拉框项目,查询项目
BEGIN
SELECT     rtrim(ProjectName) as ProjectName, ProjectID
FROM         SYS_ProjectInformation
END
IF @Type='HousingQuery_Load_BindingcboCategory'--绑定下拉框类别
BEGIN
SELECT     AttributeDetailsID, rtrim(AuttributeDetailsName) as AuttributeDetailsName
FROM         SYS_AttributeDetails
WHERE    SYS_AttributeDetails.AuttributeSetID=4
END
IF @Type='HousingQuery_Load_BindingcboBuildingNumber'--绑定下拉框楼栋
BEGIN
SELECT     FloorID, ProjectID, rtrim(FloorName) as FloorName
FROM         SYS_FloorInformation
END
IF @Type='HousingQuery_Load_BindingcboBuildingNumber_OnProjectID'--根据项目绑定下拉框楼栋
BEGIN
SELECT     FloorID, ProjectID, rtrim(FloorName) as FloorName
FROM         SYS_FloorInformation
where SYS_FloorInformation.ProjectID=@ProjectID
END

第二步:逻辑层(BLL)代码(在敲代码前得新建一个类)----具体服务搭建详见上篇博文

DALPublic.DALPublic myDALPublic = new DALPublic.DALPublic();

        [OperationContract]
        #region 绑定项目下拉框
        public DataSet HousingQuery_Load_BindingcboProject()
        {
            SqlParameter[] SQLCMDpas = { new SqlParameter("@Type", SqlDbType.Char),
                                          };
            SQLCMDpas[0].Value = "HousingQuery_Load_BindingcboProject";
            DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }
        #endregion 
        
        [OperationContract]
        #region 绑定类别下拉框
        public DataSet HousingQuery_Load_BindingcboCategory()
        {
            SqlParameter[] SQLCMDpas = { new SqlParameter("@Type", SqlDbType.Char),
                                          };
            SQLCMDpas[0].Value = "HousingQuery_Load_BindingcboCategory";
            DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }
        #endregion 
        
        [OperationContract]
        #region 绑定楼栋下拉框
        public DataSet HousingQuery_Load_BindingcboBuildingNumber()
        {
            SqlParameter[] SQLCMDpas = { new SqlParameter("@Type", SqlDbType.Char),
                                          };
            SQLCMDpas[0].Value = "HousingQuery_Load_BindingcboBuildingNumber";
            DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }
        #endregion 

第三步:点击重新生成

 

第四步:界面层(UIL)代码,在窗体的Load事件中绑定下拉框的数据

 

        BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_HousingQuery.frmMarketManagement_HousingQueryClient myfrmMarketManagement_HousingQuery = new BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_HousingQuery.frmMarketManagement_HousingQueryClient();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender">触发者</param>
        /// <param name="e">触发环境</param>
        private void frmMarketManagement_HousingQuery_Load(object sender, EventArgs e)
        {
            DataTable dtProject = myfrmMarketManagement_HousingQuery.HousingQuery_Load_BindingcboProject().Tables[0];
            DataTable dtCategory = myfrmMarketManagement_HousingQuery.HousingQuery_Load_BindingcboCategory().Tables[0];
            DataTable dtBuildingNumber = myfrmMarketManagement_HousingQuery.HousingQuery_Load_BindingcboBuildingNumber().Tables[0];
            cboProjectName.DataSource = dtProject;//绑定下拉了项目名称
            cboProjectName.DisplayMember = "ProjectName";
            cboProjectName.ValueMember = "ProjectID";

            cboCategory.DataSource = dtCategory;
            cboCategory.DisplayMember = "AuttributeDetailsName";
            cboCategory.ValueMember = "AttributeDetailsID";

            cboBuildingNumber.DataSource = dtBuildingNumber;//绑定下拉框楼栋
            cboBuildingNumber.DisplayMember = "FloorName";
            cboBuildingNumber.ValueMember = "FloorID";
            intFloorID = (int)cboBuildingNumber.SelectedValue;//楼栋选定的是第一项
            DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];//查询某楼栋的全部房源
            Showdgv(dt);//执行自定义的方法,把房源绑定到dgv
            dgvBuildingThePinControlSubsidiary.Focus();//dgv聚焦
            dgvBuildingThePinControlSubsidiary.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; //设定dgv默认单元格样式(居中对齐)
            dgvBuildingThePinControlSubsidiary.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设定列标题样式
            intProjectID = (int)cboProjectName.SelectedValue;
        }

 

3、写下拉框SelectionChangeCommitted事件

第一步:数据库的存储过程

 

IF @Type='HousingQuery_Load_BindingcboBuildingNumber_OnProjectID'--根据项目绑定下拉框楼栋
BEGIN
SELECT     FloorID, ProjectID, rtrim(FloorName) as FloorName
FROM         SYS_FloorInformation
where SYS_FloorInformation.ProjectID=@ProjectID
END

IF @Type='cboBuildingNumber_SelectionSelectRoom'--根据楼栋绑定房源
BEGIN
SELECT     SYS_RoomResources.RoomResourcesID, rtrim(SYS_RoomResources.Number) as Number, rtrim(SYS_FloorInformation.FloorName) as FloorName, rtrim(SYS_RoomResources.FloorStotey) as FloorStotey, SYS_RoomResources.SalesStatusID
FROM         SYS_RoomResources LEFT OUTER JOIN
                      SYS_FloorInformation ON SYS_RoomResources.FloorID = SYS_FloorInformation.FloorID
where  SYS_RoomResources.FloorID=@FloorID
END

第二步:逻辑层(BLL)代码

        [OperationContract]
        #region 根据项目ID绑定楼栋
        public DataSet HousingQuery_Load_BindingcboBuildingNumber_OnProjectID(int intProjectID)
        {
            SqlParameter[] SQLCMDpas = {
                                           new SqlParameter("@Type", SqlDbType.Char),
                                           new SqlParameter("@ProjectID", SqlDbType.Int),
                                          };
            SQLCMDpas[0].Value = "HousingQuery_Load_BindingcboBuildingNumber_OnProjectID";
            SQLCMDpas[1].Value = intProjectID;
            DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }
        #endregion 
        
        [OperationContract]
        #region 根据楼栋ID绑定房间
        public DataSet cboBuildingNumber_SelectionSelectRoom(int intFloorID)
        {
            SqlParameter[] SQLCMDpas = {
                                           new SqlParameter("@Type", SqlDbType.Char),
                                           new SqlParameter("@FloorID", SqlDbType.Int),
                                          };
            SQLCMDpas[0].Value = "cboBuildingNumber_SelectionSelectRoom";
            SQLCMDpas[1].Value = intFloorID;
            DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }
        #endregion 
           

第三步:界面层(UIL)代码,在SelectionChangeCommitted事件绑定数据

        /// <summary>
        /// cbo项目的SelectionChangeCommitted事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cboProjectName_SelectionChangeCommitted(object sender, EventArgs e)
        {
            cboBuildingNumber.DataSource = //条件绑定楼栋
                myfrmMarketManagement_HousingQuery.HousingQuery_Load_BindingcboBuildingNumber_OnProjectID(Convert.ToInt32(cboProjectName.SelectedValue)).Tables[0];
            cboBuildingNumber.DisplayMember = "FloorName";//绑定显示成员
            cboBuildingNumber.ValueMember = "FloorID";//绑定值成员
        }

        /// <summary>
        /// cbo楼栋的SelectionChangeCommitted事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cboBuildingNumber_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                intFloorID = (int)cboBuildingNumber.SelectedValue;
                DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];
                Showdgv(dt);//执行用来绑定楼栋销控明细的方法
            }
            catch 
            {
                MessageBox.Show("此楼栋暂时没有房间资源!请选择其他楼栋!");
            }
            dgvBuildingThePinControlSubsidiary.Focus();//dgv聚焦
        }

        /// <summary>
        /// 自定义的方法,用来根据房源表来绑定楼栋销控明细表
        /// </summary>
        /// <param name="dt">dt是某一楼栋的房源表</param>
        void Showdgv(DataTable dt)
        {
            decimal intSigning = 0;//签约
            decimal intSubscrible = 0;//认购
            decimal intReservation = 0;//预定
            decimal intReserved = 0;//预留
            decimal intKeep = 0;//保留
            decimal intConfiscated = 0;//没收
            decimal intUnsales = 0;//未售
            decimal intAddUp = 0;//合计
            dgvBuildingThePinControlSubsidiary.Rows.Clear();
            dgvBuildingThePinControlSubsidiary.Columns.Clear();
            int intFloorStoteyCount = 0;
            for (int count = 0; count < dt.Rows.Count; count++)//获取某楼栋的楼层
            {
                if (intFloorStoteyCount < Convert.ToInt32(dt.Rows[count]["FloorStotey"]))
                    intFloorStoteyCount = Convert.ToInt32(dt.Rows[count]["FloorStotey"]);
            }
            int intUnitCount = dt.Rows.Count / intFloorStoteyCount;//获取某楼栋的每层编号
            for (int ColumnCount = 0; ColumnCount < intUnitCount; ColumnCount++)//根据编号来添加列
            {
                dgvBuildingThePinControlSubsidiary.Columns.Add(ColumnCount.ToString().Trim(), ((ColumnCount + 1).ToString().Length > 1 ? (ColumnCount + 1).ToString() : "0" + (ColumnCount + 1).ToString()));
            }
            dgvBuildingThePinControlSubsidiary.Columns.Add("Title", "楼层﹨编号");//添加一列用来显示楼层的
            dgvBuildingThePinControlSubsidiary.Columns["Title"].Width = 110;
            dgvBuildingThePinControlSubsidiary.Columns["Title"].DisplayIndex = 0;
            dgvBuildingThePinControlSubsidiary.Columns[intUnitCount].Frozen = true;
            for (int intcount = intFloorStoteyCount; intcount > 0; intcount--)//根据楼层绑定行
            {
                DataTable dtTest = new DataTable();
                string strCondition = " FloorStotey = " + intcount;//字符串拼接DataView的过滤条件
                DataView dv = new DataView(dt);
                dv.RowFilter = strCondition;//过滤
                dtTest = dv.ToTable();//用另外一个表去装过滤后的数据

                int intColumnIndex = 0;
                dgvBuildingThePinControlSubsidiary.Rows.Add();
                dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].HeaderCell.ToolTipText = (dgvBuildingThePinControlSubsidiary.Rows.Count - 1).ToString();
                for (int dtRowCount = 0; dtRowCount < dtTest.Rows.Count; dtRowCount++)//根据编号绑定单元格
                {
                    dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Value = dtTest.Rows[intColumnIndex]["Number"];
                    switch (Convert.ToInt32(dtTest.Rows[intColumnIndex]["SalesStatusID"]))
                    {
                        case 96: //签约
                            dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Red;
                            intSigning++;
                            break;
                        case 97: //认购
                            dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
                            intSubscrible++;
                            break;
                        case 98: //预留
                            dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Lime;
                            intReserved++;
                            break;
                        case 99: //预定 intReservation
                            dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Yellow;
                            intReservation++;
                            break;
                        case 100: //保留
                            dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Cyan;
                            intKeep++;
                            break;
                        case 101: //没收
                            dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Fuchsia;
                            intConfiscated++;
                            break;
                        case 102: //未售
                            dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Style.BackColor = Color.Silver;
                            intUnsales++;
                            break;
                    }
                    intColumnIndex++;
                }
                dgvBuildingThePinControlSubsidiary.Rows[dgvBuildingThePinControlSubsidiary.Rows.Count - 1].Cells[intColumnIndex].Value = intcount.ToString();
            }

            txtSigning.Text = intSigning.ToString().Trim();//签约
            txtSubscrible.Text = intSubscrible.ToString().Trim();//认购
            txtReservation.Text = intReservation.ToString().Trim(); //预定
            txtReserved.Text = intReserved.ToString().Trim(); //预留
            txtKeep.Text = intKeep.ToString().Trim();   //保留
            txtConfiscated.Text = intConfiscated.ToString().Trim();//认筹
            txtUnsales.Text = intUnsales.ToString().Trim();//未售
            intAddUp = intFloorStoteyCount * intUnitCount;//合计总数计算
            txtAddUp.Text = intAddUp.ToString().Trim();//合计
            txtAccountFor.Text = (intSigning / intAddUp*100).ToString("F2");//保存两位小数再转为字符串绑定给文本框
            txtAccountFor1.Text = (intSubscrible / intAddUp * 100).ToString("F2");
            txtAccountFor2.Text = (intReservation / intAddUp * 100).ToString("F2");
            txtAccountFor3.Text = (intReserved / intAddUp * 100).ToString("F2");
            txtAccountFor4.Text = (intKeep / intAddUp * 100).ToString("F2");
            txtAccountFor5.Text = (intConfiscated / intAddUp * 100).ToString("F2");
            txtAccountFor6.Text = (intUnsales / intAddUp * 100).ToString("F2");
            txtAccountFor7.Text = "100.00";//这里的一大段是绑定该楼栋各状态房源的数量和比例
        }

4、dgv楼栋销控明细的单击事件—绑定房源信心和销售信息

第一步:数据库的存储过程

IF @Type='dgvBuildingThePinControlSubsidiary_CellClick_SelectUnitMsg'--根据楼栋ID和编号来查询某一房源
BEGIN
SELECT     SYS_RoomResources.RoomResourcesID, rtrim(SYS_RoomResources.Number) as Number, rtrim(SYS_RoomResources.FloorStotey) as FloorStotey, rtrim(SYS_AttributeDetails_1.AuttributeDetailsName) AS RoomCategory, 
                      rtrim(SYS_AttributeDetails_2.AuttributeDetailsName) AS Toward, rtrim(SYS_AttributeDetails.AuttributeDetailsName) AS DoorModel, rtrim(SYS_AttributeDetails_3.AuttributeDetailsName) AS RoomType, 
                      rtrim(SYS_RoomResources.ConstructionArea) as ConstructionArea, rtrim(SYS_RoomResources.PricateArea) as PricateArea, rtrim(SYS_RoomResources.TheUnitPrice) as TheUnitPrice, rtrim(SYS_RoomResources.BidPrice) as BidPrice, rtrim(SYS_RoomResources.BriefNote) as BriefNote, 
                      rtrim(SYS_FloorInformation.FloorName) as FloorName, SYS_FloorInformation.FloorID, SYS_RoomResources.SalesStatusID
FROM         SYS_RoomResources INNER JOIN
                      SYS_AttributeDetails AS SYS_AttributeDetails_1 ON SYS_RoomResources.RoomCategoryID = SYS_AttributeDetails_1.AttributeDetailsID INNER JOIN
                      SYS_AttributeDetails AS SYS_AttributeDetails_2 ON SYS_RoomResources.TowardID = SYS_AttributeDetails_2.AttributeDetailsID INNER JOIN
                      SYS_AttributeDetails ON SYS_RoomResources.DoorModelID = SYS_AttributeDetails.AttributeDetailsID INNER JOIN
                      SYS_AttributeDetails AS SYS_AttributeDetails_3 ON SYS_RoomResources.RoomTypeID = SYS_AttributeDetails_3.AttributeDetailsID INNER JOIN
                      SYS_FloorInformation ON SYS_RoomResources.FloorID = SYS_FloorInformation.FloorID
where  SYS_RoomResources.FloorID=@FloorID and SYS_RoomResources.Number=@Number
END

if @Type='dgvBuildingThePinControlSubsidiary_CellClick_BindingdgvSalesOfServiceFloowDetail'--dgv单击元格,查询相关销售详细信息
begin
SELECT     rtrim(PW_SalesOfServiceFloowDetail.BriefNote) as BriefNote, PW_SalesOfServiceFloowDetail.RoomResourceID, rtrim(PW_SalesOfServiceFloowDetail.OperatingType) as OperatingType, rtrim(PW_SalesOfServiceFloowDetail.OperatingTime) as OperatingTime, 
                      rtrim(SYS_Staff.StaffName) as StaffName, rtrim(PW_SalesOfServiceFloowDetail.OperatingPeople) as OperatingPeople, rtrim(SYS_AttributeDetails.AuttributeDetailsName) AS OperatingType
FROM         PW_SalesOfServiceFloowDetail INNER JOIN
                      SYS_Staff ON PW_SalesOfServiceFloowDetail.OperatingPeople = SYS_Staff.StaffID INNER JOIN
                      SYS_AttributeDetails ON PW_SalesOfServiceFloowDetail.OperatingType = SYS_AttributeDetails.AttributeDetailsID
where  PW_SalesOfServiceFloowDetail.RoomResourceID=@RoomResourceID
end

第二步:逻辑层(BLL)代码

        [OperationContract]
        #region 条件查询某一房间信息
        public DataSet dgvBuildingThePinControlSubsidiary_CellClick_SelectUnitMsg(int intFloorID,string strNumber)
        {
            SqlParameter[] SQLCMDpas = {
                                           new SqlParameter("@Type", SqlDbType.Char),
                                           new SqlParameter("@FloorID", SqlDbType.Int),
                                           new SqlParameter("@Number", SqlDbType.Char),
                                          };
            SQLCMDpas[0].Value = "dgvBuildingThePinControlSubsidiary_CellClick_SelectUnitMsg";
            SQLCMDpas[1].Value = intFloorID;
            SQLCMDpas[2].Value = strNumber;
            DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery", SQLCMDpas);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }
        #endregion 
        
        [OperationContract]
        #region 绑定销售关键流程明细/绑定销售信息
        public DataSet dgvBuildingThePinControlSubsidiary_CellClick_BindingdgvSalesOfServiceFloowDetail(int intRoomResourcesID)
        {
            SqlParameter[] SQLCMDpas = { 
                                           new SqlParameter("@Type", SqlDbType.Char),
                                           new SqlParameter("@RoomResourceID", SqlDbType.Int),
                                          };
            SQLCMDpas[0].Value = "dgvBuildingThePinControlSubsidiary_CellClick_BindingdgvSalesOfServiceFloowDetail";
            SQLCMDpas[1].Value = intRoomResourcesID;
            DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_SubscribeToSign_InsertSubcribe", SQLCMDpas);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }
        #endregion

第三步:界面层(UIL)代码

private void dgvBuildingThePinControlSubsidiary_CellClick(object sender, DataGridViewCellEventArgs e)//dgv的单击事件
        {
            if (dgvBuildingThePinControlSubsidiary.CurrentCell.ColumnIndex != dgvBuildingThePinControlSubsidiary.Columns.Count-1)
            {
                strUnitNumber = dgvBuildingThePinControlSubsidiary.CurrentCell.Value.ToString().Trim();
                DataTable dtRoomMsg = myfrmMarketManagement_HousingQuery.dgvBuildingThePinControlSubsidiary_CellClick_SelectUnitMsg(intFloorID, strUnitNumber).Tables[0];//根据楼栋ID和房源编号来确定某一房源
                #region 右边房源信息和销售信息里边的信息绑定
                txtBuildingNumber.Text = dtRoomMsg.Rows[0]["FloorName"].ToString().Trim();
                strFloorName = dtRoomMsg.Rows[0]["FloorName"].ToString().Trim();
                intRoomResourceID = (int)dtRoomMsg.Rows[0]["RoomResourcesID"];
                txtUnitNumber.Text = dtRoomMsg.Rows[0]["Number"].ToString().Trim();
                txtFloorStorey.Text = dtRoomMsg.Rows[0]["FloorStotey"].ToString().Trim();
                txtCategory.Text = dtRoomMsg.Rows[0]["RoomCategory"].ToString().Trim();
                txtToward.Text = dtRoomMsg.Rows[0]["Toward"].ToString().Trim();
                txtDoorModel.Text = dtRoomMsg.Rows[0]["DoorModel"].ToString().Trim();
                txtRoomModel.Text = dtRoomMsg.Rows[0]["RoomType"].ToString().Trim();
                txtBuildingArea.Text = dtRoomMsg.Rows[0]["ConstructionArea"].ToString().Trim();
                txtPrivateArea.Text = dtRoomMsg.Rows[0]["PricateArea"].ToString().Trim();
                txtEquallySharedArea.Text = (Convert.ToDecimal(dtRoomMsg.Rows[0]["ConstructionArea"].ToString().Trim()) - Convert.ToDecimal(dtRoomMsg.Rows[0]["PricateArea"].ToString().Trim())).ToString();
                txtEquallySharedRate.Text = ((Convert.ToDecimal(dtRoomMsg.Rows[0]["ConstructionArea"].ToString().Trim()) - Convert.ToDecimal(dtRoomMsg.Rows[0]["PricateArea"].ToString().Trim())) / Convert.ToDecimal(dtRoomMsg.Rows[0]["ConstructionArea"].ToString().Trim())).ToString();
                txtUnitPrice.Text = dtRoomMsg.Rows[0]["TheUnitPrice"].ToString().Trim();
                txtPrice.Text = dtRoomMsg.Rows[0]["BidPrice"].ToString().Trim();
                txtInstructions.Text = dtRoomMsg.Rows[0]["BriefNote"].ToString().Trim();
                intRoomstatus = (int)dtRoomMsg.Rows[0]["SalesStatusID"];
                DataTable dt = myfrmMarketManagement_HousingQuery.dgvBuildingThePinControlSubsidiary_CellClick_BindingdgvSalesOfServiceFloowDetail(intRoomResourceID).Tables[0];
                dgvSalesOfServiceFloowDetail.DataSource = dt;//绑定销售信息明细
                #endregion
            }
        }

5、窗口跳转

        /// <summary>
        /// 添加保留的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnKeepAdding_Click(object sender, EventArgs e)
        {
            if (strUnitNumber == "")
            {
                MessageBox.Show("请选择一间房间后继续!","提示");
                return;
            }
            if (intRoomstatus != 102)
            {
                MessageBox.Show("不是未售状态的房源是无法保留的,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
                return;
            }
            frmMarketManagement_HousingQuery_KeepAdding myfrmMarketManagement_HousingQuery_KeepAdding = new frmMarketManagement_HousingQuery_KeepAdding(this);//带参数实例,是窗体传值
            myfrmMarketManagement_HousingQuery_KeepAdding.ShowDialog();
        }

        /// <summary>
        /// 添加预定
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDueToAdd_Click(object sender, EventArgs e)
        {
            if (strUnitNumber == "")
            {
                MessageBox.Show("请点击楼栋销控明细里的一条信息选择一间房源后继续!", "提示");
                return;
            }
            if (intRoomstatus != 102)
            {
                MessageBox.Show("不是未售状态的房源是无法预定的,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
                return;
            }
            int intProjectID = (int)cboProjectName.SelectedValue;
            intFloorID = (int)cboBuildingNumber.SelectedValue;
            frmMarketManagement_ReserveManagement_InsertReserve myfrmMarketManagement_ReserveManagement_InsertReserve = new frmMarketManagement_ReserveManagement_InsertReserve(this, intProjectID);//带参数实例,是窗体传值
            myfrmMarketManagement_ReserveManagement_InsertReserve.ShowDialog();
            intFloorID = (int)cboBuildingNumber.SelectedValue;
            DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];
            Showdgv(dt);
        }

        /// <summary>
        /// 添加认购
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSubscribleToAdd_Click(object sender, EventArgs e)
        {
            if (strUnitNumber == "")//判断,如果没用点击房间就不能继续
            {
                MessageBox.Show("请点击楼栋销控明细里的一条信息选择一间房源后继续!", "提示");
                return;
            }
            if (intRoomstatus == 96 || intRoomstatus == 97 || intRoomstatus == 101)//判断处于签约、认购、没收状态的不能添加认购
            {
                MessageBox.Show("处于签约、认购、没收状态下的房源无法进行此操作,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
                return;
            }
            int intProjectID = (int)cboProjectName.SelectedValue;
            intFloorID = (int)cboBuildingNumber.SelectedValue;
            frmMarketManagement_SubscribeToSign_InsertSubcribe myfrmMarketManagement_SubscribeToSign_InsertSubcribe = new frmMarketManagement_SubscribeToSign_InsertSubcribe(this, intProjectID);//带参数实例,是窗体传值
            myfrmMarketManagement_SubscribeToSign_InsertSubcribe.ShowDialog();
            intFloorID = (int)cboBuildingNumber.SelectedValue;
            DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];
            Showdgv(dt);
        }


2.保留添加


在楼栋销控明细表中选择一套房源,点击列表下方选择“保留添加”,填写“保留人”、“说明”、“保留时长”或“保留天数”、“置业顾问”后对该套房源进行保留。其如下图



 

从界面上可以看到我们这里用到的控件有

控件名称

说明

标注(Label)

控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。

日期控件(DateTimePicker)

下拉框(ComboBox)

文本(TextBox)

按钮(Button)

数字输入框(NumericUpDown)

表格(DataGridView)

图片列表(ImageList)

 

功能实现:

第一步:数据库

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.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

作废否

 

表4:  客户信息 (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

作废否

 

表5:  员工表 (dbo. SYS_Staff)

Primary Key(主键):  StaffID

非主键ID值均是外键

Field

Type

Nulls?

Comments

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、绑定下拉框和相应的房源

第一步:窗体传值过来(UIL)

        frmMarketManagement_HousingQuery Frm;//声明父窗体
        public frmMarketManagement_HousingQuery_KeepAdding(frmMarketManagement_HousingQuery frm)//从父窗体传值过来
        {
            Frm = frm;//将传过来的父窗体赋给自己声明的那个,不然是调用不了父窗体里边的数据或方法
            InitializeComponent();
        }

第二步:数据库存储过程

if @Type='KeepAdding_Load_BindingcboPersonInCharge'--查询绑定cbo置业顾问和经办人的数据
begin
SELECT     StaffID, rtrim(StaffName) as  StaffName
FROM         SYS_Staff
end

if @Type='KeepAdding_Load_BindingdgvCustom'--根据房源所在的项目来绑定相应的客户
begin
SELECT     ClientID, RTRIM(ClientName) AS ClientName, RTRIM(Gender) AS Gender, HomeBuyerConsultantID
FROM         PW_ClientInformation
where   PW_ClientInformation.IncalidOr=0 and PW_ClientInformation.ProjectID=@ProjectID
end

第三步:逻辑层(BLL)代码

        DALPublic.DALPublic myDALPublic = new DALPublic.DALPublic();//实例化DAL

        [OperationContract]
        #region 绑定经办人员下拉框
        public DataSet KeepAdding_Load_BindingcboPersonInCharge()
        {
            SqlParameter[] SQLCMDpas = { 
                                           new SqlParameter("@Type", SqlDbType.Char),
                                          };
            SQLCMDpas[0].Value = "KeepAdding_Load_BindingcboPersonInCharge";
            DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery_KeepAdding", SQLCMDpas);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }
        #endregion 
        
        [OperationContract]
        #region 绑定dgvCustom
        public DataSet KeepAdding_Load_BindingdgvCustom(int intRoomResourcesID)
        {
            SqlParameter[] SQLCMDpas = { 
                                           new SqlParameter("@Type", SqlDbType.Char),
                                           new SqlParameter("@ProjectID", SqlDbType.Int),
                                          };
            SQLCMDpas[0].Value = "KeepAdding_Load_BindingdgvCustom";
            SQLCMDpas[1].Value = intRoomResourcesID;
            DataTable myDataTable = myDALPublic.DAL_SelectDB_Par("frmMarketManagement_HousingQuery_KeepAdding", SQLCMDpas);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }
        #endregion 
        

第四步:界面层(UIL)代码

        BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_HousingQuery_KeepAdding.frmMarketManagement_HousingQuery_KeepAddingClient myfrmMarketManagement_HousingQuery_KeepAddingClient = new BLL新锐房地产销售系统.MarketManagement.frmMarketManagement_HousingQuery_KeepAdding.frmMarketManagement_HousingQuery_KeepAddingClient();//实例化BLL,以便下面调用
        private void frmMarketManagement_HousingQuery_KeepAdding_Load(object sender, EventArgs e)
        {
            txtBuilingNumber.Text = Frm.strFloorName;//将父窗体里边所选定的楼栋名称,绑定到这个界面
            txtUnitNumber.Text = Frm.strUnitNumber;//将父窗体里边所选定的房源编号,绑定到这个界面
            DataTable dtCustom = myfrmMarketManagement_HousingQuery_KeepAddingClient.KeepAdding_Load_BindingdgvCustom(Frm.intProjectID).Tables[0];
            dgvCustom.DataSource = dtCustom;//绑定dgv客户
            cboHomeBuyersConsultant.DataSource = myfrmMarketManagement_HousingQuery_KeepAddingClient.KeepAdding_Load_BindingcboPersonInCharge().Tables[0];//绑定cbo置业顾问的数据源
            cboHomeBuyersConsultant.DisplayMember = "StaffName";//绑定显示成员
            cboHomeBuyersConsultant.ValueMember = "StaffID";//绑定值成员

            cboPersonInCharge.DataSource = myfrmMarketManagement_HousingQuery_KeepAddingClient.KeepAdding_Load_BindingcboPersonInCharge().Tables[0];//绑定经办人的数据源
            cboPersonInCharge.DisplayMember = "StaffName";
            cboPersonInCharge.ValueMember = "StaffID";
        }

3、输入数据的限制与提取、保留房源的新增

第一步:数据库的存储过程

if @Type='btnSave_Click_Insert'--新增保留信息
begin
INSERT INTO PW_RoomSelect_Keep
           (FloorID, RoomResourcesID, UnitPrice, Price, KeepPeople, Note, StartDate, KeepTime, KeepDate, OperatingPerson)
VALUES     (@BuildingAMovieTheatherID, @RoomResourcesID, @UnitPrice, @Price, @KeepPeople, @Note, @StartDate, @KeepTime, @KeepDate, @OperatingPerson)
end

if @Type='btnSave_Click_UpdateSalesStatus'--新增保留后保房源的销售状态更改为保留
begin
UPDATE    SYS_RoomResources
SET              SalesStatusID = 100
where  SYS_RoomResources.RoomResourcesID=@RoomResourcesID
end

if @Type = 'PublicMethod_InsertSalesOfServiceFloowDetail'--新增销售记录
begin
INSERT INTO PW_SalesOfServiceFloowDetail
                      (BriefNote, RoomResourceID, ReserveID, KeepID, ClientConfessToRaiseID, Confiscated, Signing, OperatingTime, OperatingPeople, OperatingType)
VALUES     (@BriefNote,@RoomResourceID,@ReserveID,@KeepID,@ClientConfessToRaiseID,@Confiscated,@Signing,@OperatingTime,@OperatingPeople,@OperatingType)
end

if @Type = 'PublicMethod_InsertClientEventRecord'--新增客户重要操作事件记录
begin
INSERT INTO PW_ClientEventRecord
                      (ClientID, RecordDate, Characteristic, explain)
VALUES     (@ClientID, @RecordDate,@Characteristic, @explain)
end

第二步:逻辑层的代码(BLL)

        [OperationContract]
        #region 添加保留
        public int btnSave_Click_Insert(int intBuildingAMovieTheatherID, int intRoomResourcesID,decimal decUnitPrice, decimal decPrice, int intKeepPeople,string strNote,DateTime dtmStartDate,string strKeepTime,string strKeepDate,int intOperatingPerson)
        {
            SqlParameter[] SQLCMDpas = { 
                                           new SqlParameter("@Type", SqlDbType.Char),
                                           new SqlParameter("@BuildingAMovieTheatherID", SqlDbType.Int),
                                           new SqlParameter("@RoomResourcesID", SqlDbType.Int),
                                           new SqlParameter("@UnitPrice", SqlDbType.Char),
                                           new SqlParameter("@Price", SqlDbType.Char),
                                           new SqlParameter("@KeepPeople", SqlDbType.Char),
                                           new SqlParameter("@Note", SqlDbType.Char),
                                           new SqlParameter("@StartDate", SqlDbType.DateTime),
                                           new SqlParameter("@KeepTime", SqlDbType.Char),
                                           new SqlParameter("@KeepDate", SqlDbType.Char),
                                           new SqlParameter("@OperatingPerson", SqlDbType.Int),
                                          };
            SQLCMDpas[0].Value = "btnSave_Click_Insert";
            SQLCMDpas[1].Value = intBuildingAMovieTheatherID;
            SQLCMDpas[2].Value = intRoomResourcesID;
            SQLCMDpas[3].Value = decUnitPrice;
            SQLCMDpas[4].Value = decPrice;
            SQLCMDpas[5].Value = intKeepPeople;
            SQLCMDpas[6].Value = strNote;
            SQLCMDpas[7].Value = dtmStartDate;
            SQLCMDpas[8].Value = strKeepTime;
            SQLCMDpas[9].Value = strKeepDate;
            SQLCMDpas[10].Value = intOperatingPerson;
            return  myDALPublic.DAL_OPTableDB_Par("frmMarketManagement_HousingQuery_KeepAdding", SQLCMDpas);        
        }
        #endregion 
        
        [OperationContract]
        #region 修改已经添加保留的房间状态
        public int btnSave_Click_UpdateSalesStatus(int intRoomResourcesID)
        {
            SqlParameter[] SQLCMDpas = { 
                                           new SqlParameter("@Type", SqlDbType.Char),
                                           new SqlParameter("@RoomResourcesID", SqlDbType.Int),
                                          };
            SQLCMDpas[0].Value = "btnSave_Click_UpdateSalesStatus";
            SQLCMDpas[1].Value = intRoomResourcesID;
            return myDALPublic.DAL_OPTableDB_Par("frmMarketManagement_HousingQuery_KeepAdding", SQLCMDpas);
        }
        #endregion 
        

第三步:界面层的代码(UIL)

        private void txtKeepPeople_Enter(object sender, EventArgs e)//当光标进入文本框保留人时候
        {
            dgvCustom.Visible = true;//dgv客户的可见性为真
        }

        private void dgvCustom_MouseLeave(object sender, EventArgs e)//当鼠标离开dgv客户后,dgv客户的可见性为假
        {
            dgvCustom.Visible = false;
        }

        int intCustomID = 0;//声明全局变量
        private void dgvCustom_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)//dgv的双击事件,通过双击来选择客户
        {
            intCustomID = (int)dgvCustom.CurrentRow.Cells["客户ID"].Value;//绑定全局变量客户ID(intCustomID)
            txtKeepPeople.Text = dgvCustom.CurrentRow.Cells["姓名"].Value.ToString().Trim();//绑定文本框
            dgvCustom.Visible = false;//dgv客户的可见性为假
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (intCustomID == 0)//如果客户ID没有选择,则跳出事件方法
            {
                MessageBox.Show("请添加保留人后继续!"); 
                return;
            }
            int intBuildingAMovieTheatherID = Frm.intFloorID;     //获取相应的数据    
            int intRoomResourcesID = Frm.intRoomResourceID;
            decimal decUnitPrice =Convert.ToDecimal( txtUnitPrice.Text);
            decimal decPrice = Convert.ToDecimal(txtSalesprice.Text);
            string strNote = txtInstructions.Text.ToString();
            DateTime dtmStartDate = dtpStartingTime.Value;
            string strKeepTime = nudRetrntionTime.Value.ToString();
            string strKeepDate = nudKeepthenumber.Value.ToString();
            int intOperatingPerson = (int)cboPersonInCharge.SelectedValue;//获取相应的数据    
            int myop =  myfrmMarketManagement_HousingQuery_KeepAddingClient.btnSave_Click_Insert(intBuildingAMovieTheatherID, intRoomResourcesID, decUnitPrice, decPrice, intCustomID, strNote, dtmStartDate, strKeepTime, strKeepDate, intOperatingPerson);//调用BLL把参数传到DAL再穿到数据库,实现新增
            if (myop > 0)
            {
                int myupdate = myfrmMarketManagement_HousingQuery_KeepAddingClient.btnSave_Click_UpdateSalesStatus(intRoomResourcesID);
                DateTime dtmOperatingTime = DateTime.Now;
                PublicMethod.Pub_InsertClientEventRecord(intCustomID, dtmOperatingTime, "添加保留", "添加保留房源");//新增成功之后,执行公用方法,新增客户重要事件记录
                PublicMethod.Pub_InsertSalesOfServiceFloowDetail(" 添加预留", intRoomResourcesID, 0, 0, 0, 0, 0, dtmOperatingTime, 1, 144);//新增成功之后,执行公用方法,新增销售关键操作记录
                MessageBox.Show("添加保留成功!");
                Frm.Refresh();//调用父窗体,执行刷新功能
                this.Close();
            }
            
        }

        private void txtUnitPrice_KeyPress(object sender, KeyPressEventArgs e)
        {
            PublicMethod.pubPriceOrRate_KeyPress(sender,e);//调取公用限制只能输入数字的方法,来限制输入
        }

        private void txtSalesprice_KeyPress(object sender, KeyPressEventArgs e)
        {
            PublicMethod.pubPriceOrRate_KeyPress(sender, e);//调取公用限制只能输入数字的方法,来限制输入
        }

        private void btnReturn_Click(object sender, EventArgs e)//点击返回,退出页面
        {
            this.Dispose();//释放窗体的资源
            this.Close();//关闭窗体
        }


3.预定添加


(这里的添加预定的代码只要是在房源查询调用预定管理的新增界面出来,为了避免相同的功能重复说明,这里只介绍涉及的主要窗体传值)

1、UIL窗体传值具体的代码

第一步:查询房源界面里边窗体跳转的具体代码

        /// <summary>
        /// 添加保留的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnKeepAdding_Click(object sender, EventArgs e)
        {
            if (strUnitNumber == "")
            {
                MessageBox.Show("请选择一间房间后继续!","提示");
                return;
            }
            if (intRoomstatus != 102)
            {
                MessageBox.Show("不是未售状态的房源是无法保留的,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
                return;
            }
            frmMarketManagement_HousingQuery_KeepAdding myfrmMarketManagement_HousingQuery_KeepAdding = new frmMarketManagement_HousingQuery_KeepAdding(this);//带参数实例,是窗体传值
            myfrmMarketManagement_HousingQuery_KeepAdding.ShowDialog();
        }

第二步:子窗体接收父窗体传过来的值

        frmMarketManagement_HousingQuery Frm;//声明父窗体
        public frmMarketManagement_HousingQuery_KeepAdding(frmMarketManagement_HousingQuery frm)//从父窗体传值过来
        {
            Frm = frm;//将传过来的父窗体赋给自己声明的那个,不然是调用不了父窗体里边的数据或方法
            InitializeComponent();
        }


4.认购添加



(这里的添加认购的代码只要是在房源查询里边调用认购签约的新增认购界面出来,为了避免相同的功能重复说明,这里只介绍涉及的主要窗体传值)

1、UIL窗体传值具体的代码

第一步:查询房源界面里边窗体跳转的具体代码
        /// <summary>
        /// 添加认购
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSubscribleToAdd_Click(object sender, EventArgs e)
        {
            if (strUnitNumber == "")//判断,如果没用点击房间就不能继续
            {
                MessageBox.Show("请点击楼栋销控明细里的一条信息选择一间房源后继续!", "提示");
                return;
            }
            if (intRoomstatus == 96 || intRoomstatus == 97 || intRoomstatus == 101)//判断处于签约、认购、没收状态的不能添加认购
            {
                MessageBox.Show("处于签约、认购、没收状态下的房源无法进行此操作,\n请点击销控明细列表里的其他房源后继续!!!", "提示");
                return;
            }
            int intProjectID = (int)cboProjectName.SelectedValue;
            intFloorID = (int)cboBuildingNumber.SelectedValue;
            frmMarketManagement_SubscribeToSign_InsertSubcribe myfrmMarketManagement_SubscribeToSign_InsertSubcribe = new frmMarketManagement_SubscribeToSign_InsertSubcribe(this, intProjectID);//带参数实例,是窗体传值
            myfrmMarketManagement_SubscribeToSign_InsertSubcribe.ShowDialog();
            intFloorID = (int)cboBuildingNumber.SelectedValue;
            DataTable dt = myfrmMarketManagement_HousingQuery.cboBuildingNumber_SelectionSelectRoom(intFloorID).Tables[0];
            Showdgv(dt);//执行绑定dgv的方法,实现刷新的功能
        }

第二步:认购添加界面接收房源查询传过去的值

        frmMarketManagement_HousingQuery FrmHousingQuery;//声明房源查询窗体,用来装房源查询传过来的值
        int intprojectID = 0;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="frm">传过来的窗体</param>
        /// <param name="intProjectID">传过来的项目ID</param>
        public frmMarketManagement_SubscribeToSign_InsertSubcribe(frmMarketManagement_HousingQuery frm,int intProjectID)
        {
            FrmHousingQuery = frm;//将传过来的值赋给声明的那个全局变量窗体
            intprojectID = intProjectID;
            InitializeComponent();
        }




本次更新至这里,余下会将我所做的继续更新。本贴只用于学术用途,如用于商业用途,后果自负!!!







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值