如何观察运行中TQuery的SQL 属性值?(100分)

  • 主题发起人 主题发起人 weilan
  • 开始时间 开始时间
W

weilan

Unregistered / Unconfirmed
GUEST, unregistred user!
在程序中常使用TQuery.SQL.Add(....),当最后执行Execsql时常会发生内中SQL 语句
的错误,以致程序无法执行,如能在调试程序过程中可以观察SQL 中语句变化情况则方便
很多, 不知有谁能回答这个问题?
 
showmessage(TQuery.SQL.Text)
 
直接用delphi在execsql前增加断点,用ADD WATCH观察即可
 
caption = 'Query1.SQL.Text : '+ Query1.SQL.Text
 
SQL是一个TString,所以你最好将一句SQL直接用SQL.Text:=strSQL给它算了.
若你用ADD加上去的,就不要又用SQL.text又用SQL.ADD,这样就容易出问题.
 
SQL 是TSTRING类型的,所以QUERY。SQL[0]为第一句,SQL[1]为第二句,以后类推
 
同意yanlei
 
我常常临时放一个 Memo 在 form 上,在 Query.Open 之前 加一句话:
Memo1.Lines.AddStrings(Query1.SQL);
 
SQL是TStrings没错,不过其Text就是整个的SQL语句,不用一条一条的看。

我经常用:Query1.Sql.Text:='';
很少用 :Query1.Sql.Add('')
 
调试时用add watch或evaluate/modify。
如想在程序中显示则用query1.sql.text;不过如果sql中存在参数的话,
query1.sql.text只会显示如‘select * from tab1 where a=:a';在show text时
最好写个小函数将参数值代替参数名。
 
其实对这个问题楼上已经是回答的很好了,但我还是要说一句,如果你的Query控件中的语句
有返回数据如Select语句,你就不能用Execsql语句只能用Open;
因为Delphi规定,Execsql语句执行的非返回数据的SQL语句如更新语句和增加语句,而Open用于
有返回数据的语句一般是Select语句.
 
多人接受答案了。
 
后退
顶部