使用带有筛选查询的书签

时间:2013-05-07 07:28:00

标签: delphi delphi-5

我需要以下问题的帮助。我有一个dbgrid,底层查询被过滤。我想应用一个新的过滤器,但在dbgrid中保持相同的行号。这是我的代码:

with qrProperties do
begin
  ...
  MyPoint:=GetBookmark;
  Filter:='N<>'+IntToStr(ResultPropertyN);
  Filtered:=True;
  GotoBookmark(MyPoint);
end;

执行时,会引发EDBEngineError,并显示“找不到记录”消息。我的解释是书签功能没有考虑过滤器和程序GotoBookmark搜索dbgrid中不存在的记录(由于应用了过滤器)。有没有办法使用带过滤器的书签?

以下是一些细节。在我的应用程序中,当我双击dbgrid中的一行时,它会消失(由于应用了过滤器)但是由于过滤,光标移动到第一行(如果我不使用书签)。我希望它保留在与删除后的记录之后立即显示的相同行号。

1 个答案:

答案 0 :(得分:1)

你的假设是正确的,记录不再是'那里'。

在try / except中包装GotoBookmark并决定在例外中做什么,例如转到第一条记录。

或者你可以去你能找到的“最近的”记录。这取决于您认为“最近”的内容,然后您根本不需要书签,并使用例如FindNearest。