您的位置:首页 > 编程语言

实现挂号收费的收费录入功能的代码(九)

2015-06-02 19:53 288 查看

实现挂号收费的收费录入功能的代码(九)

3.2.5收费录入

3.2.5.1收费录入主界面

收费录入这个模块可以实现对处方单进行收费的功能,他可以根据病人是否为会员来收费。如果病人是会员,则可以根据该病人所属会员类型进行自动打折,并进行会员卡积分。消费一元人民币就可以积分0.01分。同时还可以根据是否有医保进行医保结账,就是如果该病人有医保,就可以该医保进行医保结账一部分。病人还可以进行多种方式的结账如现金、卡付或记账。他还可以查询所有的已收费的处方信息等功能。

界面效果图:



[align=left] [/align]

3.2.5.1(图1)
从界面上可以看到我们这里用到的控件有:

控件名称
说明
组装箱控件groupBox
第一要设置每个控件的Text,第二设置控件Name;不同的是dataGridView右键进行编辑列。

标签控件lable
文本框控件textBox
下拉框控件comboBox
时间控件dateTimePicker
按钮控件button
嵌板控件panel
表格控件dataGridView
查询功能实现

第一步:数据库

1、 表与关系



[align=left] [/align]

3.2.5.1(图2)
表1:处方单表(PW_OrdonnanceTable)

列名
数据类型
主键/外键
说明
OrdonnanceID
int - Identity
主键
处方单ID
OrdonnanceNumber
nchar (30)
处方单号
PatientID
int
外键
病人ID
PrescriptionDate
datetime
处方时间
ClinicTechnicalOffices_TechnicalOfficesID
int
外键
就诊科室_科室ID
TreatmentDoctor_StaffID
int
外键
就诊医生_员工ID
AS_ChargeStatusID
int
外键
收费状态ID
ChargeForPersonnel_StaffID
int
外键
收费人员_员工ID
ChargeTime
datetime
收费时间
AS_TakeMedicineStatusID
int
外键
发药状态ID
TakeMedicinePersonnel_StaffID
int
外键
发药人员_员工ID
TakeMedicineTime
datetime
发药时间
BedID
int
外键
床位ID
OutpatientMedicalRecordsTemplateID
int
外键
门诊病历模板ID
WhetherEffective
bit
((1))
有效否
2:床位表(BT_BedTable)

列名
数据类型
主键/外键
说明
BedID
int - Identity
主键
床位ID
BedNumber
nchar (50)
床位编号
BedName
nchar (50)
床位名称
AlphabeticBrevityCode
nchar (30)
拼音简码
WubiInCode
nchar (30)
五笔简码
TechnicalOfficesID
int
外键
科室ID
AS_BedRankID
int
外键
床位级别ID
WhetherEffective
bit
((1))
有效否
NormalSum
decimal (18, 2)
标准金额
BedRemarks
nchar (150)
床位备注
[b]表3:病人表(BT_PatientTable)[/b]

列名
数据类型
主键/外键
说明
PatientID
int - Identity
主键
病人ID
PatientCardNumber
nchar (50)
病人卡号
PatientName
nchar (30)
病人名称
AS_SexID
int
外键
性别ID
Birthday
datetime
出生年月
IDCardNo
nchar (50)
身份证号
AS_MaritalStatusID
int
外键
婚姻情况ID
Profession
nchar (50)
所在职业
MemberTypeID
int
外键
会员类型ID
MedicareCardNumber
nchar (50)
医保卡号
AS_InsuredTypeID
int
外键
参保类型ID
ContactTelephone
nchar (30)
联系电话
ContactAddress
nchar (100)
联系地址
DrugAllergyHistory
nchar (100)
药物过敏史
PatientCategoryID
int
外键
病人类别ID
Age
nchar (30)
年龄
AlphabeticBrevityCode
nchar (20)
拼音简码
WubiInCode
nchar (20)
五笔简码
ContactMobilePhone
nchar (30)
联系手机
Email
nchar (30)
电子邮件
Introducer
nchar (30)
介绍人员
PersonalTaboo
nchar (70)
个人忌讳
HighestReputation
nchar (70)
信誉上限
NowIntegral
nchar (50)
当前积分
Debt
decimal (18, 2)
尚欠金额
ExpenseSum
decimal (18, 2)
消费金额
LastTime
datetime
上次时间
LastDoctor_StaffID
int
外键
上次医生
Prescriptions
nchar (50)
总处方数
PatientPhotos
char (200)
病人照片
WhetherEffective
bit
有效否
WhetherMember
bit
会员否
[b]表4:员工表(BT_StaffTable)[/b]

