如果一个没有参数的sql语句如: 
sql * form table1   如果执行了
我可以在
procedure TLtry.ADOConnection1WillExecute(Connection: TADOConnection;
  var CommandText: WideString; var CursorType: TCursorType;
  var LockType: TADOLockType; var CommandType: TCommandType;
  var ExecuteOptions: TExecuteOptions; var EventStatus: TEventStatus;
  const Command: _Command; const Recordset: _Recordset);
begin
    //Unit1.Form1.Memo2.Text:=Copy(CommandText +#13#10#13#10 +Unit1.Form1.Memo2.Text,1,10240);
end;
内纪录下来
可是如果 有参数
如:
sql:='Select * from W_Admin where A_name=:p1';
  Unit4.Form2.ClientDataSet1.Active:=False;
  Unit4.Form2.ClientDataSet1.CommandText:=sql;
  Unit4.Form2.ClientDataSet1.Params.Items[0].Value:='1';
  Unit4.Form2.ClientDataSet1.Active:=True;纪录下来的是 Select * from W_Admin where A_name=?请问如何能够获取 带参数语句执行后 这里的 执行实际语句是什么啊?
高手指点。

解决方案 »

  1.   

    带参数的是
    比如sqlserver 是由sqlserver 完成sql语句的生成的,你可以用事件跟踪看到
      

  2.   

    用SQL SERVER 2000 的事件探查器,创建一个跟踪,就能看到了
      

  3.   

    或者
       在DELPHI当中使用断点,跟踪到语句:
          Unit4.Form2.ClientDataSet1.Active:=True;
    后,查看 SQL 属性
      

  4.   

    我使用的不是 SQLServer 是Access
    另外 Unit4.Form2.ClientDataSet1 没有sql属性 只有CommandText属性 这个属性我已经看过了
    没有变化的还请积极表态。 自己来试一下。
      

  5.   

    sql:='Select * from W_Admin where A_name='''+l+'''  ';
      Unit4.Form2.ClientDataSet1.Active:=False;
      Unit4.Form2.ClientDataSet1.CommandText:=sql;
      Unit4.Form2.ClientDataSet1.Active:=True;showmessage(Unit4.Form2.ClientDataSet1.CommandText);
      

  6.   

    ok
    ================================================================
    此帖通过csdn小助手回复。
        CSDN小助手是使用vb.net编写的CSDN论坛脱机“外挂”,她能够在
    脱离IE的情况下使用Csdn论坛。程序只加载最核心的数据,所以显示更
    快,产生的流量更小。    下载地址:http://qqwwee.com/csdn.rar
    ================================================================
      

  7.   

    小小同志误会了,我不是说吧带参数的sql语句改为不带参数的。
    我就是想使用带参数的。
    在参数的sql语句的情况下,看看能不能 把sql语句录下来