procedure TfrmInputManage.BtMonthClick(Sender: TObject);
var
  tablename,y,m,sqlstr:string;
  SL: TStrings;
  index,flag: Integer;
begin
  flag:=0;
  SL := TStringList.Create;
  y:=formatdatetime('yyyy',now);
  if (strtoint(formatdatetime('mm',now))-1)<10 then
    m:='0'+inttostr(strtoint(formatdatetime('mm',now)))
  else
    m:=inttostr(strtoint(formatdatetime('mm',now)));
  tablename:=y+m;
 try
    DMtongtao.ADOCtongtao.GetTableNames(SL, False);
    for index := 0 to (SL.Count - 1) do begin
       if tablename=SL[index] then
         flag:=1
       end;
  finally
    SL.Free;
 end;  if flag=1 then
    showmessage('该月的入库汇总表已存在!');  DMtongtao.ADOQrkdj.Close;
  DMtongtao.ADOQrkdj.SQL.Add('select * from rkdjb where SUBSTRING(rkdh,5,2)='''+m+'''');
  DMtongtao.ADOQrkdj.Open;  if  DMtongtao.ADOQrkdj.IsEmpty then
     begin
      DMtongtao.ADOQrkdj.Close;
      showmessage('该月不存在入库信息!');
    end
  else
    begin
      sqlstr:='select P_code as 产品编号,P_name as 产品名,sum(P_sl) as 总数量,sum(P_sl*P_price) as 总金额 into '+tablename+' from rkdjb group by P_code,p_name order by P_code,P_name';
      ADOQCreate.Close;
      ADOQCreate.SQL.Add(sqlstr);
      ADOQCreate.ExecSQL;
   end;
     ADOTable1.TableName:=tablename;
     ADOTable1.Active:=true;
end;
总说第一行200405附近有错误,我是看不出来了
sql语句应该没问题,我在sql server里通过了的

解决方案 »

  1.   

    var
      tablename,y,m,sqlstr:string;
      SL: TStrings;    <====SL :TStringList;
    ----------------------------------------
    问题再这里
      

  2.   

    你的表求的太艰难了:tblname := formatdatetime('yyyymm',now);就可以了
    你判断表名是否存在也太长了:
    if SL.IndexOf(tblname) >= 0 then
    begin 
      showmessage('该月的入库汇总表已存在!');
      Exit;
    end;
    ...      
          ADOQCreate.Close;
          ADOQCreate.SQL.Clear;  {加此句试试}
          ADOQCreate.SQL.Add(sqlstr);
    ...
      

  3.   

    'select P_code as 产品编号,P_name as 产品名,sum(P_sl) as 总数量,sum(P_sl*P_price) as 总金额 into '+tablename+' from rkdjb group by P_code,p_name order by P_code,P_name';
    这个SQL语句我怎么看都看不懂,不正确,你想把这些内容加入到更一个表中吧,要是这样却没有insert,你看哪个变量的值是200405,那么错误就在那个附近
      

  4.   

    ADOQCreate.SQL.Clear;
    应该是上一句sql语句没有清空,清空试试。
      

  5.   

    楼上:
    SELECT ... INTO TABLENAME 是把查询得到的数据导入新表的语句,上面的SQL没有错啊.
      

  6.   

    搞错:bsmqu(我是个菜鸟,但是我一直在努力想成为高手) :SELECT ... INTO TABLENAME 是把查询得到的数据导入新表的语句,上面的SQL没有错啊.
      

  7.   

    同意upingking() 要清空sql语句.
      

  8.   

    sql语句清空了问题还是一样!!!郁闷神啊,救救我吧!!!!