这是我写的程序,从两张表里查询
dm.queryin.Close;  dm.queryin.SQL.Clear;
  dm.queryin.SQL.Add('select tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位,sum(数量) ''入库数量'',sum(领用数量) ''领用数量'' ,sum(数量)-sum(领用数量) ''库存数量'' from tb_sourout');
  dm.queryin.SQL.Add('join tb_sourin');
  dm.queryin.SQL.Add(' on (tb_sourin.原料名称=tb_sourout.原料名称)');
  dm.queryin.SQL.Add('where tb_sourin.入库日期 like''%'+edit2.text+'%'' ' );
  dm.queryin.SQL.Add('and tb_sourout.领用日期 like''%'+edit2.text+'%'' ');
  dm.queryin.SQL.Add('group by tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位');
  dm.queryin.Active:=true;
  dm.queryin.Open;
兄弟们看看,是怎么回事啊

解决方案 »

  1.   

    这样,你不要用join,这样形成表的联结。
    直接采用这种形式,from tb_sourout,tb_sourin
    这样你的问题应该可以解决了
      

  2.   

    看看是不是join tb_sourin的时候造成数据的重复。翻倍。
      

  3.   

    dm.queryin.Close;
      dm.queryin.SQL.Clear;
      dm.queryin.SQL.Add('select tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位,sum(数量) ''入库数量'',sum(领用数量) ''领用数量'' ,sum(数量)-sum(领用数量) ''库存数量'' from tb_sourout,tb_sourout');
      dm.queryin.SQL.Add('where tb_sourin.原料名称=tb_sourout.原料名称 and tb_sourin.入库日期 like''%'+edit2.text+'%'' ' );
      dm.queryin.SQL.Add('and tb_sourout.领用日期 like''%'+edit2.text+'%'' ');
      dm.queryin.SQL.Add('group by tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位');  dm.queryin.execsql;
      dm.queryin.active:=true;
    你再试试
      

  4.   

    To caohonglong2000(chl)
     用你的方法还是翻倍了啊,在SQL里这么写的
    select tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位,sum(数量) '入库数量',sum(领用数量) '领用数量' ,(sum(数量)-sum(领用数量)) '库存数量' 
    from tb_sourout,tb_sourin
      
        where(tb_sourin.原料名称=tb_sourout.原料名称 and tb_sourin.入库日期 like '2003-8%' and tb_sourout.领用日期 like'2003-8%') 
      
      group by tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位
      

  5.   

    是哪个值翻倍?
    我在我这边已经测试过了,是正确的。
    如果方便,你可以把一个测试用的数据库发给我access,sql server的都可以,我在我这里再测试一下。
    我现在开了个ftp,仅几天有用:ftp:210.28.76.3 user:thanks  password:thanks
    当然不要涉及你们的秘密,你来个模型就可以了