2015-04-22 45 views
0

我有主窗體上有ADO連接的應用程序,並且有幾個插件有我連接到這個主連接的ADO查詢。一個問題是,當我將插件連接到主應用程序時,我無法正確設計這些插件而沒有他們的個人連接,這些連接變得混亂。一個插件有很多查詢。列出通過ado連接連接的所有查詢

我可以使用ConnectionObject通過主連接傳遞插件的查詢,但這對我來說並不方便,因爲當主連接需要重新連接時,我無法自動重新連接所有查詢。所以我必須在創建插件後將這些插件的Connection屬性重新分配給主連接。

我知道可以使用ADOConnection的DataSets屬性列出所有活動查詢。但是,如果我想列出活動和非活動數據集,應該使用哪個屬性? IDE在設計器中自動列出它們,所以我認爲應該有一種通用的方法來實現這一點。

+1

我檢查和索引屬性'DataSets'是鏈接到一個給定的所有數據集(活動和非活動)的集合連接。如果它不適合你,你將不得不向我們提供一些代碼。 – Wodzu

+0

確實。昨天我沒有檢查'TADOConnection.RegisterClient'方法是如何工作的。今天我發現你是對的。雖然我通過互聯網找到的指南告訴我,'DataSets'只是活動的數據集。無論如何,你可以發表你的評論作爲正確的答案。 – Danatela

+0

完成,我已經將我的答案稍微擴展了一點。 – Wodzu

回答

3

也許關於TADOConnection.DataSets的文檔可以找到here讓您感到困惑。

它說:

使用數據集來訪問與連接 組件關聯的活動數據集。

這可能導致認爲DataSets只保留活動數據集,而不是這種情況。爲了測試這個,只需在表單上放置一個TADOConnection和一個TADOQuery組件,並將TADOQuery.Connection設置爲您的連接實例,例如ADOConnection1

要測試DataSets財產也保持非活動數據集您可以使用此代碼:

procedure TForm1.FormCreate(Sender: TObject); 
var 
    i: Integer; 
begin 
    for i := 0 to ADOConnection1.DataSetCount - 1 do 
    begin 
    if not ADOConnection1.DataSets[i].Active then 
     ShowMessage('Inactive dataset!'); 
    end; 
end;