目前我们正在将 Delphi7 应用程序的数据库组件从 BDE 组件迁移到 AnyDAC Version 8.0.5 组件。
在从另一个应用程序实例(会话)编辑记录之前,TTable(BDE)具有以下行为:
使用适当的AnyDAC组件(TADTable),记录不会反映其他实例所做的更改。 没有对TADConnection和TADTable进行特殊更改。
任何帮助表示感谢。
答案 0 :(得分:0)
我不能代表BDE,因为我不想再与它联系,但你所描述的我可以读到:
如果是这样,如果我错了,请纠正我,那将是非常违反UX的。想象一下,您是自己应用程序的用户,并希望在数据网格视图中编辑某个元组。您可以单击某个编辑按钮进入编辑模式,整个行会突然在您眼前发生变化(或者编辑器将填充与您未见过的不同数据)。你想要这样吗?
如果是这样,那么我担心您需要使用AnyDAC(或FireDAC)手动执行此类刷新。这里的要点是引擎要么通过事务锁定元组,要么在您处于编辑模式时跟踪内部存储中的更改。
在两种情况下都不会在编辑开始之前刷新元组(无论您使用哪种锁定选项)。我个人对这种行为很好,因为它可能导致我上面所描述的内容。
要刷新数据集光标在数据集编辑开始之前指向的特定元组,您可以调用例如来自RefreshRecord事件的BeforeEdit,例如:
procedure TForm1.ADTable1BeforeEdit(DataSet: TDataSet);
begin
TADTable(DataSet).RefreshRecord;
end;
然后你的数据库编辑功能成为一个移动目标(好吧,也许它已经是)。