ExecSqlEx(adoqry,'select name from sysobjects where type=''U''');  //执行语句
adoqry.First;
for i:=0 to adoqry.RecordCount-1 do
begin
  columname:=adoqry.FieldByName('name').AsString;
  ExecSqlEx(adoqryexe,'truncate table '+columname+'');//到这里报错
  adoqry.next;
end;报错原因:commandtext does not return a result set,
请问应该如何写初始化的语句,上面的语句应如何修改,不用DELETE,或用更好的方法做初始化.

解决方案 »

  1.   

    把你的SQL语句SHOW出来看看,是不是正确。
    再不行,就将SQL语句存为.SQL文件,然后在查询分析器中调试,应该就能发现问题。
      

  2.   

    with adoqry do
    begin
      close;
      sql.Text :='select name from sysobjects where type=''U''');  //执行语句
      Open;
      First;
    end;
    for i:=0 to adoqry.RecordCount-1 do
    begin
      columname:=adoqry.FieldByName('name').AsString;
      with adoqryexe do
      begin
        close;
        sql.Text:='truncate table '+columname;//到这里报错
        Execsql;
      end;
      adoqry.next;
    end;
      

  3.   

    你的ExecSqlEx函数里执行是用open还是execsql?看你select和truncate调的同一个函数,如果里面没区分判断,用的是open就会报commandtext does not return a result set这种错
      

  4.   

    我是用OPEN的,用EXECSQL没试过,我等一下试试看,行了,马上结贴