正确的主/细节变化方法

时间:2014-05-10 22:39:02

标签: delphi master-detail delphi-5

我有两个带有链接字段的表tblMaster和tblDetail,它们都很棒。但在极少数情况下,我需要看到所有详细文件都没有链接。

我试过......

OnButton1Click(Sender...
begin
  try
    tblDetail.DisableControls;
    if Button1.Down then
      tblDetail.MasterSource:=nil else
      tblDetail.MasterSource:=srcMaster;
  finally
    tblDetail.EnableControls;
  end;

这就是我所需要的,但是表格中有很多记录需要很长时间。

代替MasterSource,我也试过

tblDetail.LinkedFields:='' else
tblDetail.LinkedFields:='LinkID';

有大约相同的重复。

是否有更快的方式来链接/取消链接文件显示?

使用D5,Zeos 6和SQLite3。

1 个答案:

答案 0 :(得分:2)

您正在将详细信息表格切换为过滤模式。 这种转换是占用时间的。 因为该开关导致数据库刷新。

根据greymatter的建议,您最好与TTable永久链接到主表和一个免费。

另一种加快速度的方法是拥有2个TDbGrids。 一个可见,另一个隐藏。 如果要显示所有记录,请隐藏链接到详细信息表的网格,并显示链接到自由表的网格,反之亦然。

这样你就不会产生开关的成本。 您可能想要记住在交换之前同步显示和隐藏网格上的活动行(如果可能)。否则,用户可能会感到不耐烦,看到行跳得太多。

显然,您需要禁用(灰显)主表的网格,以便让用户知道他现在正在查看详细信息表而不进行过滤。

最后,另一个选择是省去主要细节,并显示两个表的连接视图。 这意味着主表中的行将重复。 就像是。

select d.d1, d.d2, d.id, m.m1 from detail d
left join master m on (m.id = d.masterid)

这是否对您的应用程序有意义,您必须做出决定。