有两张表,表a有字段:code,name (即产品代码,产品名称)
         表b有字段:code,stock,number(即产品代码,仓库,数量)
我想用一个dbgrid与adoquery1相连,在dbgrid中显示:
产品代码,产品名称,仓库,数量
这个SQL我不会写
另外,我想加记录进到表b中
就用这个adoquery1.insert吗?
会不会把记录同时加到表a表b中呀?我只想加到表b中

解决方案 »

  1.   

    select aa.code,aa.name,bb.stock,bb.number from a aa b bb where a.code=b.code 
    insert时只要往b表insert即可
      

  2.   

    select a.code,a.name,b.stock,b.number from a,b where a.code=b.code;
      

  3.   

    (1)
      with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add(select a.code,a.name,b.stock,b.number from a ,b  where a.code=b.code ');
        ExecSQL;
      end;(2)
      with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add('insert into b values(codevalue,stock_value,number_value)');
        ExecSQL;
      end;
      

  4.   

    1 要有一个数据源:DSYourSource;
    2 把数据集和数据源关联,
    3 指定 dbgrid 的数据源是DSYourSource;
    4 ADOQuery1.SQL := 'Select aa.code,aa.name,bb.stock,bb.number from a aa b bb       where   a.code=b.code  '
    5 ADOQuery1.Open;就可以了!
      

  5.   

    你不能往 ADOQuery1 中Insert ,因为它是一个联合查询。
    只能单独往 b 表中Insert;
      

  6.   

    我觉得最好的方法还是使用sql server 的企业管理器来生成sql语句,虽然很复杂的不能自动生成,但是大部分已经足够了阿
      

  7.   

    这些都是数据库的基础SQL知识,可以参考学习相关知识自然就明白了…
      

  8.   

    你不能往 ADOQuery1 中Insert ,因为它是一个联合查询。
    只能单独往 b 表中Insert;怎么样只往b表中插入
      

  9.   

    再来一个adoquery2,用它来insert.
      

  10.   

    1.  select b.code,a.name,b.stock,b.number from a ,b  where a.code=b.code 
    2.  insert into b values(code_value,stock_value,number_value)
      

  11.   

    (1)
    select a.code,a.name,b.stock,b.number from 表a a left outer join 表b b on 
    a.code=b.code
      

  12.   

    唉,老兄,要好好学习,天天向上呀。
      with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add(select a.code,a.name,b.stock,b.number from a ,b  where a.code=b.code ');
        open;//这里不要用这个啦ExecSQL;
      end;(2)
      with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add('insert into b values(:codevalue,:stock_value,:number_value)');
        ExecSQL;
      end;
    然后对这几个参数附值就可以了,如:
    adoquery1.Parameters.ParamByName('ou').Value:=logf.OUID;
      

  13.   

    ww94307(外星人) :你好!
    我是新手
    如果我想dbgrid一直显示adoquery1的内容
    另外,insert b表后,dbgrid也能及时反映出来,是否要
    用二个adoquery?
    也就是adoquery1与dbgrid相连
    再:adoquery2.insert
    再adoquery1.refresh
      

  14.   

    to cutedelphigirl(delphi女孩) :
      用两个adoquery是可以的。
    insert b成功后,重新把adoquery1.open就可以了。
    open前要close哟
      

  15.   

    表a有字段:code,name (即产品代码,产品名称)
    表b有字段:code,stock,number(即产品代码,仓库,数量)
    产品代码,产品名称,仓库,数量
    Select Code ::adoquery1.sql.add(select a.code,a.name,b.stock,b.number from a join b on a.code=b.code where a.code="324" and .....);
    adoquery.open;
    Insert code::adoquery1.sql.add(Inert into b(code,stock,number) values("324","nnnn","2000"));
    adoquery.excute;
      

  16.   

    不好意思,今天才有空上
    sql楼上的写了
    :)
    另,cutedelphigirl(delphi女孩)
    你说的是对的