这总是让我想到了做以下事情的最佳方式......
使用简单的一对多db,当您在表单上有2个表/网格而第二个由第一个表进行过滤时。
放置过滤器代码的最佳位置在哪里 即:
procedure TForm1.tblCustormersAfterScroll(DataSet: TDataSet);
begin
if tblCustormersCustormerID.AsString <> '' then
begin
tblCustormersThings.Filter := 'CustormerID = ' + tblCustormersCustormerID.AsString;
tblCustormersThings.Filtered := true;
end;
end;
AfterScroll似乎大部分时间都在工作,但是在发布之后就会被解雇一些事件。通常情况下,我会有一个程序来进行过滤器更新,并把它放在似乎需要的地方。
但我想知道是否有更好的方法,这似乎只是德尔福应该知道的东西......
我不认为这很重要,但我正在使用Delphi7和NexusDB1
答案 0 :(得分:4)
您应该在“很多”方面设置 MasterSource 和主字段属性。
它被称为主 - 详细信息关系,您应该检查NexusDB帮助,以便在表之间创建这种关系。
如果您的表支持索引,则可以在 CustomerID 上创建索引,也可以使用 SetRange()方法。
设置过滤器的方式是最慢的。