2012-01-18 17 views
38

He estado probando el nuevo controlador dbExpress de ODBC que se envía con Delphi XE2, y he notado que el TSQLMonitor no parece funcionar. Pensando que podría haber configurado el componente incorrectamente, conecté un TSQLMonitor a un TSQLConnection que usa el controlador MS SQL dbExpress, y que funcionó como un amuleto.¿Existe un truco para usar TSQLMonitor con un TSQLConnection que utiliza el nuevo controlador dbExpress de ODBC?

No veo ninguna publicación sobre este problema en la Web. ¿Alguien más ha notado este problema? ¿Parece ser un error, una característica no admitida (no hay supervisión en una TSQLConnection que usa el controlador ODBC), o hay un truco para configurar el TSQLMonitor bajo esta condición?

+0

¿Usted intentó utilizar el rastreo derivada conductor? Esto se agrega a los resultados de SQLMonitor y puede terminar siendo útil. Si el controlador ODBC es un controlador completamente nativo (como creo) podría no funcionar igual que los controladores "antiguos" basados ​​en Dll .... –

+1

Marco: Esa es una gran sugerencia. Después de conectar el TSQLConnection al controlador ODBC y luego expandir la propiedad del controlador de TSQLConnection, configuro la propiedad DelegateConnection del controlador en DBXTrace. Luego amplié la propiedad DelegateConnection y configuré TraceFile en True y TraceFile en un nombre de archivo (todo según sus sugerencias). Gracias por esta solución. Todavía quiero ver si alguien sabe cómo solucionar el problema de TSQLMonitor. –

+0

@Marco Cantù: Un poco de tema pero, por favor, ¿pueden considerar esto [post] (http://stackoverflow.com/questions/10147850/add-my-own-items-to-delphi-ide-insight-f6-with -in-delphi-open-tools-api)? – menjaraz

Respuesta

1

Trate de hacer esto:

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; 
Cuestiones relacionadas