我将 Delphi 10.2 与 ComponentAce 的 Absolute Database 框架一起使用。所以我在这里的问题可能与 TAbsQuery 或我认为传统的 Delphi TQuery 类有关。
我的数据库有一个名为lastViewed的日期字段。我将RequestLive设置为 true,以便对当前记录中的各个字段所做的任何更改都保存到表中。此外,在我的BeforeScroll事件中(即在前进到另一条记录之前),lastViewed字段更新为当前日期。它工作得很好。但是,我有一个菜单选项,显示按上次查看日期排序的所有记录的列表。换句话说,
SELECT * FROM myTable ORDER BY lastViewed
当结果最初显示在 DBGrid(在我的例子中为 TAbsGrid)中时,它看起来很好。但是当我向下滚动列表时,lastViewed字段被更新并且该记录被推到网格的底部。我希望在向上或向下滚动列表时保留列表的原始顺序。
在更新我的BeforeScroll事件中的数据库字段时,将LiveRequest设置为 false 显然会触发数据库错误。
如果我想显示所有myFavoriteColor字段为RED值的记录的结果,也会出现同样的问题。将myFavoriteColor值更改为GREEN,该行将从我的查询结果列表中消失。
有没有办法让当前的查询结果保持完整,同时仍然能够用新数据更新基础表?
谢谢您阅读此篇。