2012-09-11 72 views
3

我试图使用TSQLMonitor组件,但我没有成功...跟踪与TSQLMonitor不工作

我有如下的代码在我OnTrace事件:

procedure TForm1.SQLMonitor1LogTrace(Sender: TObject; TraceInfo: TDBXTraceInfo); 
begin 
    memo1.Lines.Add(traceinfo.message); 
end; 

厂也是如此,但是SQL命令中的“我的”值由问号(“?”)表示,我不是没有理由!看一个例子:

INTERBASE - isc_start_transaction 
INTERBASE - isc_dsql_allocate_statement 
**update "CDSUBPRODUTOS" set 
"DATAINCLUSAO" = ? 
where 
"CDSPRCODIGO" = ? and 
"DATAINCLUSAO" = ? and 
"DATAALTERACAO" is null and 
"CODUSUARIOALTERACAO" = ? and 
"CDSPRCODGRUPO" = ? and 
"CDSPRSITUACAO" = ? and 
"CDSPRDESCRICAO" = ? and 
"CDSPRMEDIDA" = ? and 
"CDSPRVALOR" = ? and 
"CDSPRUTILIZARFORMACAOPRECO_SN" = ?** 

INTERBASE - isc_dsql_prepare 
INTERBASE - isc_dsql_sql_info 
INTERBASE - isc_portable_integer 
INTERBASE - isc_dsql_describe_bind 
INTERBASE - SQLDialect = 3 
INTERBASE - isc_dsql_execute 
INTERBASE - isc_dsql_free_statement 
INTERBASE - isc_dsql_free_statement 
INTERBASE - isc_commit_transaction 

我会喜欢这些符号被替换为正确的值(在这种情况下,更改后的值)。我正在使用Delphi XE和Firebird 2.5。

如果有人能帮助我,我会感激!拥抱!

+3

您是否使用参数化查询?如果我没有记错,那么确实看到没有参数值的SQL。这些日志不会在日志中出现吗? –

+0

谢谢Jan Doggen,但我不使用参数。我做了一个简单的例子,只是把GRID,NAVIGATOR,SQLMonitor和MEMO来获取指令,结果如上所示... –

+0

看到我没有正确检查ClientDataSet标志,因为它是一个简单的测试... =/ –

回答

2

在互联网上搜索,看起来TSQLMonitor不显示参数值。甚至有一个2002 Quality Central issue #1358要求参数支持。我找不到任何设置或属性。

+0

该报告已修复,但如果您看到解决方案评论为'fixed'实际上是不准确的 - 建议使用dbxtrace驱动程序。 –

+0

我不使用参数,这是一个简单的查询...我已经用SQLServer测试过,但结果是一样的! =(如果SQLMonitor永远不会返回“值”,这是最好的办法吗?你知道吗? –

+0

好吧,也许DBXTrace吧? –