📄 frmbrcf.java
字号:
catch(Exception eYP)
{
System.out.println("getYPXX 中SQL可能产生的错误是: "+eYP.getMessage());
eYP.getStackTrace();
}
txtSL.setFocus();
btnSure.setEnabled(true); //设置"确定"按键的可用性
}
}
/**
* 函数名:getYPMX
* 编写者:郭军,田文涛
* 功 能:得到处方所开药方相应的详细信息!
* 输入参数:
* 输出参数:
* 备 注:
*/
public void getYPMX(String strCFMX)
{
int i=0; //设置一个记数号,返回一共多少条记录!
i=DB.getCFMX(strCFMX);
System.out.println("一共有 "+i+":条记录!");
System.out.println("-----------------------------------------------------------------------------");
txtHJJE.setText("0"); //初始化总价格值为0
if(i>0)
{
table.removeAll(); //删除表格中上次的数据
try
{
getDBMX(); //从数据库中得到药品详细信息(得到rstCF.next()以前的第一条记录,没有此调用,结果会少一行)
while( DB.rstCF.next())
{
getDBMX(); //从数据库中得到药品详细信息(rstCF.next()以后的数据)
}
}
catch(Exception eMX)
{
System.out.println(eMX.getMessage());
}
}
}
/**
* 函数名:getDBMX
* 编写者:郭军,田文涛
* 功 能:从数据库中得到各字段的值,以便getYPMX调用,减少冗余
* 输入参数:
* 输出参数:
* 备 注:
*/
public void getDBMX()
{
String[] lstMX=new String[9];
float fDJ=0; //定义float类型的"单价"
float fCharge=0; //定义float类型的总费用
int iSL=0; //定义Int类型的"数量"
String strSL=null; //定义String的"数量"用来接收中间值
String strDJ=null; //定义String的"单价"用来接收中间值
try
{
lstMX[0]=DB.rstCF.getString("YM"); //取出药名
lstMX[1]=DB.rstCF.getString("YPDJ"); //取出药品单价
lstMX[2]=DB.rstCF.getString("JJDW"); //取出计价单位
lstMX[3]=DB.rstCF.getString("SL"); //取出数量
lstMX[4]=DB.rstCF.getString("JX"); //取出剂型
lstMX[5]=DB.rstCF.getString("GG"); //取出规格
lstMX[6]=DB.rstCF.getString("CD"); //取出产地
lstMX[7]=DB.rstCF.getString("CJ"); //取出厂家
lstMX[8]=DB.rstCF.getString("BZ"); //取出备注
strDJ=lstMX[1]; //接收String类型的单价
strSL=lstMX[3]; //接收String类型的数量
fDJ=Float.parseFloat(strDJ); //转化为float类型
iSL=Integer.parseInt(strSL); //转化为float类型
fCharge=iSL*fDJ;
float fAll=Float.parseFloat(txtHJJE.getText())+fCharge; //计算此单号的总金额并显示
txtHJJE.setText(Float.toString(fAll));
TableItem itemMX = new TableItem(table,SWT.None); //将得到的结果和从数据库中取出的数据加入到表格中
itemMX.setText(new String[] {lstMX[0],lstMX[1],lstMX[2],"",lstMX[3],Float.toString(fCharge),lstMX[4],lstMX[5],lstMX[6],lstMX[7],lstMX[8]});
}
catch(Exception eMX)
{
System.out.println(eMX.getMessage());
}
}
/**
* 函数名:addTableItem
* 编写者:郭军,田文涛
* 功 能:将数据加入到表格中,形成新的一行
* 输入参数:
* 输出参数:
* 备 注:
*/
public void addTableItem()
{
if(cmbYM.getText().length()==0|txtSL.getText().length()==0) //判定药名,数量为空与否
{
showMessage("输入错误","所开药名和数量不能为空!",SWT.ICON_ERROR);
}
else
{
TableItem addItem=new TableItem(table,SWT.None); //新定义一个表项
addItem.setText(new String[]{cmbYM.getText(),txtDJ.getText(),cmbJJDW.getText(),txtYFKC.getText(),txtSL.getText(),txtJE.getText(),txtJX.getText(),txtGG.getText(),txtCD.getText(),txtCJ.getText(),txtBZ.getText()});
countNO++; //项目计数器加1
delTextMX();
btnSave.setVisible(true); //设置"确定"按钮可用
btnSave.setEnabled(true); //设置"保存"按钮可用
btnDel.setEnabled(true); //设置"删除"按钮可用
}
}
/**
* 函数名:loadData
* 编写者:郭军,田文涛
* 功 能:启动 FramBRCF 时加载数据及应用相关设置
* 输入参数:无
* 输出参数:
* 备 注:
*/
public void loadData()
{
cmbCFDH.removeAll(); //处方单号框清空
cmbFYYF.removeAll(); //发药药房清空
String strLB=DB.getUserInfo("UserLB");
//医师显示的界面
if (DB.getUserInfo("UserLB").equals("住院医师"))
{
userType=1;
btnCF.setSelection(true); //如果是住院医师,就置用户标记为1默认值为0
group.setVisible(true); //设置group可见
cmbCFDH.setEnabled(false); //设置组合框"处方单号"为不可用
cmbCFDH.setText(createCFDH()); //调用creatCFDH函数,自动生成CFDH
txtHJJE.setText("0");
//cmbFYYF.setText(DB.getUserInfo("YYYF"));
txtKDKS.setText(DB.getUserInfo("YYYF")); //从数据库中取出用户所在的科室
txtCFYS.setText(DB.getUserInfo("UserID")); //从数据库中取出用户ID号
txtCFRQ.setText(DB.getNowDate()); //取出当前日期
disEnable(); //使相对应的控件不可用
txtBRXM.setEditable(true); //设置病人姓名可编辑
txtBRXB.setEditable(true); //设置病人性别可编辑
txtBRNL.setEditable(true); //设置病人年龄可编辑
btnSure.setEnabled(false); //设置"确定"按钮不可用
btnDel.setEnabled(false); //设置"删除"按钮不可用
btnSave.setEnabled(false); //设置"保存"按钮不可用
btnCancel.setEnabled(false); //设置"取消"按钮不可用
txtDJ.setEnabled(false); //设置单价不可编辑
txtYFKC.setEnabled(false); //设置处方库存不可编辑
txtJE.setEnabled(false); //设置金额不可编辑
txtJX.setEnabled(false); //设置剂型不可编辑
txtGG.setEnabled(false); //设置规格不可编辑
txtCD.setEnabled(false); //设置产地不可编辑
txtCJ.setEnabled(false); //设置厂家不可编辑
btnFY.setEnabled(false); //设置发药选项不可用
btnCF.setEnabled(true); //设置处方可用
txtBRXM.setFocus(); //聚集于病人姓名
}
//发药人显示的界面
else
{
//对相应的控件设置可用性
disEnable();
btnFY.setSelection(true);
btnCF.setEnabled(false);
btnFY.setSelection(true);
group.setVisible(false); //设置Group为不可见!
delTextCF(); //清空文本框中上次的数据
//加载登录者的个人信息(ID和所在部门)
txtFYR.setText(DB.getUserInfo("UserID"));
cmbFYYF.setText(DB.getUserInfo("YYYF"));
txtFYRQ.setText(DB.getNowDate()); //显示日期
getNotFY(); //显示没有发药的处方号
table.removeAll(); //清空表格中的数据
getBRCF(cmbCFDH.getText()); //得到处方详细信息
getYPMX(cmbCFDH.getText()); //得到药品明细
}
String str=DB.getUserInfo("UserID");
System.out.println("当前的用户是: "+str);
}
/**
* 函数名:showMessage
* 编写者:郭军,田文涛
* 功 能:加载数据及应用相关设置
* 输入参数:标题,信息,报警类型
* 输出参数:返回值
* 备 注:
*/
private int showMessage(String title,String message,int flag)
{
int retFlag; //定义一个返回值的接收变量
MessageBox msgbox=new MessageBox(shell,flag);
msgbox.setText(title); //设置消息的桂标题
msgbox.setMessage(message); //设置消息的内容
retFlag=msgbox.open();
return retFlag;
}
/**
* 函数名:calculateTable
* 编写者:郭军,田文涛
* 功 能:计算表格中的单价与数量的乘积
* 输入参数:
* 输出参数:
* 备 注:
*/
private void calculateTable()
{
float price=0; //定义float类型的变量用于接收单价
float ret=0; //定义float类型的变量用于接收总的价格
int num=0; //定义INT类型的变量用于接收数量
price=Float.parseFloat(txtDJ.getText());
if(txtSL.getText().length()==0)
{
showMessage("错误!","数量不能为空!!",SWT.OK|SWT.ICON_ERROR);
txtSL.setFocus(); //聚集于药品数量
btnSure.setEnabled(false); //确定按钮不可用
}
else
{
num=Integer.parseInt(txtSL.getText()); //得到INT型的数量
ret=price*num; //计算总金额
txtJE.setText(Float.toString(ret)); //在金额中显示
btnSure.setEnabled(true); //确定按钮可用
}
}
/**
* 函数名:calculateAll
* 编写者:郭军,田文涛
* 功 能:计算处方中所有药品的价格总和
* 输入参数:
* 输出参数:
* 备 注:
*/
private void calculateAll()
{
float all=0; //定义FLOAT类型的总金额
float fTable=0; //定义FLOAT类型的变量取出表格中的金额
all=Float.parseFloat(txtHJJE.getText()); //取出处方单中的合计金额
fTable=Float.parseFloat(txtJE.getText()); //取出表格中的合计金额
all=all+fTable; //相加
txtHJJE.setText(Float.toString(all)); //显示在处方单中的合计金额中
}
/**`
* 函数名:editEntry
* 编写者:郭军,田文涛
* 功 能:将表格中的数据显示到相应的文本框中
* 输入参数:表格中的数据
* 输出参数:
* 备 注:
*/
private void editEntry(TableItem item)
{
table.setVisible(true); //设置表格可见
cmbYM.setText(item.getText(0)); //显示药名
txtDJ.setText(item.getText(1)); //显示单价
cmbJJDW.setText(item.getText(2)); //显示计价单位
txtYFKC.setText(item.getText(3)); //显示药房库存
txtSL.setText(item.getText(4)); //显示数量
txtJE.setText(item.getText(5)); //显示金额
txtJX.setText(item.getText(6)); //显示剂型
txtGG.setText(item.getText(7)); //显示规格
txtCD.setText(item.getText(8)); //显示产地
txtCJ.setText(item.getText(9)); //显示厂家
txtBZ.setText(item.getText(10)); //显示备注
cmbYM.setFocus(); //设置焦点在药名文本筐上
}
/**`
* 函数名:saveTable
* 编写者:郭军,田文涛
* 功 能:将表格中的数据保存在数据库中
* 输入参数:表格中的数据
* 输出参数:
* 备 注:
*/
private void saveTable()
{
TableItem[] itemSave = table.getItems(); //定义一个数组
String[] lstTable=new String[5]; //初始化
for (int i=0; i<table.getItemCount();i++)
{
lstTable[0]=cmbCFDH.getText();
lstTable[1]=Integer.toString(i+1); //取出编号
lstTable[2]="000001"; //itemSave.getText();药品内码
lstTable[3]=itemSave[i].getText(2); //取出计价单位
lstTable[4]=itemSave[i].getText(4); //取出数量
DB.saveTable(lstTable); //传入lstTable,在数据库中保存数据
}
}
/**`
* 函数名:removeTable
* 编写者:郭军,田文涛
* 功 能:将表格中的数据从表格中删除
* 输入参数:表格中的数据
* 输出参数:
* 备 注:
*/
private void removeTable()
{
int itemIndex=table.getSelectionIndex(); //获得所选择的表格中的行
TableItem[] item=table.getItems();
int countTable=table.getItemCount(); //得到表格中的列
if(countTable==0)
{
btnSure.setEnabled(false); //确定按钮不可用
btnDel.setEnabled(false); //删除按钮不可用
btnSave.setEnabled(false); //保存按钮不可用
btnCancel.setEnabled(false); //取消按钮不可用
}
else
{
item[itemIndex].dispose(); //删除所选择的行
System.out.println("删除的行数为: "+countTable);//打印消息
}
}
/**
* 函数名:disEnable
* 编写者:郭军,田文涛
* 功 能:设置文本元素为不可编辑
* 输入参数:
* 输出参数:
* 备 注:
*/
private void disEnable()
{
txtKDKS.setEditable(false); //设置"开单科室"不可编辑
cmbFYYF.setEnabled(false); //设置"发药药房"不可编辑
txtBRXM.setEditable(false); //设置"病人姓名"不可编辑
txtBRXB.setEditable(false); //设置"病人性别"不可编辑
txtBRNL.setEditable(false); //设置"病人年龄"不可编辑
txtCFYS.setEditable(false); //设置"发药医师"不可编辑
txtCFRQ.setEditable(false); //设置"处方日期"不可编辑
txtHJJE.setEditable(false); //设置"计价金额"不可编辑
txtFYR.setEditable(false); //设置"发药人"不可编辑
txtFYRQ.setEditable(false); //设置"发药日期"不可编辑
}
/**
* 函数名:unDisplay
* 编写者:郭军,田文涛
* 功 能:设置group的可显示性
* 输入参数:
* 输出参数:
* 备 注:
*/
private void unDisplay()
{
group.setVisible(false); //设置group不可见
/* cmbYM.setVisible(false);
txtDJ.setVisible(false);
cmbJJDW.setVisible(false);
txtYFKC.setVisible(false);
txtSL.setVisible(false);
txtJE.setVisible(false);
txtJX.setVisible(false);
txtGG.setVisible(false);
txtCD.setVisible(false);
txtCJ.setVisible(false);
txtBZ.setVisible(false);*/
}
/**
* 函数名:delTextCF
* 编写者:郭军,田文涛
* 功 能:删除CF文本中以前的数据
* 输入参数:
* 输出参数:
* 备 注:
*/
private void delTextCF()
{
// cmbCFDH.setText("");
txtKDKS.setText(""); //清空 开单科室
cmbFYYF.setText(""); //清空 发药药房
txtBRXM.setText(""); //清空 病人姓名
txtBRXB.setText(""); //清空 病人性别
txtBRNL.setText(""); //清空 病人年龄
txtCFYS.setText(""); //清空 处方医师
txtCFRQ.setText(""); //清空 处方日期
txtHJJE.setText(""); //清空 合计金额
txtFYR.setText(""); //清空 发药人
txtFYRQ.setText(""); //清空 发药日期
}
/**
* 函数名:delTextMX
* 编写者:郭军,田文涛
* 功 能:删除group文本中以前的数据
* 输入参数:
* 输出参数:
* 备 注:
*/
private void delTextMX()
{
cmbYM.setText(""); //清空 药名
txtDJ.setText(""); //清空 单价
cmbJJDW.setText(""); //清空 计价单位
txtYFKC.setText(""); //清空 药房库存
txtSL.setText(""); //清空 数量
txtJE.setText(""); //清空 金额
txtJX.setText(""); //清空 剂型
txtGG.setText(""); //清空 规格
txtCD.setText(""); //清空 产地
txtCJ.setText(""); //清空 厂家
txtBZ.setText(""); //清空 备注
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -