2012-01-18 19 views
38

मैं नए ओडीबीसी डीबीईएक्सप्रेस ड्राइवर का परीक्षण कर रहा हूं जो डेल्फी एक्सई 2 के साथ जहाजों, और ध्यान दिया है कि TSQLMonitor काम नहीं कर रहा है। यह सोचकर कि मैंने गलत तरीके से घटक को कॉन्फ़िगर किया हो, मैंने एक TSQLMonitor को एक TSQLConnection में जोड़ दिया जो एमएस एसक्यूएल dbExpress ड्राइवर का उपयोग करता है, और यह एक आकर्षण की तरह काम करता है।क्या TSQLMonitor को TSQLConnection के साथ उपयोग करने के लिए कोई चाल है जो नए ओडीबीसी dbExpress ड्राइवर का उपयोग करता है?

मुझे वेब पर इस समस्या के बारे में कोई पोस्ट नहीं दिखाई देता है। क्या किसी और ने इस मुद्दे को देखा है? क्या यह एक बग, एक असमर्थित सुविधा (एक TSQLConnection पर कोई निगरानी नहीं है जो ओडीबीसी ड्राइवर का उपयोग करता है), या इस स्थिति के तहत TSQLMonitor को कॉन्फ़िगर करने के लिए कोई चाल है?

+0

क्या आप ट्रेसिंग ड्राइवर व्युत्पन्न का उपयोग करके देखें? यह SQLMonitor परिणामों में जोड़ता है और उपयोगी होने का अंत हो सकता है। यदि ओडीबीसी ड्राइवर पूरी तरह से मूल चालक है (जैसा कि मुझे लगता है) यह "पुराने" डीएल-आधारित ड्राइवरों के समान काम नहीं कर सकता है .... –

+1

मार्को: यह एक अच्छा सुझाव है। ओडीबीसी चालक को TSQLConnection तारों के बाद, और फिर TSQLConnection की चालक संपत्ति का विस्तार करने के बाद, मैंने ड्राइवर की DelegateConnection प्रॉपर्टी को DBXTrace पर सेट किया। तब मैंने DelegateConnection प्रॉपर्टी का विस्तार किया और ट्रसेफ़ाइल को ट्रू और ट्रेसफाइल पर फ़ाइल नाम पर सेट किया (सभी आपके सुझावों के अनुसार)। इस कामकाज के लिए धन्यवाद। मैं अभी भी देखना चाहता हूं कि कोई भी जानता है कि TSQLMonitor समस्या को कैसे हल किया जाए। –

+0

@ मार्को कैंटू: विषय का एक बिट लेकिन कृपया आप इस [पोस्ट] पर विचार कर सकते हैं (http://stackoverflow.com/questions/10147850/add-my-own-items-to-delphi-ide-insight-f6-with -इन-डेल्फी-खुले उपकरण-api)? – menjaraz

उत्तर

1

इस आजमाएं:

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;