求助(93分)

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

yejunbo

Unregistered / Unconfirmed
GUEST, unregistred user!
三张表,临时表tmp,库存表stock,进货表typeIn.
将临时表中的记录添加到进货表中,并搜索库存表有无相同的记录,有的话讲字段number加上临时表中的number,一下是我写的代码,有错,不知道怎么改。
主要有两个疑问,1如何获得临时表中各记录的字段值,2如何进行数据库的更新(stock)
求教!!!!!!!!!!!!!!!!

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT into typeIn');
ADOQuery1.SQL.Add('SELECT * from temp');
ADOQuery1.ExecSQL;

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from stock where name=:name and '+
'standard=:standard and veins=:veins');
ADOQuery1.Parameters.ParamByName('name').Value:=ADOTable1.Fields[2].Value;
ADOQuery1.Parameters.ParamByName('standard').Value:=ADOTable1.Fields[3].Value;
ADOQuery1.Parameters.ParamByName('veins').Value:=ADOTable1.Fields[4].Value;
ADOQuery1.Open;
if ADOQuery1.RecordCount<>0 then
begin
ADOQuery1.SQL.Clear;
ADOTable1.Edit;
ADOQuery1.SQL.Add('UPDATE stock set number=number+'+ADOTable1.Fields[9].AsString );
ADOQuery1.SQL.Add('where name=:');
ADOQuery1.SQL.Add(' '''+ADOTable1.Fields[2].Value+''' ');
ADOQuery1.SQL.Add(' and standard=:');
ADOQuery1.SQL.Add(' '''+ADOTable1.Fields[3].Value+''' ');
ADOQuery1.SQL.Add(' and veins=:');
ADOQuery1.SQL.Add(' '''+ADOTable1.Fields[4].Value+''' ');
ADOQuery1.ExecSQL;
end else begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT into stock');
ADOQuery1.SQL.Add('SELECT * from temp');
ADOQuery1.ExecSQL;
end;
 
如果时sqlserver 你直接再 typeIn上建立一个触发器,只要有新增数据 或者number值改变时 然他改变库存数据
 
楼主的要求完全可以用SQL实现。
--相同记录Number累加
Update Stock
Set Stock.Number = Stock.Number + Temp.Number
From Stock Left join Temp
ON Stock.name = Temp.name AND Stock.standard = Temp.standard AND Stock.Veins = Temp.Veins

--Stock表中没有,进行插入
Insert Into Stock
Select Temp.*
From Temp left join Stock
ON Stock.name <> Temp.name AND Stock.standard <> Temp.standard AND Stock.Veins <> Temp.Veins

楼主可以将上面的SQL写成一个存储过程,在Delphi中只需调用此存储过程即可。
 
如果是SQL數據庫用觸發器是會方便好多,好控制些。
 
你應該把你編譯時的錯誤信息貼出來呀。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
570
import
I
I
回复
0
查看
504
import
I
I
回复
0
查看
3K
import
I
后退
顶部