各位大虾:
   小弟最近遇到一个非常奇怪的问题,小弟做了一个软件,最近作了点修改,添加了一些语句,如下:
  adoquery2.SQL.Clear;
  adoquery2.SQL.Text:='delete from '+tablename;
  try
    adoquery2.ExecSQL;
  except
    adoquery2.SQL.Clear;
    adoquery2.SQL.Text:='select * into '+tablename+' from tempbqrint';
    adoquery2.ExecSQL;
  end;
tablename是临时表表名,在我的机器上编译通过,并且运行的很好,我在98,2000(繁体)下都能运行,但是在现场时总是提示:
   行1:‘-’附近语法错误
  我通过showmessage追踪到就是在执行以上“adoquery2.ExecSQL;”时出现的问题,奇怪的是,在那边的机器上不论是98,2000(繁体)都会有这样的提示,而拿到我这里后,不论哪台都可以运行,我真的搞不懂,我试过将mdac升级到2.8,将bde重装,都无济于事!不知哪位大虾遇到过,可以不吝赐教!

解决方案 »

  1.   

    adoquery2.SQL.Clear;
      adoquery2.SQL.Add('delete from '+tablename);
      try
        showmessage(adoquery2.SQL.text);  //显示出来看看
        //adoquery2.ExecSQL;
      except
        adoquery2.SQL.Clear;
        adoquery2.SQL.Text:='select * into '+tablename+' from tempbqrint';
        adoquery2.ExecSQL;
      end;
      

  2.   

    把SQL语句放在查询分析器里执行一下先
      

  3.   


    强烈要请楼主把这句贴到SQL SERVER查询分析器执行下
      

  4.   

    刚执行了,没有问题.修改一下,有的时候可写成存储过程.----------------------小弟帮你改的--------------------------------------
    procedure TForm1.Button1Click(Sender: TObject);
    var
    tablename:string;
    begin
      tablename:='test';
      with adoquery1 do
            begin
               close;
               sql.clear;
               sql.add('if exists(select * from sysobjects where type=''u'' and name='''+tablename+''')');
               sql.add('delete  '+tablename);
               sql.add('else select * into '+tablename+' from tmp');
               showmessage(sql.Text);
               execsql;
             end;
    end;
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    tablename:string;
    begin
      tablename:='test';
      with adoquery1 do
            begin
               close;
               sql.clear;
               sql.add('if exists(select * from sysobjects where type=''u'' and name='''+tablename+''')');
               sql.add('delete  '+tablename);
               sql.add('else select * into '+tablename+' from tempbqrint');
               showmessage(sql.Text);
               execsql;
             end;
    end;