38 votes

Existe-t-il une astuce pour utiliser TSQLMonitor avec une connexion TSQLConnection qui utilise le nouveau pilote ODBC dbExpress ?

J'ai testé le nouveau pilote ODBC dbExpress fourni avec Delphi XE2 et j'ai remarqué que le TSQLMonitor ne semble pas fonctionner. Pensant que j'avais peut-être mal configuré le composant, j'ai connecté un TSQLMonitor à une TSQLConnection qui utilise le pilote MS SQL dbExpress, et cela a fonctionné à merveille.

Je ne vois pas de messages concernant ce problème sur le Web. Quelqu'un d'autre a-t-il remarqué ce problème ? S'agit-il d'un bogue, d'une fonctionnalité non prise en charge (pas de surveillance sur une TSQLConnection qui utilise le pilote ODBC), ou existe-t-il une astuce pour configurer le TSQLMonitor dans cette condition ?

1voto

alesc3 Points 63

Essayez ceci :

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;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X