列名
数据类型
主键/外键
说明
StaffID
int - Identity
主键
员工ID
TechnicalOfficesID
int
外键
科室ID
StaffNumber
nchar (20)
员工编号
StaffName
nchar (20)
员工名称
WhetherOperator
bit
操作员否
AlphabeticBrevityCode
nchar (20)
拼音简码
WubiInCode
nchar (20)
五笔简码
AS_StaffPositionID
int
外键
员工职务ID
AS_MedicalTitlesID
int
外键
医务职称ID
AS_WorkingStatusID
int
外键
工作状态ID
AS_SexID
int
外键
性别ID
ContactTelephone
nchar (50)
联系电话
WhetherBuiltIn
bit
内置否
RegisteredSum
decimal (18, 2)
挂号金额
AS_IntoTheHobbyID
int
外键
录入爱好ID
StaffPhotos
char (200)
员工照片
Email
nchar (70)
电子邮件
IDCardNo
nchar (100)
身份证号
ContactAddress
nchar (100)
联系地址
Birthday
datetime
出生日期
WhetherBirthdayRemind
bit
生日提醒否
WorkDate
datetime
工作日期
TerminationDate
datetime
离职日期
AS_OfficialAcademicCredentialsID
int
外键
最高学历ID
StudySubject
nchar (70)
学习专业
AS_PoliticsStatusID
int
外键
政治面貌ID
Remarks
nchar (100)
员工备注
WhetherEffective
bit
有效否
[b]表5:挂号类别表(BT_RegisterCategoryTable)[/b]

列名
数据类型
主键/外键
说明
RegisterCategoryID
int - Identity
主键
挂号类别ID
RegisterCategoryNumber
nchar (50)
挂号类别编号
RegisterCategoryName
nchar (100)
挂号类别名称
RegisterNormalSum
decimal (18, 2)
挂号标准金额
Remarks
nchar (200)
备注
WhetherEffective
bit
有效否
[b]表6:病人类别表(BT_PatientCategoryTable)[/b]

列名
数据类型
主键/外键
说明
PatientCategoryID
int - Identity
主键
病人类别 ID
CategoryNumber
nchar (20)
类别编号
CategoryName
nchar (30)
类别名称
CategoryDiscount
decimal (18, 2)
类别折扣
WhetherEffective
bit
有效否
CategoryRemarks
nchar (100)
类别备注
[b]表7:科室表(BT_TechnicalOfficesTable)[/b]

列名
数据类型
主键/外键
说明
TechnicalOfficesID
int - Identity
主键
科室ID
DepartmentID
int
外键
部门ID
TechnicalOfficesNumber
nchar (20)
科室编号
TechnicalOfficesName
nchar (20)
科室名称
RegisterSum
decimal (18, 2)
挂号金额
WhetherAllowRegister
bit
允许挂号否
AlphabeticBrevityCode
nchar (20)
拼音简码
WubiInCode
nchar (20)
五笔简码
TechnicalOfficesLocation
nchar (100)
科室位置
Remarks
nchar (200)
备注
WhetherEffective
bit
有效否
[b]表8:属性明细表(BT_AttributeDetailsTable)[/b]

列名
数据类型
主键/外键
说明
AttributeDetailsID
int - Identity
主键
属性明细ID
AttributeDetailsID_F
int
外键
属性明细ID_父
AttributeSetID
int
外键
属性集合ID
AttributeDetailsName
nchar (30)
属性明细名称
Number
nchar (30)
编号
RetrievalInCode
nchar (30)
检索简码
BuiltInIdentifiers
bit
内置标识
Remarks
nchar (100)
备注
WhetherEffective
bit
有效否
第二步:界面新功能代码

1、把处方单药品和辅助检查项目一共六张表用一张表查询出来(注意六张表的字段的个数、排序和名称必须一致)

(1)、数据库存储过程:

