gpt4 book ai didi

delphi - 使用主键移动到 TFDQuery 中的特定记录

转载 作者:行者123 更新时间:2023-12-03 01:02:02 27 4
gpt4 key购买 nike

问题

我想知道是否有任何方法可以通过只知道表的主键来移动到数据集中的特定记录(FDQuery)。

我所知道的

我知道我可以使用 FDQuery.Next; FDQuery.Prior; 移至下一条/上一条记录或使用 FDQuery.RecNo := 2 移动到特定记录号.

就我而言,我只知道该项目的主键 (id),并且我想移动到与我的 id 相同的特定记录。

为了明确起见,我可以通过迭代记录来实现这一点,但是,我想知道这是否是一种直接移动到记录的方法,而不需要迭代所有记录。

with FDQuery do
begin
First;
while not Eof do
begin
if FieldByName(C_ID).AsInteger = IDAsPrimaryKey then
// Found!
Break;
Next;
end;
end;

最佳答案

最简单的方法是使用 Locate bool 函数,如下所示

   if FDQuery.Locate(C_ID, IDAsPrimaryKey, []) then
// do whatever

参见例如http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_Locate了解更多信息。

请注意,Locate 将接受以 ; 分隔的字段名称列表作为第一个参数。在这种情况下,第二个参数需要是字段值的变体数组,您可以使用 VarArrayOf 函数在运行时构造该数组。

顺便说一句,Locate 是在 TDataSet 类中定义的,但它是否以及如何在特定组件中实现取决于给定后代库(如 FireDAC)的作者类。

您还可以使用 GoToKeyFindKey 方法 - 请参阅 http://docwiki.embarcadero.com/RADStudio/Rio/en/Executing_a_Search_with_Goto_Methods 。您可能会发现其中一个或另一个比 Locate 更快,特别是如果您的数据集已经在主键上有客户端索引,但 Locate 通常更方便,并且简洁,因为其他的使用起来比较冗长。

关于delphi - 使用主键移动到 TFDQuery 中的特定记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54466632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com