我有两个带有链接字段的表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。
答案 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)
这是否对您的应用程序有意义,您必须做出决定。