少
少爷的拐杖
Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm7.SpeedButton7Click(Sender: TObject);
var
i,loop:integer;
begin
if application.MessageBox('可以将出库清单中的药品入二级库吗?','药品出库登记',mb_yesno+mb_iconquestion)=6 then
begin
loop:=ListView2.Items.Count-1;
Form1.Database1.StartTransaction;
try
for i:=0 to loop do
begin
showmessage('当前行号'+inttostr(i));
//修改基本药品库
UpData_Xiyao_ku_out.ParamByName('库存').AsInteger:=StrToInt(Listview2.Items.Item.SubItems.Strings[4]);
UpData_Xiyao_ku_out.ParamByName('OLD_药品名称').AsString:=Listview2.Items.Item.Caption;
UpData_Xiyao_ku_out.ParamByName('OLD_规格').AsString:=Listview2.Items.Item.SubItems.Strings[0];
UpData_Xiyao_ku_out.ParamByName('OLD_单位').AsString:=Listview2.Items.Item.SubItems.Strings[1];
Updata_Xiyao_ku_out.ExecSQL;
showmessage(inttostr(i)+'---'+'修改基本药库通过!');
//登记出库单据
Updata_Xiyao_out.ParamByName('药品名称').AsString:=ListView2.Items.Item.Caption;
Updata_Xiyao_out.ParamByName('规格').AsString:=Listview2.Items.Item.SubItems.Strings[0];
Updata_Xiyao_out.ParamByName('单位').AsString:=Listview2.Items.Item.SubItems.Strings[1];
Updata_Xiyao_out.ParamByName('批发价').AsFloat:=StrToFloat(Listview2.Items.Item.SubItems.Strings[2]);
Updata_Xiyao_out.ParamByName('零售价').AsFloat:=StrToFloat(Listview2.Items.Item.SubItems.Strings[3]);
Updata_Xiyao_out.ParamByName('出库数量').AsInteger:=StrToInt(Listview2.Items.Item.SubItems.Strings[4]);
Updata_Xiyao_out.ParamByName('药品去向').AsString:=Listview2.Items.Item.SubItems.Strings[5];
Updata_Xiyao_out.ParamByName('出库日期').AsDateTime:=StrToDate(Listview2.Items.Item.SubItems.Strings[6]);
Updata_Xiyao_out.ExecSQL;
showmessage(inttostr(i)+'---'+'修改出药库通过!');
//修改二级药品库
Query_Set.Close;
Query_Set.SQL.Clear;
Query_Set.SQL.Add('select count(药品名称) from XiYao_ku_Second');
Query_Set.SQL.Add('where 药品名称='''+ListView2.Items.Item.Caption+'''');
Query_Set.SQL.Add('and 规格='''+Listview2.Items.Item.SubItems.Strings[0]+'''');
Query_Set.SQL.Add('and 单位='''+Listview2.Items.Item.SubItems.Strings[1]+'''');
Query_Set.Open;
if Query_Set.Fields.Fields[0].AsInteger>0 then
begin //药品已经存在,修改数据
Updata_Query_Second.Close;
Updata_Query_Second.SQL.Clear;
Updata_Query_Second.SQL.Text:=ListBox2.Items.Strings[0];
Updata_Query_Second.ParamByName('OLD_药品名称').AsString:=Listview2.Items.Item.Caption;
Updata_Query_Second.ParamByName('OLD_规格').AsString:=Listview2.Items.Item.SubItems.Strings[0];
Updata_Query_Second.ParamByName('OLD_单位').AsString:=Listview2.Items.Item.SubItems.Strings[1];
end
else //药品不存在,新增加数据
begin
Updata_Query_Second.Close;
Updata_Query_Second.SQL.Clear;
Updata_Query_Second.SQL.Text:=Listbox2.Items.Strings[1];
end;
Updata_Query_Second.ParamByName('药品名称').AsString:=ListView2.Items.Item.Caption;
Updata_Query_Second.ParamByName('规格').AsString:=Listview2.Items.Item.SubItems.Strings[0];
Updata_Query_Second.ParamByName('单位').AsString:=Listview2.Items.Item.SubItems.Strings[1];
Updata_Query_Second.ParamByName('库存').AsInteger:=StrToInt(Listview2.Items.Item.SubItems.Strings[4]);
Updata_Query_Second.ParamByName('批发价').AsFloat:=StrToFloat(Listview2.Items.Item.SubItems.Strings[2]);
Updata_Query_Second.ParamByName('零售价').AsFloat:=StrToFloat(Listview2.Items.Item.SubItems.Strings[3]);
Updata_Query_Second.ParamByName('有效期').AsDateTime:=StrToDate(Listview2.Items.Item.SubItems.Strings[7]);
Updata_Query_Second.ParamByName('拥有单位').AsString:=Listview2.Items.Item.SubItems.Strings[5];
Updata_Query_Second.ParamByName('类别').AsString:=Listview2.Items.Item.SubItems.Strings[8];
Updata_Query_Second.ExecSQL;
showmessage(inttostr(i)+'---'+'修改二级药库通过!');
end;
except //写入时发生错误
Form1.Database1.Rollback;
showmessage('错误!');
exit;
end;
Form1.Database1.Commit;
ListView2.Items.Clear;
end;
end;
我加了很多showmessage()看看那儿执行错误。看到循环的第一次顺利完成。
可是到了第二次就出了问题了。只能显示出第一个showmessage。
可是我看了半天也看不出来那里错了。
大家帮帮忙吧
var
i,loop:integer;
begin
if application.MessageBox('可以将出库清单中的药品入二级库吗?','药品出库登记',mb_yesno+mb_iconquestion)=6 then
begin
loop:=ListView2.Items.Count-1;
Form1.Database1.StartTransaction;
try
for i:=0 to loop do
begin
showmessage('当前行号'+inttostr(i));
//修改基本药品库
UpData_Xiyao_ku_out.ParamByName('库存').AsInteger:=StrToInt(Listview2.Items.Item.SubItems.Strings[4]);
UpData_Xiyao_ku_out.ParamByName('OLD_药品名称').AsString:=Listview2.Items.Item.Caption;
UpData_Xiyao_ku_out.ParamByName('OLD_规格').AsString:=Listview2.Items.Item.SubItems.Strings[0];
UpData_Xiyao_ku_out.ParamByName('OLD_单位').AsString:=Listview2.Items.Item.SubItems.Strings[1];
Updata_Xiyao_ku_out.ExecSQL;
showmessage(inttostr(i)+'---'+'修改基本药库通过!');
//登记出库单据
Updata_Xiyao_out.ParamByName('药品名称').AsString:=ListView2.Items.Item.Caption;
Updata_Xiyao_out.ParamByName('规格').AsString:=Listview2.Items.Item.SubItems.Strings[0];
Updata_Xiyao_out.ParamByName('单位').AsString:=Listview2.Items.Item.SubItems.Strings[1];
Updata_Xiyao_out.ParamByName('批发价').AsFloat:=StrToFloat(Listview2.Items.Item.SubItems.Strings[2]);
Updata_Xiyao_out.ParamByName('零售价').AsFloat:=StrToFloat(Listview2.Items.Item.SubItems.Strings[3]);
Updata_Xiyao_out.ParamByName('出库数量').AsInteger:=StrToInt(Listview2.Items.Item.SubItems.Strings[4]);
Updata_Xiyao_out.ParamByName('药品去向').AsString:=Listview2.Items.Item.SubItems.Strings[5];
Updata_Xiyao_out.ParamByName('出库日期').AsDateTime:=StrToDate(Listview2.Items.Item.SubItems.Strings[6]);
Updata_Xiyao_out.ExecSQL;
showmessage(inttostr(i)+'---'+'修改出药库通过!');
//修改二级药品库
Query_Set.Close;
Query_Set.SQL.Clear;
Query_Set.SQL.Add('select count(药品名称) from XiYao_ku_Second');
Query_Set.SQL.Add('where 药品名称='''+ListView2.Items.Item.Caption+'''');
Query_Set.SQL.Add('and 规格='''+Listview2.Items.Item.SubItems.Strings[0]+'''');
Query_Set.SQL.Add('and 单位='''+Listview2.Items.Item.SubItems.Strings[1]+'''');
Query_Set.Open;
if Query_Set.Fields.Fields[0].AsInteger>0 then
begin //药品已经存在,修改数据
Updata_Query_Second.Close;
Updata_Query_Second.SQL.Clear;
Updata_Query_Second.SQL.Text:=ListBox2.Items.Strings[0];
Updata_Query_Second.ParamByName('OLD_药品名称').AsString:=Listview2.Items.Item.Caption;
Updata_Query_Second.ParamByName('OLD_规格').AsString:=Listview2.Items.Item.SubItems.Strings[0];
Updata_Query_Second.ParamByName('OLD_单位').AsString:=Listview2.Items.Item.SubItems.Strings[1];
end
else //药品不存在,新增加数据
begin
Updata_Query_Second.Close;
Updata_Query_Second.SQL.Clear;
Updata_Query_Second.SQL.Text:=Listbox2.Items.Strings[1];
end;
Updata_Query_Second.ParamByName('药品名称').AsString:=ListView2.Items.Item.Caption;
Updata_Query_Second.ParamByName('规格').AsString:=Listview2.Items.Item.SubItems.Strings[0];
Updata_Query_Second.ParamByName('单位').AsString:=Listview2.Items.Item.SubItems.Strings[1];
Updata_Query_Second.ParamByName('库存').AsInteger:=StrToInt(Listview2.Items.Item.SubItems.Strings[4]);
Updata_Query_Second.ParamByName('批发价').AsFloat:=StrToFloat(Listview2.Items.Item.SubItems.Strings[2]);
Updata_Query_Second.ParamByName('零售价').AsFloat:=StrToFloat(Listview2.Items.Item.SubItems.Strings[3]);
Updata_Query_Second.ParamByName('有效期').AsDateTime:=StrToDate(Listview2.Items.Item.SubItems.Strings[7]);
Updata_Query_Second.ParamByName('拥有单位').AsString:=Listview2.Items.Item.SubItems.Strings[5];
Updata_Query_Second.ParamByName('类别').AsString:=Listview2.Items.Item.SubItems.Strings[8];
Updata_Query_Second.ExecSQL;
showmessage(inttostr(i)+'---'+'修改二级药库通过!');
end;
except //写入时发生错误
Form1.Database1.Rollback;
showmessage('错误!');
exit;
end;
Form1.Database1.Commit;
ListView2.Items.Clear;
end;
end;
我加了很多showmessage()看看那儿执行错误。看到循环的第一次顺利完成。
可是到了第二次就出了问题了。只能显示出第一个showmessage。
可是我看了半天也看不出来那里错了。
大家帮帮忙吧