IF(@Type='cboOrdonnanceNumber_SelectedIndexChanged_SelectOrdonnanceDetail')
--查询药品
BEGIN
SELECTLTRIM(RTRIM(PW_OrdonnanceDetailTable.TotalDrug))ASTotalDrug,
LTRIM(RTRIM(BT_DrugTable.DrugSpecification))ASDrugSpecification,
LTRIM(RTRIM(1))ASIssueMedicineUnit,--用药单位
LTRIM(RTRIM(BT_DrugTable.WhetherMedicare))ASWhetherMedicare,
LTRIM(RTRIM(BT_DrugPriceTable.MedicarePrice))ASMedicarePrice,
LTRIM(RTRIM(PW_OrdonnanceDetailTable.DrugID))ASAllItemID,
LTRIM(RTRIM(PW_OrdonnanceDetailTable.OrdonnanceDetailEncoding))ASAllICoding,
LTRIM(RTRIM(BT_DrugTable.DrugName))ASAllIName,
isnull(BT_DrugPriceTable.ScatteredPrice, 0)ASAllIPrice
FROMBT_DrugPriceTableRIGHTOUTERJOIN
BT_DrugTableONBT_DrugPriceTable.DrugID=BT_DrugTable.DrugIDRIGHTOUTERJOIN
PW_OrdonnanceDetailTableONBT_DrugTable.DrugID=PW_OrdonnanceDetailTable.DrugID
WHEREPW_OrdonnanceDetailTable.OrdonnanceID=@OrdonnanceID
union
--查询辅助检查项目(体检项目)
SELECT
LTRIM(RTRIM(1))ASTotalDrug,
LTRIM(RTRIM(0))ASDrugSpecification,
LTRIM(RTRIM(0))ASIssueMedicineUnit,
LTRIM(RTRIM(0))ASWhetherMedicare,
LTRIM(RTRIM(0))ASMedicarePrice,
LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID,
LTRIM(RTRIM(BT_ItemTable.ItemCoding))ASAllICoding,
LTRIM(RTRIM(BT_ItemTable.ItemName))ASAllIName,
isnull(BT_ItemTable.ProjectPrice,0)ASAllIPrice
FROMPW_AuxiliaryItemDetailTableINNERJOIN
BT_ItemTableONPW_AuxiliaryItemDetailTable.AllItemID=BT_ItemTable.ItemID
WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=1
union
--化验项目
SELECT
LTRIM(RTRIM(1))ASTotalDrug,
LTRIM(RTRIM(0))ASDrugSpecification,
LTRIM(RTRIM(0))ASIssueMedicineUnit,
LTRIM(RTRIM(0))ASWhetherMedicare,
LTRIM(RTRIM(0))ASMedicarePrice,
LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID,
LTRIM(RTRIM(BT_AssayItemsTable.AssayItemsNumber))ASAllICoding,
LTRIM(RTRIM(BT_AssayItemsTable.ChineseName))ASAllIName,
isnull(BT_AssayItemsTable.AssayItemsPrice,0)ASAllIPrice
FROMPW_AuxiliaryItemDetailTableINNERJOIN
BT_AssayItemsTableONPW_AuxiliaryItemDetailTable.AllItemID=BT_AssayItemsTable.AssayItemsID
WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=2

--治疗项目
union
SELECTLTRIM(RTRIM(BT_TreatmentItemsTable.TotalInvestment))ASTotalDrug,
LTRIM(RTRIM(0))ASDrugSpecification,
LTRIM(RTRIM(0))ASIssueMedicineUnit,
LTRIM(RTRIM(BT_TreatmentItemsTable.WhetherMedicare))ASWhetherMedicare,
LTRIM(RTRIM(BT_TreatmentItemsTable.MedicarePricing))ASMedicarePrice,
LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID,
LTRIM(RTRIM(BT_TreatmentItemsTable.ItemNumber))ASAllICoding,
LTRIM(RTRIM(BT_TreatmentItemsTable.TreatmentItemName))ASAllIName,
LTRIM(RTRIM(BT_TreatmentItemsTable.GeneralPricing))ASAllIPrice
FROMPW_AuxiliaryItemDetailTableLEFTOUTERJOIN
BT_TreatmentItemsTableONPW_AuxiliaryItemDetailTable.AllItemID=BT_TreatmentItemsTable.TreatmentItemID
WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=3

