2012-01-18 35 views
38

Tôi đã thử nghiệm trình điều khiển ODBC ODBC mới đi kèm với Delphi XE2 và đã nhận thấy rằng TSQLMonitor dường như không hoạt động. Suy nghĩ rằng tôi có thể đã cấu hình các thành phần không chính xác, tôi nối một TSQLMonitor với TSQLConnection sử dụng trình điều khiển MS SQL dbExpress, và nó hoạt động như một sự quyến rũ.Có một mẹo để sử dụng TSQLMonitor với TSQLConnection sử dụng trình điều khiển ODBC ODBC mới không?

Tôi không thấy bất kỳ bài đăng nào về sự cố này trên Web. Có ai khác nhận thấy vấn đề này không? Nó có vẻ là một lỗi, một tính năng không được hỗ trợ (không giám sát TSQLConnection sử dụng trình điều khiển ODBC), hoặc có một thủ thuật để cấu hình TSQLMonitor trong điều kiện này không?

+0

Bạn có thử sử dụng có nguồn gốc Tracing lái xe? Điều này thêm vào các kết quả SQLMonitor và có thể sẽ hữu ích. Nếu trình điều khiển ODBC là một trình điều khiển hoàn toàn nguyên bản (như tôi nghĩ) nó có thể không hoạt động giống như các trình điều khiển dựa trên Dll cũ ... –

+1

Marco: Đó là một gợi ý tuyệt vời. Sau khi kết nối TSQLConnection với trình điều khiển ODBC, và sau đó mở rộng thuộc tính Trình điều khiển của TSQLConnection, tôi đặt thuộc tính DelegateConnection của trình điều khiển thành DBXTrace. Sau đó, tôi đã mở rộng thuộc tính DelegateConnection và đặt TraceFile thành True và TraceFile thành tên tệp (tất cả theo đề xuất của bạn). Cảm ơn bạn vì cách giải quyết này. Tôi vẫn muốn xem nếu có ai biết làm thế nào để giải quyết vấn đề TSQLMonitor. –

+0

@Marco Cantù: Một chút chủ đề nhưng xin bạn có thể xem xét [post] này (http://stackoverflow.com/questions/10147850/add-my-own-items-to-delphi-ide-insight-f6-with -in-delphi-open-tools-api)? – menjaraz

Trả lời

1

Hãy thử điều này:

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; 
Các vấn đề liên quan