2012-01-18 9 views
38

Testowałem nowy sterownik ODBC dbExpress dostarczany z Delphi XE2 i zauważyłem, że TSQLMonitor nie działa. Myśląc, że mógłbym skonfigurować komponent niepoprawnie, podpiąłem TSQLMonitor do TSQLConnection, który używa sterownika MS SQL dbExpress i który działał jak czar.Czy istnieje sztuczka do korzystania z TSQLMonitor z TSQLConnection, który używa nowego sterownika ODBC dbExpress?

Nie widzę żadnych postów dotyczących tego problemu w sieci. Czy ktoś jeszcze zauważył ten problem? Czy wygląda na błąd, nieobsługiwaną funkcję (brak monitorowania w TSQLConnection, która używa sterownika ODBC), czy istnieje podstęp do skonfigurowania TSQLMonitor w tym stanie?

+0

Próbowałeś pomocą Tracing pochodzący kierowca? To dodaje wyniki SQLMonitor i może okazać się przydatne. Jeśli sterownik ODBC jest w pełni natywnym sterownikiem (jak sądzę), może nie działać tak samo jak "stare" sterowniki oparte na bibliotekach Dll .... –

+1

Marco: To świetna propozycja. Po okablowaniu połączenia TSQLConnection ze sterownikiem ODBC, a następnie rozwinięciu właściwości Driver połączenia TSQLCection, ustawiam właściwość DelegateConnection sterownika na DBXTrace. Następnie rozszerzyłem właściwość DelegateConnection i ustaw TraceFile na True i TraceFile na nazwę pliku (wszystko zgodnie z Twoimi sugestiami). Dziękujemy za obejście tego problemu. Nadal chcę sprawdzić, czy ktoś wie, jak rozwiązać problem TSQLMonitor. –

+0

@Marco Cantù: Trochę tematu, ale proszę, rozważ to [post] (http://stackoverflow.com/questions/10147850/add-my-own-items-to-delphi-ide-insight-f6-with -in-delphi-open-tools-api)? – menjaraz

Odpowiedz

1

Spróbuj tego:

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; 
Powiązane problemy