--体检套餐
union
SELECT
LTRIM(RTRIM(1))ASTotalDrug,
LTRIM(RTRIM(0))ASDrugSpecification,
LTRIM(RTRIM(0))ASIssueMedicineUnit,
LTRIM(RTRIM(0))ASWhetherMedicare,
LTRIM(RTRIM(0))ASMedicarePrice,
LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID,
LTRIM(RTRIM(BT_PhysicalExaminationSetMealTable.SetMealNumber))ASAllICoding,
LTRIM(RTRIM(BT_PhysicalExaminationSetMealTable.PhysicalExaminationSetMealName))ASAllIName,
isnull(BT_PhysicalExaminationSetMealTable.CashPrice,0)ASAllIPrice
FROMPW_AuxiliaryItemDetailTableINNERJOIN
BT_PhysicalExaminationSetMealTableONPW_AuxiliaryItemDetailTable.AllItemID=
BT_PhysicalExaminationSetMealTable.PhysicalExaminationSetMealID
WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=4

--化验组合
union
SELECT
LTRIM(RTRIM(1))ASTotalDrug,
LTRIM(RTRIM(0))ASDrugSpecification,
LTRIM(RTRIM(0))ASIssueMedicineUnit,
LTRIM(RTRIM(0))ASWhetherMedicare,
LTRIM(RTRIM(0))ASMedicarePrice,
LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID,
LTRIM(RTRIM(BT_AssayInspectCombinationTable.CombinationNumber))ASAllICoding,
LTRIM(RTRIM(BT_AssayInspectCombinationTable.CombinationName))ASAllIName,
isnull(BT_AssayInspectCombinationTable.Price,0)ASAllIPrice
FROMPW_AuxiliaryItemDetailTableINNERJOIN
BT_AssayInspectCombinationTableONPW_AuxiliaryItemDetailTable.AllItemID=BT_AssayInspectCombinationTable.AssayInspectCombinationID
WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=5
END

存储过程截图:




[align=left] [/align]

3.2.5.1(图3)
[b](2)、逻辑层代码:[/b]

[OperationContract]
#region 查询处方明细
publicDataSet cboOrdonnanceNumber_SelectedIndexChanged_SelectOrdonnanceDetail(int intOrdonnanceID)
{
SqlParameter[] SQLCMDpas ={
newSqlParameter ("@Type",SqlDbType.Char),
newSqlParameter ("@OrdonnanceID",SqlDbType.Int),
};
SQLCMDpas[0].Value = "cboOrdonnanceNumber_SelectedIndexChanged_SelectOrdonnanceDetail";
SQLCMDpas[1].Value = intOrdonnanceID;
DataTable myDataTable = myDALMethod.QueryDataTable("GuaHaoShouFei_FRM_ShouFeiLuRu", SQLCMDpas);
DataSet myDataSet = newDataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion

(3)、界面层代码:

#region 查询处方明细
DataTable dtOrdonnanceDetail = myFRM_ShouFeiLuRuClient.cboOrdonnanceNumber_SelectedIndexChanged_SelectOrdonnanceDetail(Convert.ToInt32(cboOrdonnanceNumber.SelectedValue)).Tables[0]; //根据处方单号查询处方单。
dgvOrdonnanceDetail.DataSource = dtOrdonnanceDetail;//获取dgvOrdonnanceDetail处方明细信息。
dgvOrdonnanceDetail.ClearSelection();//清空dgvOrdonnanceDetail默认选项。
for (int i = 0; i < dgvOrdonnanceDetail.Rows.Count;) //循环dgvOrdonnanceDetail的行总数
{
if (dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value.ToString () !=""&& dgvOrdonnanceDetail.Rows[i].Cells["AllPrice"].Value.ToString ()!="")  //如果dgvOrdonnanceDetail的用药总量和单价不为空时。
{
dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value = Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value) *
Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["AllIPrice"].Value); // dgvOrdonnanceDetail的总金额=用药总量*单价
}
else
{
if (dgvOrdonnanceDetail.Rows[i].Cells["AllIPrice"].Value != null) //如果金额的值不为空,而用药总量没有(一般是一些检查项目)
{
dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value = Convert.ToInt32(1) * Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["AllIPrice"].Value); // dgvOrdonnanceDetail的总金额=1(一般一个项目值检查一次这里默认为一)*单价
}
else {//如果金额的值为空,而用药总量没有(一般是一些检查项目)
dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value = "0";//总金额为零
}
}
i = i + 1;
}
if (txtDiscount.Text != "")//折扣的文本框不为空
{
decimal Sum = 0; //声明一个小数型变量,并附初次值为0
decimal Sum1 = 0; //声明一个小数变量,并附初次值为0
decimal Sum2 = 0; //声明一个小数变量,并附初次值为0
decimal decMedicarePayMoney = 0;//医保金额?
for (int i = 0; i < dgvOrdonnanceDetail.Rows.Count; i++)
{
if (dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value.ToString() != ""&& dgvOrdonnanceDetail.Rows[i].Cells["MedicarePrice"].Value.ToString() != "") //用药总量和医保金额不为空时。
{
Sum1 += Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value); //总金额1=金额之和
decMedicarePayMoney += Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value) *
Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["MedicarePrice"].Value); //医保金额=用药总量*医保金额
}
else
{
Sum2 += Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value); //总金额2=金额之和
}
Sum = Sum1 + Sum2; //总金额=金额1+总金额2
}
txtMustCharge.Text = (Sum * decMedicarePayMoney).ToString();  //应付金额
txtMedicarePayMoney.Text = decMedicarePayMoney.ToString();//医保馈金额
txtMedicare.Text = decMedicarePayMoney.ToString();//医保馈金额
//现金
txtReceive.Text = (Convert.ToDecimal(txtMoney.Text) + Convert.ToDecimal(txtMedicare.Text) + Convert.ToDecimal(txtCarComeDownWith.Text)).ToString();//收到金额
lblNow.Text = Convert.ToDecimal(Sum * Convert.ToDecimal(0.01)).ToString().Trim (); //本单积分
}
else
{
txtDiscount_TextChanged(null,null);
}
#endregion

