我有2个表
表1中 药品名称,进货数量
表2中 药品名称(主键),库存量;
在表1中添加多笔数据以后,更新表2
我的想法是:查找表1的记录药品名称
已经在表2中存在的话,直接修改库存量
否则添加药品名称。
但是如果添加的数据中的药品名称
有重复的话,怎么也跟新不了表2
提示关键字错误。
怎么办?

解决方案 »

  1.   

    更新和添加分开来写update 表2 set 表2.库存量=a.库存量+b.进货数量 
    from 表2 a,表1 b where a.药品名称=b.药品名称insert into 表2 (药品名称,库存量) 
    SELECT 药品名称,进货数量 FROM 表1 
    where 表1.药品名称 not in (select 药品名称 from 表2)
      

  2.   

    var i:integer;
        s:variant;
    begin
    for i:=0 to adotable1.RecordCount do
    begin
    s:=adotable1.FieldValues['ypmc'];
    adotable2.Active:=true;
    adotable2.open;
    with adotable2 do
    if locate('rpmc',s,[]) then
    begin
    adotable2.edit;
    adotable2.fieldvalues['ypmc']:=adotable1.fieldvalues['ypmc'];
    adotable2.FieldValues['kcsl']:=inttostr(strtoint(adotable1.fieldvalues['sl'])+adotable2.fieldvalues['kcsl']);
    //adotable2.post;
    //adotable2.refresh;
    end
    else
    begin
    adotable2.open;
    adotable2.append;
    adotable2.fieldvalues['ypmc']:=adotable1.fieldvalues['ypmc'];
    adotable2.fieldvalues['kcsl']:=adotable1.fieldvalues['sl'];
    //adotable2.post;
    //adotable2.refresh;
    end;
    end;
    end;