能取到TADOQuery的sql的表名吗?

mathsfan 2009-08-03 07:38:14
sql text just like:select * from temp where ...
想了下好象取不到,不知我这个问题有解否?
...全文
108 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
勇敢的BK7 2009-08-04
  • 打赏
  • 举报
回复
adoquery1.sql.text
mathsfan 2009-08-04
  • 打赏
  • 举报
回复
没有我想要的答案,哎。
mathsfan 2009-08-03
  • 打赏
  • 举报
回复
再等一天看看有没有更好的答案,如果还没有我心中觉得理想的答案就结帖。
newfang 2009-08-03
  • 打赏
  • 举报
回复
把楼上的意思代码化(不考虑多表查询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;
dinoalex 2009-08-03
  • 打赏
  • 举报
回复
读取你的adoquery当初的查询语句,即adoquery1.sql.text.

读取后,根据空格,正则提取from后的字符.

想要确认,再根据字符查询系统表
winstonbonaparte 2009-08-03
  • 打赏
  • 举报
回复
楼主是想取出SQL语句里面的表名吧?
winstonbonaparte 2009-08-03
  • 打赏
  • 举报
回复

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);
caixiaobai08 2009-08-03
  • 打赏
  • 举报
回复

de410 2009-08-03
  • 打赏
  • 举报
回复
不明白你的意思?

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