2

这一直困扰着我,什么是执行以下操作的最佳方法......

使用简单的一对多数据库,当您在表单上有 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

4

1 回答 1

4

您应该在“多”端设置MasterSource和主字段属性。

它被称为 Master - Detail 关系,您应该查看 NexusDB 帮助以了解在表之间创建这种关系的方法。

如果您的表支持索引,那么您可以在CustomerID上创建索引并使用SetRange()方法。

您设置过滤器的方式是最慢的。

于 2009-01-21T00:01:29.070 回答