2009-01-20 109 views
2

這一直竊聽我什麼是做以下的最佳方式......數據集更新過濾器位置

用一個簡單的一對多分貝,當你有2個表形式和第2上/柵板一個由第一個過濾。

哪裏是把過濾器代碼的最佳場所
即:

procedure TForm1.tblCustormersAfterScroll(DataSet: TDataSet); 
begin 
    if tblCustormersCustormerID.AsString <> '' then 
    begin 
    tblCustormersThings.Filter := 'CustormerID = ' + tblCustormersCustormerID.AsString; 
    tblCustormersThings.Filtered := true; 
    end; 
end; 

AfterScroll似乎工作的大部分時間,但donst得到例如上發佈後,一些事件被解僱。通常我會有一個過程來完成過濾器更新並將其放在任何似乎需要的地方。

但我想知道是否有更好的辦法,這似乎是簡單的東西,德爾福應該知道......

我不認爲它很重要,但即時通訊使用了Delphi7和NexusDB1

回答

4

您應該設置MasterSource和「多」側的主字段屬性。

它被稱爲Master - Detail關係,您應該檢查NexusDB的幫助,以便在表格之間創建這種關係。

如果您的表支持索引,比你可以在客戶ID創建索引,還可以使用SetRange()方法。

您設置Filter的方式是最慢的一種。

+0

我知道必須有更好的方法,Nexusdb表格是Tdataset的後代,所以MasterSource和MasterFields在那裏,我只需要修復一些索引。謝謝 – 2009-01-21 00:11:21