请帮忙-adoquery1(50分)

  • 主题发起人 主题发起人 yeli
  • 开始时间 开始时间
Y

yeli

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADOquery1控件要对一个表的数据进行更新,该表的数据来源于另一个表。
举例如下:
 query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select ckdtj.编号,ckdtj.名称,ckdtj.总耗量,(qingdan.单价)单价,(qingdan.单价*ckdtj.总耗量)合计,(qingdan.数量)库存数量 from qingdan,ckdtj where ckdtj.编号=qingdan.编码');
query1.open;
query1.first;
while query1.recordcount>0 do
begin
query2.Close;
query2.SQL.clear;
query2.SQL.add('update ckdtj set 库存数量=:库存数量,缺货数量=:缺货数量,合计=:合计 where 编号=:编号');
query2.parameters.ParamByName('编号').value := query1.fieldbyname('编号').asstring;
query2.Parameters.ParamByName('库存数量').Value := query1.FieldValues['库存数量'];
iF query1.FieldValues['总耗量']-query1.FieldValues['库存数量']>0
then query2.Parameters.ParamByName('缺货数量').Value :=query1.FieldValues['总耗量']-query1.FieldValues['库存数量']
else query2.Parameters.ParamByName('缺货数量').Value :=null;
query2.Parameters.ParamByName('合计').Value := query1.FieldValues['合计'];
query2.ExecSQL;
query1.next;
end;
结果提示错误。我用了很多方法都无法解决,请高手指点。


 
你的循环好象是死循环,‘while query1.recordcount>0 do’改为
‘while not query1.recordcount.eof do’

把‘select ckdtj.编号,ckdtj.名称,ckdtj.总耗量,(qingdan.单价)单价,(qingdan.单价*ckdtj.总耗量)合计,(qingdan.数量)库存数量 from qingdan,ckdtj where ckdtj.编号=qingdan.编码');’
改为
'select ckdtj.编号,ckdtj.名称,ckdtj.总耗量,(qingdan.单价) as 单价,
(qingdan.单价*ckdtj.总耗量) as 合计,(qingdan.数量) as 库存数量 from qingdan,ckdtj where ckdtj.编号=qingdan.编码');

 
把 while query1.recordcount>0 do
该为 : while not query1.eof do
 
干嘛要用那个呀
用WHILE NOT AOQUERY1。EOF DO
BEGIN
。。。。。。
END
ADOQUERY1。NEXT;
 
谢谢大家,循环语句我改了,但没是不行。系统还是提示出错:
Query2:Parameters'编号' not Found.
各位有好方法可以解决吗
 
今天早上,我终于把问题解决了。原来是我忘了在ADOquery2处设置连接,多谢各位了
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
379
import
I
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部