Existe algum truque para usar o TSQLMonitor com uma TSQLConnection que usa o novo driver ODBC dbExpress?

Tenho estado a testar o novo condutor ODBC dbExpress que navega com o Delphi XE2, e reparei que o TSQLMonitor não parece funcionar. Pensando que eu poderia ter configurado o componente incorretamente, eu conectei um TSQLMonitor a uma TSQLConnection que usa o driver MS SQL dbExpress, e que funcionou como um encanto.

Eu não vejo nenhum posts sobre este problema na Web. Mais alguém reparou nesta questão? Parece ser um bug, uma funcionalidade não suportada (sem monitorização em uma TSQLConnection que usa o driver ODBC), ou existe um truque para configurar o TSQLMonitor sob esta condição?

Author: joragupra, 2012-01-19

1 answers

Experimenta isto.:

procedure TForm2.Button1Click(Sender: TObject);
begin
  try
    Connect;
    SQLMonitor1.SQLConnection := SQLConnection1;
    SQLMonitor1.Active := True;
    ExecuteQueries;
    SQLMonitor1.SaveToFile('D:\\Log.txt');
  except
    on E: Exception do
      ShowMessage('Exception ocurred!: ' + E.Message);
  end;
end;

procedure TForm2.Connect;
begin
  SQLConnection1 := TSQLConnection.Create(nil);
  SQLConnection1.ConnectionName := 'odbcinterbaseconnection';
  SQLConnection1.LoginPrompt := False;
  SQLConnection1.LoadParamsOnConnect := True;
  SQLConnection1.Connected := True;
end;

procedure TForm2.ExecuteQueries;
var
  Query: String;
begin
  try
    if SQLConnection1.Connected then
    begin
      Query := 'CREATE TABLE ExampleTable(id INTEGER, name VARCHAR(50))';
      SQLConnection1.Execute(Query, nil);
      Query := 'INSERT INTO ExampleTable VALUES(1,''test1'')';
      SQLConnection1.Execute(Query, nil);
      Query := 'INSERT INTO ExampleTable VALUES(2,''test2'')';
      SQLConnection1.Execute(Query, nil);
      Query := 'INSERT INTO ExampleTable VALUES(3,''test3'')';
      SQLConnection1.Execute(Query, nil);
      Query := 'SELECT * FROM ExampleTable';
      SQLConnection1.Execute(Query, nil);
    end;
  except
    on E: Exception do
      ShowMessage('Exception ocurred!: ' + E.Message);
  end;
end;
 1
Author: alesc3, 2014-01-18 20:47:03