📄 clinicpriceconfirm.cs
字号:
this.dataGrid2.Name = "dataGrid2";
this.dataGrid2.ReadOnly = true;
this.dataGrid2.Size = new System.Drawing.Size(560, 144);
this.dataGrid2.TabIndex = 6;
this.dataGrid2.Visible = false;
this.dataGrid2.DoubleClick += new System.EventHandler(this.dataGrid2_DoubleClick);
//
// sqlSelectCommand1
//
this.sqlSelectCommand1.CommandText = "SELECT 编号, 病人编号, 姓名, 性别, 挂号科室, 费用类型, 挂号类型, 挂号费用, 医生, 时间, 是否已划价 FROM 门诊挂号 WHERE (是" +
"否已划价 = \'否\')";
this.sqlSelectCommand1.Connection = this.sqlConnection1;
//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = "workstation id=localhost;packet size=4096;integrated security=SSPI;data source=\"." +
"\";persist security info=False;initial catalog=hisbook";
//
// sqlSelectCommand2
//
this.sqlSelectCommand2.CommandText = "SELECT 编号, 名称, 规格, 单位, 单价, 拼音码 FROM v收费项目及药品";
this.sqlSelectCommand2.Connection = this.sqlConnection1;
//
// ClinicPriceConfirm
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(704, 517);
this.Controls.Add(this.dataGrid2);
this.Controls.Add(this.dataGrid3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.dataGrid1);
this.Controls.Add(this.groupBox1);
this.Name = "ClinicPriceConfirm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "【门诊划价】";
this.Load += new System.EventHandler(this.ClinicPriceConfirm_Load);
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataSet21)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.groupBox2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGrid3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataView1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataGrid2)).EndInit();
this.ResumeLayout(false);
}
#endregion
//--------------读入全部信息-----------------
private void ClinicPriceConfirm_Load(object sender, System.EventArgs e)
{
da1.Fill(dataSet21);
da2.Fill(dataSet21);
this.DataGridStateControl();
//每当表格中数据变化时,计算金额
newTable.RowChanged+=new DataRowChangeEventHandler(newTable_RowChanged);
}
//----------设置明细表格各列的属性----------
private void DataGridStateControl()
{
newTable = new DataTable();
newTable.Columns.Add("编号",typeof(string));
newTable.Columns.Add("名称",typeof(string));
newTable.Columns.Add("规格",typeof(string));
newTable.Columns.Add("单位",typeof(string));
newTable.Columns.Add("单价",typeof(decimal));
newTable.Columns.Add("数量",typeof(int));
newTable.Columns.Add("金额",typeof(decimal),"单价*数量");
this.dataGrid1.DataSource = newTable;
DataGridTableStyle ts = new DataGridTableStyle();
DataGridTextBoxColumn aColumnTextColumn;
ts.AllowSorting = false;
ts.AlternatingBackColor = Color.LightGray;
ts.MappingName = newTable.TableName;
int numCols = newTable.Columns.Count;
for (int i = 0;i< numCols;i++)
{
aColumnTextColumn = new DataGridTextBoxColumn();
if( i==5 )//表中只允许编辑【数量】字段
{
aColumnTextColumn.ReadOnly=false;
}
else
{
aColumnTextColumn.ReadOnly=true;
}
if (i == 0)//当在第0列中输入后并按enter后,允许响应
{
aColumnTextColumn.TextBox.DoubleClick+=new EventHandler(TextBox_DoubleClick);
}
if(i==0)
{
aColumnTextColumn.Width=130;//设置药品编号字段宽度
}
if ( i == 1 )
{
aColumnTextColumn.Width = 150;//设置药品名称字段宽度
}
aColumnTextColumn.MappingName = newTable.Columns[i].ColumnName;
aColumnTextColumn.HeaderText = newTable.Columns[i].ColumnName;
if(i==0)
{
aColumnTextColumn.HeaderText ="编号【双击输入拼音】";
}
aColumnTextColumn.NullText = "";
aColumnTextColumn.Format = "N"; //设置为数字格式显示
ts.GridColumnStyles.Add(aColumnTextColumn);
}
dataGrid1.TableStyles.Add(ts);
}
//-----------显示选择已经挂号但还未划价的病人名单----------
private void cmb1_DropDown(object sender, System.EventArgs e)
{
this.clearInfo();//先清空信息
dataGrid2.Left=cmb1.Left;//设置表格位置
dataGrid2.Top=cmb1.Bottom+2;
dataGrid2.Visible=true;//显示表格
dataGrid2.Show();
dataGrid2.Focus();
}
//------------双击病人清单,选择门诊挂号记录------------
private void dataGrid2_DoubleClick(object sender, System.EventArgs e)
{
int rowIndex=dataGrid2.CurrentCell.RowNumber;
cmb1.Text=dataGrid2[rowIndex,0].ToString().Trim();//病人编号
txt1.Text=dataGrid2[rowIndex,2].ToString().Trim();//姓名
txt2.Text=dataGrid2[rowIndex,3].ToString().Trim();//性别
txt3.Text=dataGrid2[rowIndex,4].ToString().Trim();//挂号科室
txt4.Text=dataGrid2[rowIndex,8].ToString().Trim();//挂号医生
dataGrid2.Visible=false;
}
//---------双击编号栏输入拼音后,显示药品和医疗项目表格-----------
private void TextBox_DoubleClick(object sender, EventArgs e)
{
string pym;//通过输入框输入拼音码
InputBox newfrm = new InputBox();
newfrm.label1.Text = "请输入药品或收费项目的拼音码:";
newfrm.Text="输入";
newfrm.Top=this.Top+this.Height/2;
newfrm.Left=this.Left+this.Width/2;
newfrm.ShowDialog();
pym = newfrm.result;
newfrm.Dispose();
dataView1.RowFilter="拼音码 like '%"+pym+"%'";
dataGrid3.Left=dataGrid1.Left+10;
dataGrid3.Top=(dataGrid1.CurrentCell.RowNumber+1)*17+20+dataGrid1.Top;
if(dataView1.Count!=0)
{
dataGrid3.Visible=true;//显示表格
dataGrid3.Show();
dataGrid3.Focus();
}
}
//-----------双击药品和收费项目清单,添加划价明细--------------
private void dataGrid3_DoubleClick(object sender, System.EventArgs e)
{
int rowIndex=dataGrid3.CurrentCell.RowNumber;//药品和收费清单表格中当前行号
DataRow aRow=newTable.NewRow();
aRow["编号"]=dataGrid3[rowIndex,0].ToString();//输入编号
aRow["名称"]=dataGrid3[rowIndex,1].ToString();//输入名称
aRow["规格"]=dataGrid3[rowIndex,2].ToString();//输入规格
aRow["单位"]=dataGrid3[rowIndex,3].ToString();//输入单位
aRow["单价"]=Convert.ToDecimal(dataGrid3[rowIndex,4]).ToString();//输入单价
newTable.Rows.Add(aRow);
dataGrid3.Visible=false;//隐藏表格
}
//--------计算合计金额----------
private void sumMoney()
{
decimal total=0;//总金额
foreach(DataRow aRow in newTable.Rows)
{
if(aRow["金额"].ToString().Trim()!="")
{
total+=Convert.ToDecimal(aRow["金额"]);
}
}
txt5.Text=total.ToString();
}
//---------每当明细表发生变化,则计算总计金额------------
private void newTable_RowChanged(object sender, DataRowChangeEventArgs e)
{
this.sumMoney();
}
//-----------保存成功或取消后,设置窗体中文本框等的显示----------
private void clearInfo()
{
newTable.Clear();
txt1.Clear();
txt2.Clear();
txt3.Clear();
txt4.Clear();
txt5.Clear();
cmb1.Text="";
}
//---------在新增信息时,根据sql语句计算并设置新的门诊挂号编号和病人信息---------
private string CreateNewID(string sql)
{
string strConn="workstation id=localhost;Integrated Security=SSPI;database=hisbook;";
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
SqlCommand cmb=cn.CreateCommand();
cmb.CommandText=sql;
string result;
if(cmb.ExecuteScalar()!=System.DBNull.Value)
{
result=cmb.ExecuteScalar().ToString().Trim();
}
else
{
return(System.DateTime.Now.Year.ToString()+"0000001");//命名规则为年份+7位编号
}
result=result.Substring(4,7);
int newID=Convert.ToInt32(result)+1;
int length=newID.ToString().Length;
string returnStr=System.DateTime.Now.Year.ToString();
switch(length)//生成新的编码
{
case 1:
returnStr+="000000"+newID.ToString();
break;
case 2:
returnStr+="00000"+newID.ToString();
break;
case 3:
returnStr+="0000"+newID.ToString();
break;
case 4:
returnStr+="000"+newID.ToString();
break;
case 5:
returnStr+="00"+newID.ToString();
break;
case 6:
returnStr+="0"+newID.ToString();
break;
case 7:
returnStr+=newID.ToString();
break;
}
return(returnStr);
}
//-------------保存门诊划价记录---------------
private void btnOK_Click(object sender, System.EventArgs e)
{
//先检查是否输入完全
if(cmb1.Text=="")
{
MessageBox.Show("请先选择门诊号","提示",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
if(newTable.Rows.Count==0)
{
MessageBox.Show("请填写药品和收费项目明细表","提示",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
foreach(DataRow aRow in newTable.Rows)//逐行检查明细数据是否已经全部输入了数量
{
if(aRow["金额"].ToString().Trim()=="")
{
MessageBox.Show("请填写药品或收费项目数量","提示",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
}
string strConn="workstation id=localhost;Integrated Security=SSPI;database=hisbook;";
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
SqlCommand cmd=cn.CreateCommand();
string newID=this.CreateNewID("select max(编号) 最大编号 from 门诊划价");//计算新的门诊划价编号
//保存门诊划价数据
string insertStr="insert into 门诊划价([编号], [科室], [挂号编号], [医生], [划价时间],"
+"[是否收费], [划价金额], [是否发药]) values('"+newID+"','"+txt3.Text+"','"+cmb1.Text
+"','"+txt4.Text+"','"+System.DateTime.Now.ToString()+"','否',CAST('"+txt5.Text+"' as money)"
+",'否')";
try
{
cmd.CommandText=insertStr;
cmd.ExecuteNonQuery();
}
catch(Exception express)
{
MessageBox.Show(express.ToString(),"新增门诊挂号错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
foreach(DataRow aRow in newTable.Rows)//保存明细
{
insertStr="insert into 门诊划价明细([划价编号], [药品编号], [单价], [数量], [金额]) "
+"values('"+newID+"','"+aRow["编号"].ToString()+"','"+aRow["单价"].ToString()+"','"
+aRow["数量"].ToString()+"','"+aRow["金额"].ToString()+"')";
try
{
cmd.CommandText=insertStr;
cmd.ExecuteNonQuery();
}
catch(Exception express)
{
MessageBox.Show(express.ToString(),"新增门诊明细错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
}
cmd.CommandText="update 门诊挂号 set 是否已划价='是' where 编号='"+cmb1.Text+"'";//记录已经划价的门诊挂号
cmd.ExecuteNonQuery();
this.clearInfo();
dataSet21.Clear();//刷新数据集
da1.Fill(dataSet21);
da2.Fill(dataSet21);
}
//------------取消保存------------
private void btnCancel_Click(object sender, System.EventArgs e)
{
this.clearInfo();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -