请教统计数据插入原表的问题!我觉得很难的问题,请大家进去一看。。(50分)

  • 主题发起人 主题发起人 crazypc
  • 开始时间 开始时间
C

crazypc

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序是这样:
with adoQuerypd do
begin
close;
sql.Clear;
sql.Add('select sum(期初量+购货量-销售量) as 库存统计量 from kc');
prepared;
open;
end;
with ADOquery do
begin
close;
sql.Clear;
sql.Add('update kc set 期初量 =:kcsd');
adoQuerypd.First;
if not adoQuerypd.Eof then
begin
ADOquery.Parameters.ParamByName('kcsd').Value :=adoQuerypd.Fields[0].Value;
adoQuerypd.Next;
end;
prepared;
ExecSQL;
end;
表的结构:
货号 期初量 购货量 销售量
001 200 100 50
002 100 50 200
运行上面程序:
变成了:
货号 期初量 购货量 销售量
001 [red]250[/red] 100 50
002 [red]250 [/red] 50 200
而我要的是:
货号 期初量 购货量 销售量
001 250 100 50
002 [red]-50[/red] 50 200
怎样实现?
我曾想过用指针:不行!!
var
kc :^integer;
begin
....
adoQuerypd.First;
kc;=@(adoQuerypd.Fields[0].asinteger);//错了。(variable required);
if not adoQuerypd.Eof then
begin
ADOquery.Parameters.ParamByName('kcsd').Value :=adoQuerypd.Fields[0].Value;
adoQuerypd.Next;
kc++;//这里不对
end;
..
谢谢大家参与解答!!

 

with adoQuerypd do
begin
close;
sql.Clear;
sql.Add('select sum(期初量+购货量-销售量) as 库存统计量,货号 from kc');
prepared;
open;
end;
with ADOquery do
begin
close;
sql.Clear;
sql.Add('update kc set 期初量 =:kcsd where 货号=:sCode');
adoQuerypd.First;
while not adoQuerypd.Eof then
begin
ADOquery.Parameters.ParamByName('kcsd').Value :=adoQuerypd.Fields[0].Value;
ADOquery.Parameters.ParamByName('sCode').Value :=adoQuerypd.Fields[1].Value;
ADOquery.ExecSQL;
adoQuerypd.Next;
end;
end;
 
对不起,刚才没看仔细。我重新改写了你的代码,见上贴。
 
其实用不着这么麻烦,可以一句SQL搞定。
with adoQuerypd do
begin
close;
sql.Clear;
sql.Add('update KC set 期初量=期初量+购货量-销售量');
ExecSql;
end;
 
to kingdeezj:
...
adoQuerypd.First;
while not adoQuerypd.Eof then
begin
ADOquery.Parameters.ParamByName('kcsd').Value :=adoQuerypd.Fields[0].Value;
ADOquery.ExecSQL;
adoQuerypd.Next;
end;
....
这样不行。。。还是跟结果还是跟原来的一样。。。
---
with adoQuerypd do
begin
close;
sql.Clear;
sql.Add('update KC set 期初量=期初量+购货量-销售量');
ExecSql;
end;
这样这可以!!谢谢!!
但是由于表里的字段太多了,,所以我就想先统计,再赋值。。。
能不能实现?
还有想问:
返回来的数据集应该怎样一条条的记录赋给其他?
返回来的数据集是不是相当于c语言中数组,返回来的数据集是不是指向表里第一条纪录?
也就说能不能用指针来实现?通过指针的移动来实现。。


 
我来了,给分把
 
多人接受答案了。
 
后退
顶部