2、收费单收费数据处理
(1)、界面层代码:

#region 限制文本框只能输入数字
privatevoid txtMoney_KeyPress(object sender, KeyPressEventArgs e)
{
PublicStaticMothd.XianZhiShuRuShuZi(sender, e);//现金
}
privatevoid txtCarComeDownWith_KeyPress(object sender, KeyPressEventArgs e)
{
PublicStaticMothd.XianZhiShuRuShuZi(sender, e);//卡付
}

privatevoid txtTally_KeyPress(object sender, KeyPressEventArgs e)
{
PublicStaticMothd.XianZhiShuRuShuZi(sender, e);//记账
}
#endregion
#region txtDiscount_TextChanged事件,当文本框值改变是发生。
privatevoid txtDiscount_TextChanged(object sender, EventArgs e)
{
decimal AllSum = 0;
decimal AllSum1 = 0;
decimal AllSum2 = 0;
decimal decMedicarePayMoney = 0;//医保金额?
for (int i = 0; i < dgvOrdonnanceDetail.Rows.Count; i++)
{
if (dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value.ToString() != ""&& dgvOrdonnanceDetail.Rows[i].Cells["MedicarePrice"].Value.ToString() != "")//用药总量和医保金额不为空
{
AllSum1 += Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value); //总金额
decMedicarePayMoney += Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value) *
Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["MedicarePrice"].Value); //医保总金额=用药总量*医保金额
}
else
{
AllSum2 += Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value);  //总金额
}
AllSum = AllSum1 + AllSum2; //最终总金额=总金额1+总金额2
}
#region 价格处理
int Discount = 0;
try
{
Discount = Convert.ToInt32(txtDiscount.Text);
decimal decDiscount = Convert.ToDecimal(Discount) * Convert.ToDecimal(0.01);
txtLastDiscountPay.Text = AllSum.ToString().Trim();//折前应收
txtNextDiscountPay.Text = (AllSum * decDiscount).ToString();//折后收=最终总金额*折扣
txtMedicarePayMoney.Text = decMedicarePayMoney.ToString();//医保金额
txtMedicare.Text = decMedicarePayMoney.ToString();//医保
txtPrivilege.Text = (AllSum - (AllSum * decDiscount)).ToString();//最终总金额-(优惠最终总金额*折扣  )
txtMustCharge.Text = (AllSum * decDiscount).ToString();  //应付金额=最终总金额*折扣=折后收
}
catch(Exception ex)
{ }
#endregion
}
#endregion
#region 卡付TextChanged事件
privatevoid txtCarComeDownWith_TextChanged(object sender, EventArgs e)
{
try
{
txtReceive.Text = (Convert.ToDecimal(txtMoney.Text) + Convert.ToDecimal(txtMedicare.Text) + Convert.ToDecimal(txtCarComeDownWith.Text)).ToString();//受到金额=现金+医保+卡付
if ( Convert.ToDecimal(txtReceive.Text)-Convert.ToDecimal( txtMustCharge.Text ) >0)//收到-应收〉0表示应找
{
txtChange.Text = (Convert.ToDecimal(txtReceive.Text) - Convert.ToDecimal(txtMustCharge.Text)).ToString();//找零=收到-应收
}
else
{
lblChange.Text = "欠费:";
lblChange.ForeColor = Color.Tomato; //颜色为红色
txtChange.Text =  ( Convert.ToDecimal(txtMustCharge.Text) -Convert.ToDecimal(txtReceive.Text)).ToString();//欠费=应收-收到

}
}
catch
{ }
}
#endregion

