sql text just like:select * from temp where ...
想了下好象取不到,不知我这个问题有解否?

解决方案 »

  1.   


    var
      str : String;
    begin
      str := 'select * from temp where ..';
      Str := Trim(Copy(Str,Pos('from',Str) + 4,Length(Str) - Pos('where',Str) -1));
      ShowMessage(Str);
      

  2.   

    楼主是想取出SQL语句里面的表名吧?
      

  3.   

    读取你的adoquery当初的查询语句,即adoquery1.sql.text.读取后,根据空格,正则提取from后的字符.想要确认,再根据字符查询系统表
      

  4.   

    把楼上的意思代码化(不考虑多表查询from table1 a,table2 b之类的语句):
    str := adoquery1.sql.text;
    delete(str,1,pos('from ',str) + 5);
    str := trim(str);
    str := copy(str,1,pos(' ',str) - 1);
    tablename := trim(str);
    showmessage('表名是:' + tablename);
    with adoquery1 do
    begin
    close;
    sql.text := 'select name from sysobjects where name = ''' + tablename + '''';
    open;
    if recordcount > 0 then
      showmessage('ok');
    end;