procedure TForm1.Button9Click(Sender: TObject);
begin
  with DM2.ADOQuery3 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select OutStocks.Name as 名字,sum(OutStocks.Num) as 出库数量,sum(Stocks.Num) as 库存数量');
      SQL.Add('from OutStocks join Stocks');
      SQL.Add('on OutStocks.Name=Stocks.Name');
      SQL.Add('group by OutStocks.Name');
      Open;
    end;
end;

解决方案 »

  1.   

          SQL.Add('select OutStocks.Name as 名字,sum(OutStocks.Num) as 出库数量,sum(Stocks.Num) as 库存数量');
          SQL.Add(' from OutStocks join Stocks');
          SQL.Add(' on OutStocks.Name=Stocks.Name');
          SQL.Add(' group by OutStocks.Name');加空格
      

  2.   

    showmessage(sql.text) 一看便知
      

  3.   

    from、on和group前加空格是吗?还是这个提示'FROM子句语法错误',郁闷~
      

  4.   


          SQL.Add('select OutStocks.Name as 名字,sum(OutStocks.Num) as 出库数量,sum(Stocks.Num) as 库存数量');
          SQL.Add('from OutStocks join Stocks');
          SQL.Add('on OutStocks.Name=Stocks.Name');
          SQL.Add('group by OutStocks.Name');//将sql.text showmessage看看有什么问题,或者放入查询设计器看看//如果是单句SQL,最好是使用
     sql.text := 'select OutStocks.Name as 名字,sum(OutStocks.Num) as 出库数量,sum(Stocks.Num) as 库存数量 '
    + ' From OutStocks join Stocks' 
    + ' on OutStocks.Name=Stocks.Name'
    + ' group by OutStocks.Name';
    //连接之前使用空格,执行多句SQL才使用sql.add
      

  5.   

    根据hongqi162的提示,ShowMessage后发现点问题,不过现在改成下面这样子,还是提示'FROM子句语法错误'
    procedure TForm1.Button9Click(Sender: TObject);
    begin
      with DM2.ADOQuery3 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select OutStocks.Name as 名字,sum(OutStocks.Num) as 出库数量,sum(Stocks.Num) as 库存数量');
          SQL.Add(' from OutStocks join Stocks on OutStocks.Name=Stocks.Name group by OutStocks.Name');
          
          Open;
        end;
    end;
      

  6.   

    用oracle试了下没有问题呀
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      with ADOQuery1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select OutStocks.Name as 名字,sum(OutStocks.Num) as 出库数量,sum(Stocks.Num) as 库存数量');
          SQL.Add(' from OutStocks join Stocks');
          SQL.Add(' on OutStocks.Name=Stocks.Name');
          SQL.Add(' group by OutStocks.Name');
          memo1.lines.add(sql.text);
          //Open;
        end;
    end;--以下是我在pl/sql dev下测试
     create table outstocks(name varchar2(10),num number);
     create table stocks(name varchar2(10),num number);
    select OutStocks.Name as 名字,sum(OutStocks.Num) as 出库数量,sum(Stocks.Num) as 库存数量
     from OutStocks join Stocks
     on OutStocks.Name=Stocks.Name
     group by OutStocks.Name
     
      

  7.   

    procedure TForm1.Button9Click(Sender: TObject);
    begin
      with DM2.ADOQuery1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select OutStocks.Name as 名字,sum(OutStocks.Num) as 出库数量,sum(Stocks.Num) as 库存数量');
          SQL.Add(' from OutStocks join Stocks');
          SQL.Add(' on OutStocks.Name=Stocks.Name');
          SQL.Add(' group by OutStocks.Name');      Open;
        end;
    end;测试了下,还是'FROM子句语法错误'真是见鬼了,谢谢大家,尤其是zxf_feng ,我再找找原因~
      

  8.   

    knife_s 的法子我觉得最好,容易清楚。出错也容易检查。