3.2.5.2查询收费历史处方记录单

点击收费录入主界面(2.2.5.1(图1))的“查询历史“按钮可以弹出查询历史处方记录单的窗体,历史处方记录单可以查询所有的收费的处方单的同时还可以知道每条单据消费的金额,还可以根据处方单号、病人姓名、常用时段等进行多条件查询处方单。

截图如下:




[align=left] [/align]

3.2.5.2(图1)
1、根据常用时段来查询收费单:
(1)、数据库存储过程:
--查询时间段
IF(@Type='FRM_LiShiJiLu_Select_Load_ChaXunTimeSection')
BEGIN
SELECTLTRIM(RTRIM(AttributeDetailsID))ASTimeSectionID,
LTRIM(RTRIM(AttributeDetailsName))ASTimeSection
FROMBT_AttributeDetailsTable
WHEREBT_AttributeDetailsTable.AttributeSetID=41
END

(2)、逻辑层代码:
[OperationContract]
#region 查询时间段
publicDataSet FRM_LiShiJiLu_Select_Load_ChaXunTimeSection()
{
SqlParameter[] SQLCMDpas ={
newSqlParameter ("@Type",SqlDbType.Char),
};
SQLCMDpas[0].Value = "FRM_LiShiJiLu_Select_Load_ChaXunTimeSection";
DataTable myDataTable = myDALMethod.QueryDataTable("GuaHaoShouFei_FRM_ShouFeiLuRu", SQLCMDpas);
DataSet myDataSet = newDataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion

(3)、界面层代码:
#region 时间段查询
privatevoid cboTimeInterval_SelectedIndexChanged(object sender, EventArgs e)
{
DateTime dtpDateNow = DateTime.Now;//声明一个日期变量
DateTime dtpDateNowAddMonth = dtpDateNow.AddMonths(1);
DateTime dtpNowDay = DateTime.Now.Date;//获取今天的日期和时间
string strNowDay = DateTime.Now.Day.ToString();//获取今天日号

if (cboTimeInterval.Text == "今天")//根据今天进行时间日期查询
{
string strYesterday = DateTime.Now.AddDays(-1).ToShortDateString() + " 23:59:59";
string strTomorrow = DateTime.Now.AddDays(1).ToShortDateString() + " 00:00:00";
dtpBeginTime.Text = strYesterday;//把昨天的日期和时间绑定到开始时间的控件上
dtpEndTime.Text = strTomorrow;//把明天的日期和时间绑定到结束时间的控件上
}
if (cboTimeInterval.Text == "昨天")
{
decimal decTheDayBeforeYesterday = Convert.ToDecimal(strNowDay) - 2;//获取前天的日号
//获取前天的日期和时间
string strTheDayBeforeYesterday = DateTime.Now.Year.ToString() + (DateTime.Now.Month > 9 ? "-" + DateTime.Now.Month.ToString() : "-0"
+ DateTime.Now.Month.ToString()) + "-" + decTheDayBeforeYesterday + " 23:59:59";
dtpBeginTime.Text = strTheDayBeforeYesterday;//把前天的日期和时间绑定到开始时间的控件上
dtpEndTime.Text = dtpNowDay.ToString();//把今天的日期和时间绑定到结束时间的控件上
}
if (cboTimeInterval.Text == "本周")
{
int intThisWeek = Convert.ToInt32(dtpDateNow.DayOfWeek.ToString("d"));//根据获取的星期的星期天数转型为整形对应的号码
DateTime dtpStartWeek = dtpDateNow.AddDays(1 - intThisWeek);//获取本周周一
DateTime dtpEndweek = dtpStartWeek.AddDays(6);//获取本周周日
dtpBeginTime.Text = dtpStartWeek.ToString();//把本周周一绑定到开始时间的控件中
dtpEndTime.Text = dtpEndweek.ToString();//把本周周日绑定到结束时间的控件中
}
if (cboTimeInterval.Text == "上周")
{
int intLastWeek = Convert.ToInt32(dtpDateNow.DayOfWeek.ToString("d"));///根据获取的星期的星期天数转型为整形对应的号码
DateTime dtpStartweek = dtpDateNow.AddDays(1 - intLastWeek - 7);  //获取?上周周一
DateTime dtpEndWeek = dtpStartweek.AddDays(6);//获取上周周日
dtpBeginTime.Text = dtpStartweek.ToString(); //把上周周一绑定到开始时间的控件中
dtpEndTime.Text = dtpEndWeek.ToString();//把上周周日绑定到结束时间的控件中
}
if (cboTimeInterval.Text == "本月")
{
string strThisMonthStart=dtpDateNow.AddDays (-(dtpDateNow.Day)+1).ToString("yyyy-MM-dd");//获取本月月初
string strThisMonthEnd = dtpDateNowAddMonth.AddDays(-dtpDateNow.Day).ToString("yyyy-MM-dd");//本月最后一天
dtpBeginTime .Text =strThisMonthStart ;//把本月初绑定到开始时间上
dtpEndTime .Text =strThisMonthEnd;//把本月末绑定到结束时间上
}
if (cboTimeInterval.Text == "上月")
{
string strLastMonthStart = dtpDateNow.AddMonths(-1).AddDays(-(dtpDateNow.Day) + 1).ToString("yyyy-MM-dd");//获取上个月的月初
string strLastMonthEnd = dtpDateNow.AddDays(-(dtpDateNow.Day)).ToString("yyyy-MM-dd");//获取上个月的月末
dtpBeginTime.Text = strLastMonthStart;//把上个月初绑定登记开始时间上
dtpEndTime.Text = strLastMonthEnd;//把上个月末绑定到结束时骸间上
}
if (cboTimeInterval.Text == "本季度")
{
DateTime dtpThisStartQuarter = dtpDateNow.AddMonths(0 - (dtpDateNow.Month - 1) % 3).AddDays(1 - dtpDateNow.Day);//获取本季度初
DateTime dtpThisEndQuarter = dtpDateNow.AddMonths(3).AddDays(-1);//获取本季度末
dtpBeginTime.Text = dtpThisStartQuarter.ToString();//把本季度初绑定到开始时间上
dtpEndTime.Text = dtpThisEndQuarter.ToString();//把本月末绑定到结束时间上
}
if (cboTimeInterval.Text == "上季度")
{
DateTime dtpLastStartQuarter = dtpDateNow.AddMonths(-3 - (dtpDateNow.Month - 1) % 3).AddDays(1 - dtpDateNow.Day);  //上季度初
DateTime dtpLastEndQuarter = dtpLastStartQuarter.AddMonths(3).AddDays(-1);  //上季度末
dtpBeginTime.Text = dtpLastStartQuarter.ToString(); //把上季度初绑定到开始时间上
dtpEndTime.Text = dtpLastEndQuarter.ToString();//把上季度末绑定到结束时间上

}
if (cboTimeInterval.Text == "本年")
{
string strThisYearStart = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();//获取本年初
string strThisYearEnd = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString();//获取本年末
dtpBeginTime.Text = strThisYearStart.ToString(); //把本年初绑定到开始时间上
dtpEndTime.Text = strThisYearEnd.ToString();//把本年末绑定到结束时间上

}
if (cboTimeInterval.Text == "上年")
{
string strLastYearStart = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();//获取上年年初
string strLastYearEnd = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();//获取上年年末
dtpBeginTime.Text = strLastYearStart.ToString();//把上年初绑定到开始时间上
dtpEndTime.Text = strLastYearEnd.ToString();//把上年末绑定到结束时间上
}
}
#endregion


仅供学习,禁止用于商业用途。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: