大家看这段代码为什么不执行, 或执行效率非常差, 我等了很长时间未见结果!(28分)

  • 主题发起人 主题发起人 libaoliang
  • 开始时间 开始时间
L

libaoliang

Unregistered / Unconfirmed
GUEST, unregistred user!
我用paradox+BDE+delphi5.0 编制了一个数据管理软件,想通过一个按钮执行数据更新,
代码如下,大家看为什么不能运行,
能否告诉我更好的方法? 谢谢!
procedure Tcpmcweihu.BitBtn3Click(Sender: TObject);
begin
with table1 do
begin
first;
while not eof do
begin
edit3.text:=table1.Fieldbyname('cpmc').value;
edit4.text:=floattostr(table1.Fieldbyname('dj').value);
edit5.text:=floattostr(table1.Fieldbyname('xs').value);
edit6.text:=floattostr(table1.Fieldbyname('zb0').value);
edit7.text:=floattostr(table1.Fieldbyname('zb1').value);
edit8.text:=floattostr(table1.Fieldbyname('zb2').value);
edit9.text:=floattostr(table1.Fieldbyname('zb3').value);
edit10.text:=floattostr(table1.Fieldbyname('zb4').value);
edit11.text:=floattostr(table1.Fieldbyname('zb5').value);
edit12.text:=floattostr(table1.Fieldbyname('zb6').value);
edit13.text:=floattostr(table1.Fieldbyname('zb7').value);
edit14.text:=floattostr(table1.Fieldbyname('zb8').value);
edit15.text:=floattostr(table1.Fieldbyname('bzcl').value);
edit16.text:=floattostr(table1.Fieldbyname('bcl').value);
query1.close;
query1.sql.clear;
query1.sql.add('update cpk0 set dj=:dj,xs=:xs,zb0=:zb0,zb1=:zb1,zb2=:zb2,zb3=:zb3,zb4=:zb4,zb5=:zb5,zb6=:zb6,zb7=:zb7,zb8=:zb8,bzcl=:bzcl,bcl=:bcl where cpmc=:cpmc');
query1.parambyname('dj').asfloat:=strtofloat(edit4.text);
query1.parambyname('xs').asfloat:=strtofloat(edit5.text);
query1.parambyname('zb0').asfloat:=strtofloat(edit6.text);
query1.parambyname('zb1').asfloat:=strtofloat(edit7.text);
query1.parambyname('zb2').asfloat:=strtofloat(edit8.text);
query1.parambyname('zb3').asfloat:=strtofloat(edit9.text);
query1.parambyname('zb4').asfloat:=strtofloat(edit10.text);
query1.parambyname('zb5').asfloat:=strtofloat(edit11.text);
query1.parambyname('zb6').asfloat:=strtofloat(edit12.text);
query1.parambyname('zb7').asfloat:=strtofloat(edit13.text);
query1.parambyname('zb8').asfloat:=strtofloat(edit14.text);
query1.parambyname('bzcl').asfloat:=strtofloat(edit15.text);
query1.parambyname('bcl').asfloat:=strtofloat(edit16.text);
query1.parambyname('cpmc').asstring:=edit3.text;
query1.execsql;
end;
table1.next;
end;
close;
end;
也就是以下代码运行时出错, 请看是什么原因, 解决了再给100分,
update table2 a set a.字段1=b.字段1,a.字段2=b.字段2,... from table1 b,table2,a where a.字段3=b.字段3;
我想问大家的其实本质就是根据一个表中的一个记录去更新另一个表中多个记录
的 update 语句的sql 的写法,


 
if Not Table1.Active then Table1.Active := True;
Table1.First;
while not Table1.eof do
with Query1 do
begin
Close;
Sql.Clear;
Sql.Add('update cpk0 set dj=:dj,xs=:xs,zb0=:zb0,zb1=:zb1,zb2=:zb2,zb3=:zb3,zb4=:zb4,zb5=:zb5,zb6=:zb6,zb7=:zb7,zb8=:zb8,bzcl=:bzcl,bcl=:bcl where cpmc=:cpmc')
ParamByName('dj').Value := Table1.FieldbyName('dj').Value;
ParamByName('zb0').Value := Table1.FieldbyName('zb0').Value;
ParamByName('zb1').Value := Table1.FieldbyName('zb1').Value;
//......
ExecSql;
end;
Table1.Next;
end;
 
接受答案了.
 
后退
顶部