使用TDataSet.FindKey可以找到记录。当它结果为True时,数据集光标将定位在找到的记录上。当它导致False时,光标不会移动。这导致在发布FindKey之前的记录数据显示在数据感知组件中。
如何编写FindKey的结果以返回空记录?
if Not tblSomeTable.FindKey([SomeSearchData]) then
begin
< code to return empty or move data cursor to neutral position >
end;
更新(等待几天才选择正确答案,因为我认为这是习惯,并且不想阻止进一步的反馈。)虽然我相信有几个建议可以解决这个问题正确答案来自马塞洛,因为不可能将光标放在记录上。提出了几种解决方法。我选择了自己的一个。它类似于:
If Not tblSomeTable.FindKey([SomeSearchData]) then
begin
tblSomeTable.FindKey([-1,2010]);
end
我所做的是创建一个带有索引的虚拟空白记录,该索引实际数据永远不会是,即:第一个索引值永远不会为-1。如果初始搜索为空,则FindKey将光标定位在此空记录上。这将提供我追求的视觉效果。
答案 0 :(得分:1)
TDataSet没有“中立位置”。但一如既往,你几乎没有选择:
请注意,但可能会发明一些其他方法:)
答案 1 :(得分:1)
喂,
使用SetRange而不是FindKey。
tblSomeTable.SetRange([SomeSearchData],[SomeSearchData]);
try
while not tblSomeTable.Eof do begin
<do something with the Record>
tblSomeTable.Next;
end;
finally
tblSomeTable.CanelRange;
end;
当您的条件确保匹配记录的最大值是您使用上述零或一条记录的语句检索的记录时。
答案 2 :(得分:0)
据我所知,这是不可能的。除非Bof和Eof都为真(空数据集),否则光标必须始终在记录上。