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

C#药品采购

2020-08-15 17:51 1801 查看

药品采购

效果

C#药品采购

实现

1.新建方法Display(),用来刷新datagridview:

public void Display()
{
if (trole.Text.Trim() == "工程师")
{
string sql = "select number,weishengyuan,caigoushijian,work,yaopin,jixing,guige,danwei,chandi,youxiaoriqi,danjia,shuliang,jine from Table_yaopincaigou where work = '工程师'";
SqlDataAdapter dataAdaptergcs = new SqlDataAdapter(sql, DBHelper.conStr);   //定义一个dataAdapter
dataAdaptergcs.Fill(dataSet, "Table_yaopincaigou");   //填充数据集
dataGridView1.DataSource = dataSet.Tables["Table_yaopincaigou"];  //填充数据进控件
}
if (trole.Text.Trim() == "卫生院药房")
{
string sql = "select number,weishengyuan,caigoushijian,work,yaopin,jixing,guige,danwei,chandi,youxiaoriqi,danjia,shuliang,jine from Table_yaopincaigou where weishengyuan = '" + tweishengyuan.Text + "'";
SqlDataAdapter dataAdaptergcs = new SqlDataAdapter(sql, DBHelper.conStr);   //定义一个dataAdapter
dataAdaptergcs.Fill(dataSet, "Table_yaopincaigou");   //填充数据集
dataGridView1.DataSource = dataSet.Tables["Table_yaopincaigou"];  //填充数据进控件
}
if (trole.Text.Trim() == "村医")
{
string sql = "select number,weishengyuan,caigoushijian,work,yaopin,jixing,guige,danwei,chandi,youxiaoriqi,danjia,shuliang,jine from Table_yaopincaigou where weishengyuan = '" + tweishengyuan.Text + "' and work = '" + twork.Text + "'";
SqlDataAdapter dataAdaptergcs = new SqlDataAdapter(sql, DBHelper.conStr);   //定义一个dataAdapter
dataAdaptergcs.Fill(dataSet, "Table_yaopincaigou");   //填充数据集
dataGridView1.DataSource = dataSet.Tables["Table_yaopincaigou"];  //填充数据进控件
}
}

1.药品查询:输入药品首字母,即可弹出相应药品。
(https://blog.csdn.net/weixin_44523029/article/details/107882835博客中演示的是医疗保险定点结算中的查询,效果一样)

2.药品拖拽:选择要采购的药品,拖入采购单中。
(https://blog.csdn.net/weixin_44523029/article/details/107565968博客中演示的是医疗保险定点结算中的拖拽,效果一样)

注意上图右下角的总计,拖入药品并输入数量,总计会相应显示,上面的博客链接中的第5点中的代码textBox7就是总计。
3.采购。
(1)首先有一个数量不准为0的验证(拖入的时候,默认是0):

for (int row = 0; row < dataGridView2.Rows.Count; row++)
{
if (this.dataGridView2.Rows[row].Cells[9].Value.ToString() == "0")
{
MessageBox.Show("请输入数量!", "提示");
return;
}
}

(2)然后有一个采购单不准为空的验证:

if (dataGridView2.Rows.Count == 0)
{
MessageBox.Show("请选择药品!", "提示");
return;
}

(3)如果以上满足,开始采购。
①for循环读取每行药品数据:

for (int i = 0; i < dataGridView2.Rows.Count; i++){}
(以下②-⑤皆是在for循环下进行)
②新建string值=行中的数据,例:
string sweishengyuan = this.dataGridView2.Rows[i].Cells[0].Value.ToString();//卫生院

③如果是卫生院进行采购,就直接进行sql语句
update 表 set kucun = kucun + '" + Convert.ToInt32(sshuliang) + "' where ...限制条件(比如单位、药品名、规格、有效期什么的,用第②步中新建的值表示)
库存更新,把新购入的数量加上去,然后用sql语句
insert into 表 values (第②步中新建的值)
把药品采购记录添加到历史采购表中。
如果是村医进行采购,将药品用sql语句insert添加到药品采购表中(这个药品采购表就是采购单,相当于一个临时表)
④拖入一个空的textBox,令这个textBox=总计,只有这个不为空,才能导出(为什么不直接用总计的那个textBox:因为拖入的时候总计那里直接是0,不为空)(https://blog.csdn.net/weixin_44523029/article/details/107735212导出可以看一下这个)
⑤然后刷新一个库存表,因为卫生院是直接库存增加的,所以这里刷新一下库存表:

dataSet.Tables["Table_yaopin"].Clear();
Display();

⑥for循环外进行一个信息提示:

MessageBox.Show("采购成功!", "提示");

(4)村医药品采购单录入完后,卫生院进行采购单确认。

①新建一个ArrayList:

ArrayList arraylist = new ArrayList();

②新建int值=表中的行数,新建while循环:
while (i >= 0){}
,只有存在药品时,while循环(以下④-⑤皆是while循环中)
③在while循环中,新建string值=列数据
④如果复选框选中了:
if (Convert.ToInt32(dataGridView1.Rows[i].Cells["xuanze"].Value) == 1)
,则
arraylist.Add(Convert.ToInt32(dataGridView1.Rows[i].Cells["xuanze"].Value));

如果卫生院没有某药品:首先用select查询一下,如果查不到,则先i- -,然后continue跳出循环,进行下一个药品。
如果存在库存不足的药品,则提示某药品库存不足,其他药品成功,也是i- -,continue跳出循环。
如果库存充足,村医库存更新update,卫生院库存减少update,订单传入历史采购表中insert,删除采购单中的本药品delete
⑤然后i- -。
⑥采购单药品复选框的验证:

if (arraylist.Count == 0)
{
MessageBox.Show("请选择药品!","提示");
return;
}

⑦然后进行一个右下角总计的更新。
⑧更新采购单,信息提示

MessageBox.Show("操作成功!","提示");
,全选的复选框取消选择
checkBox1.Checked = false;

⑨全选的一个设置,如果点击全选复选框,则datagridview中的复选框全部勾选;反之,全部取消勾选:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (this.checkBox1.Checked == true)
{
for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
{
this.dataGridView1.Rows[i].Cells["xuanze"].Value = 1;
}
}
else
{
for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
{
this.dataGridView1.Rows[i].Cells["xuanze"].Value = 0;
}
}
}

4.完成。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: