各位大佬:
小弟做一超市前台收银用触摸屏.思路是:前动态生成组件方式生成商品单以便选择,这作为前一个FORM,后一个FORM是打印并同时将临时库中的商品选购数据存入总库中(二个库结构完成相同),在第二个FORM时,第一个不关闭,程序用ODBC与SQL连接,前一个FORM运行正常,但在操作第二FORM时却发生了这样情况:
所有导入的数据都不能在总库中正确反应,或是变成0或是NULL,但我将后一个FORM单独运行时,导入的数据正确,这是为何,真不知所措了!
procedure TForm6.Button1Click(Sender: TObject);
var
f6_b1i1,f6_b1i2:integer;
f6_ryname:string;
begin
self.xpdy ;//打印程序
table1.Open;//总库
table1.Last;
table1.Edit;
// f6_b1i1:=table2.RecordCount ;
table2.Open;//临时库
table2.First ;
if table1.RecordCount =0 then f6_b1i2:=1;
if table1.RecordCount >0 then f6_b1i2:=table1.fieldbyname('id').AsInteger+1 ;
for f6_b1i1:=0 to table2.RecordCount-1 do
begin
table1.Append;
table1.Edit;
table1.fieldbyname('id').asinteger:=f6_b1i2;(这能正确导入)
table1.FieldByName('dj_no').asinteger:=strtoint(form3.edit14.text);(这能正确导入)
table1.FieldByName('renyuanmc').AsString:=table2.fieldbyname('renyuanmc').AsString ;(以下不能正确导入)
table1.FieldByName('je').Asfloat:=table2.fieldbyname('je').Asfloat ;
table1.FieldByName('dj').Asfloat:=table2.fieldbyname('dj').Asfloat ;
table1.FieldByName('sl').Asfloat:=table2.fieldbyname('sl').Asfloat ;
table1.FieldByName('rq').AsDateTime:=table2.fieldbyname('rq').Asdatetime ;
table1.FieldByName('zzk').Asfloat:=table2.fieldbyname('zzk').Asfloat ;
table1.FieldByName('dlzk').Asfloat:=table2.fieldbyname('dlzk').Asfloat ;
table1.FieldByName('zzje').Asfloat:=table2.fieldbyname('zzje').Asfloat ;
f6_b1i2:=f6_b1i2+1;table1.Post;
table1.Edit;
table2.Next;
end;query1.Close;
query1.SQL.Clear;
query1.SQL.Add('delete from xiaoshou');
query1.ExecSQL ;
form6.Close;
form3.Label7.Caption:='0.00';
form3.Edit7.Text:='0.00';
form3.Edit11.Text:='0.00';
form3.Edit13.Text:='';
form3.Edit6.Text:='0.00';
form3.edit8.Text:='0';
form3.edit9.Text:='0';
form3.edit3.text:='';
form3.edit4.Text :='';
form3.edit5.Text:='0';
form3.edit6.Text:='0';
form3.edit7.Text:='0.00';
form3.label7.caption:='0.00';
form3.edit8.Visible:=false;
//form3.edit9.Visible :=false;
//form3.edit11.Text:='0.00';
end;
小弟做一超市前台收银用触摸屏.思路是:前动态生成组件方式生成商品单以便选择,这作为前一个FORM,后一个FORM是打印并同时将临时库中的商品选购数据存入总库中(二个库结构完成相同),在第二个FORM时,第一个不关闭,程序用ODBC与SQL连接,前一个FORM运行正常,但在操作第二FORM时却发生了这样情况:
所有导入的数据都不能在总库中正确反应,或是变成0或是NULL,但我将后一个FORM单独运行时,导入的数据正确,这是为何,真不知所措了!
procedure TForm6.Button1Click(Sender: TObject);
var
f6_b1i1,f6_b1i2:integer;
f6_ryname:string;
begin
self.xpdy ;//打印程序
table1.Open;//总库
table1.Last;
table1.Edit;
// f6_b1i1:=table2.RecordCount ;
table2.Open;//临时库
table2.First ;
if table1.RecordCount =0 then f6_b1i2:=1;
if table1.RecordCount >0 then f6_b1i2:=table1.fieldbyname('id').AsInteger+1 ;
for f6_b1i1:=0 to table2.RecordCount-1 do
begin
table1.Append;
table1.Edit;
table1.fieldbyname('id').asinteger:=f6_b1i2;(这能正确导入)
table1.FieldByName('dj_no').asinteger:=strtoint(form3.edit14.text);(这能正确导入)
table1.FieldByName('renyuanmc').AsString:=table2.fieldbyname('renyuanmc').AsString ;(以下不能正确导入)
table1.FieldByName('je').Asfloat:=table2.fieldbyname('je').Asfloat ;
table1.FieldByName('dj').Asfloat:=table2.fieldbyname('dj').Asfloat ;
table1.FieldByName('sl').Asfloat:=table2.fieldbyname('sl').Asfloat ;
table1.FieldByName('rq').AsDateTime:=table2.fieldbyname('rq').Asdatetime ;
table1.FieldByName('zzk').Asfloat:=table2.fieldbyname('zzk').Asfloat ;
table1.FieldByName('dlzk').Asfloat:=table2.fieldbyname('dlzk').Asfloat ;
table1.FieldByName('zzje').Asfloat:=table2.fieldbyname('zzje').Asfloat ;
f6_b1i2:=f6_b1i2+1;table1.Post;
table1.Edit;
table2.Next;
end;query1.Close;
query1.SQL.Clear;
query1.SQL.Add('delete from xiaoshou');
query1.ExecSQL ;
form6.Close;
form3.Label7.Caption:='0.00';
form3.Edit7.Text:='0.00';
form3.Edit11.Text:='0.00';
form3.Edit13.Text:='';
form3.Edit6.Text:='0.00';
form3.edit8.Text:='0';
form3.edit9.Text:='0';
form3.edit3.text:='';
form3.edit4.Text :='';
form3.edit5.Text:='0';
form3.edit6.Text:='0';
form3.edit7.Text:='0.00';
form3.label7.caption:='0.00';
form3.edit8.Visible:=false;
//form3.edit9.Visible :=false;
//form3.edit11.Text:='0.00';
end;
解决方案 »
- 谁用过InstantObject,请教怎么安装in Delphi 2007
- Delphi VS VB,急Delphi好让人失望啊,请高手帮帮忙!
- 一个关于listview中添加checkbox的简单问题!
- 子目录级的文件查询的实现??????????????
- 怎样前导0输出Integer类型转换后的字符啊?
- 如何编程使在桌面任意地方双击都在该地方弹出开始菜单?
- 如何获得系统目录下的system路径?
- ocx控件使用问题,在线等待。。。解决后马上结帖
- Delphi里如何将bmp图片转换成img或者jpeg图片?
- 自定义文件格式保存
- RaiseException函数怎么使用,能否给举个例子?急
- 这个报错信息如何解决
//table1.Edit; 去掉看看
table1.fieldbyname('id').asinteger:=f6_b1i2;(这能正确导入) ....table1.Post;
//table1.Edit; 去掉看看
table2.Next;
第二个用到table2(在第一个FORM中是TABLE3)连接在数据库中的表的程序如下:
procedure TForm3.Button4Click(Sender: TObject);
var
f3_xiaoshoui1:integer;
f3_xiaoshoui2,f3_xiaoshoui3,f3_xiaoshoui4,f3_xiaoshoui5,f3_xiaoshoui6,i7,i8,i9:currency;
begin
if (edit13.Text='') then exit;
if ((edit3.text='') or (edit4.text='') or (edit5.text='')) then exit;
if ((edit8.Visible = false) and (edit9.Visible = false)) then
begin
edit7.text:='0.00';
edit6.Text:=floattostr(strtofloat(trim(edit4.text))*strtofloat(trim(edit5.text)));
label7.Caption :=floattostr(strtofloat(trim(label7.Caption ))+ strtofloat(trim(edit6.text)));
edit11.Text :=label7.Caption;
end;
if ((edit8.Visible = true) and (edit9.Visible = false)) then
begin
i7:=strtofloat(trim(edit4.text));
i8:=strtofloat(trim(edit5.Text));
i9:=i7*i8;
edit6.Text:=floattostr(i9);
label7.Caption :=floattostr(strtofloat(trim(label7.Caption ))+ strtofloat(trim(edit6.text)));
f3_xiaoshoui4:=strtofloat(trim(edit8.text));
f3_xiaoshoui5:=1-f3_xiaoshoui4;
f3_xiaoshoui6:=strtofloat(trim(edit6.Text ));
f3_xiaoshoui2:=(f3_xiaoshoui6)*(f3_xiaoshoui5);
f3_xiaoshoui3:=strtofloat(trim(edit7.text));
f3_xiaoshoui3:=f3_xiaoshoui3+f3_xiaoshoui2;
edit7.Text:=floattostr(f3_xiaoshoui3);
edit11.Text:=floattostr(strtofloat(trim(label7.caption))-f3_xiaoshoui3);
end;
if ((edit8.Visible = false) and (edit9.Visible =true)) then
begin
edit6.Text:=floattostr(strtofloat(trim(edit4.text))*strtofloat(trim(edit5.text)));
label7.Caption :=floattostr(strtofloat(trim(label7.Caption ))+ strtofloat(trim(edit6.text))) ;
edit7.Text:=edit9.Text;
edit11.Text:=floattostr(strtofloat(trim(label7.caption))-strtofloat(trim(edit7.Text)));
end;table3.Active:=true;
if table3.RecordCount =0 then f3_xiaoshoui1:=0;
table3.Open;
table3.Last;
f3_xiaoshoui1:=table3.fieldbyname('id').AsInteger;
f3_xiaoshoui1:=f3_xiaoshoui1+1;
table3.Append;table3.FieldByName('id').AsInteger :=f3_xiaoshoui1;
//table3.fieldbyname('dj_no').asinteger:= f3_no;
table3.FieldByName('spmc').AsString:=trim(edit3.text);
table3.FieldByName('renyuanmc').AsString :=trim(edit1.text);
table3.FieldByName('je').AsFloat :=strtofloat(trim(edit6.text));
table3.FieldByName('sl').Asfloat :=strtofloat(trim(edit5.text));
table3.FieldByName('dj').AsFloat :=strtofloat(trim(edit4.text));
if edit8.Visible=true and edit9.Visible =false then
begin
table3.FieldByName('zzje').AsFloat:=f3_xiaoshoui2;
table3.FieldByName('zzk').asfloat:=0.00;
table3.fieldbyname('dlzk').asfloat:=strtofloat(edit8.text);
end;
if edit8.Visible=false and edit9.Visible =true then
begin
table3.FieldByName('zzje').AsFloat:=f3_xiaoshoui2;
table3.FieldByName('zzk').asfloat:=0.00;
table3.FieldByName('dlzk').asfloat:=strtofloat(edit9.text);
end;
if edit8.Visible=false and edit9.Visible =false then
begin
table3.FieldByName('zzje').AsFloat:=f3_xiaoshoui2;
table3.FieldByName('zzk').asfloat:=0.00;
table3.FieldByName('dlzk').asfloat:=strtofloat(edit9.text);
end;
if edit8.Visible=false and edit9.Visible =false then
begin
table3.FieldByName('zzje').AsFloat:=f3_xiaoshoui2;
table3.FieldByName('zzk').asfloat:=0.00;
table3.FieldByName('dlzk').asfloat:=0.00;
end;
table3.FieldByName('rq').AsDateTime :=date();table3.post;
table3.edit;
edit3.Text:='';
edit4.Text:='';
edit5.Text:='1';
end;
按您的方法仍是原样,还有什么好办法?