⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clinicpriceconfirm.cs

📁 用于医院的病人管理
💻 CS
📖 第 1 页 / 共 2 页
字号:
			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 + -