2008-11-05 34 views
2

我有一個帶有幾個字段的內存數據集,其中一個是另一個數據集引用爲外鍵的主鍵。事情是,主數據集可以有多個對細節數據集的引用。 (這是建模一個包含其他對象的動態數組的對象。)Delphi:在數據感知控件中顯示數據集的一個子集

如果只有一個子對象,我可以與主引用字段的KeyFields和LookupKeyFields屬性進行正確的關聯數據集,但這只是爲了返回一個結果。我想加載全部其主鍵與正確的ID鍵匹配並將它們顯示在列表框中的記錄。

我以爲一個TDBListBox會幫助這個,但事實證明,這不是他們做的。那麼,如何使用多重匹配檢查的結果集來填充列表框或類似的控件,以便進一步編輯?我想要類似於這樣的SQL查詢的結果:

select field1, field2, field3 
from client_dataset 
where client_dataset.primary_key = master_dataset.id 

唯一的問題是,這完全是用內存數據集完成的。這裏沒有真正的數據庫被使用。有誰知道這可以做到嗎?

回答

3

該數據集有一個Filter屬性,可以使用條件進行設置。您還必須將過濾標誌設置爲true。通過他的數據控件,您可以選擇哪些字段可見。

所以:

var 
    c : TColumn; 
begin 
    clientdataset.Filter := Format('primary_key = %d', [master_dataset.id]); 
    clientdataset.Filtered := True; 

    c := DBGrid1.Columns.Add; 
    c.FieldName := 'field1'; 
    c := DBGrid1.Columns.Add; 
    c.FieldName := 'field2'; 
    c := DBGrid1.Columns.Add; 
    c.FieldName := 'field3'; 
end; 

應該做的伎倆。

+0

很好的答案。我使用的數據集目前不實現Filter屬性,或者我可能自己找到它,但現在你說我記得在他們的新聞組上看到關於使其工作的新修補程序的討論。我必須檢查一下。 – 2008-11-05 20:40:46