Delphi 使用主键移动到TFDQuery中的特定记录 问题
我想知道是否有任何方法可以通过只知道表的主键来移动到DataSet FDQuery中的特定记录 我所知道的 我知道我可以使用FDQuery移动到下一个/上一个记录;FDQuery.Prior;或者使用FDQuery.RecNo:=2移动到特定记录编号 在我的例子中,我只知道项目的主键id,我想移动到这个与我的id相同的特定记录 为了明确起见,我可以通过遍历记录来实现这一点,但是,我想知道这是否是一种直接移动到记录的方法,而无需遍历所有记录Delphi 使用主键移动到TFDQuery中的特定记录 问题,delphi,Delphi,我想知道是否有任何方法可以通过只知道表的主键来移动到DataSet FDQuery中的特定记录 我所知道的 我知道我可以使用FDQuery移动到下一个/上一个记录;FDQuery.Prior;或者使用FDQuery.RecNo:=2移动到特定记录编号 在我的例子中,我只知道项目的主键id,我想移动到这个与我的id相同的特定记录 为了明确起见,我可以通过遍历记录来实现这一点,但是,我想知道这是否是一种直接移动到记录的方法,而无需遍历所有记录 with FDQuery do begin Firs
with FDQuery do
begin
First;
while not Eof do
begin
if FieldByName(C_ID).AsInteger = IDAsPrimaryKey then
// Found!
Break;
Next;
end;
end;
最简单的方法是使用Locate boolean函数,如中所示
if FDQuery.Locate(C_ID, IDAsPrimaryKey, []) then
// do whatever
有关更多信息,请参见例如
请注意,Locate将接受一个-字段名的分隔列表作为第一个参数。在这种情况下,第二个参数需要是字段值的变量数组,您可以在运行时使用VarArrayOf函数构造该数组
顺便说一句,Locate是在TDataSet类中定义的,但它是否以及如何在特定的组件类中实现取决于给定子体库(如FireDAC)的作者
您还可以使用GoToKey或FindKey方法-请参阅。您可能会发现其中一个比Locate更快,尤其是如果您的数据集主键上已经有客户端索引,但Locate通常更方便和简洁,因为其他的使用起来更冗长。最简单的方法是使用Locate布尔函数,如中所示
if FDQuery.Locate(C_ID, IDAsPrimaryKey, []) then
// do whatever
有关更多信息,请参见例如
请注意,Locate将接受一个-字段名的分隔列表作为第一个参数。在这种情况下,第二个参数需要是字段值的变量数组,您可以在运行时使用VarArrayOf函数构造该数组
顺便说一句,Locate是在TDataSet类中定义的,但它是否以及如何在特定的组件类中实现取决于给定子体库(如FireDAC)的作者
您还可以使用GoToKey或FindKey方法-请参阅。您可能会发现其中一个比Locate更快,尤其是如果您的数据集主键上已经有客户端索引,但Locate通常更方便、简洁,因为其他的使用起来更冗长。您总是在用delphi救我的命。我以前找到了一些关于locate的东西,但找不到确切的用法。你解释得很详细。谢谢你总是用德尔福救我的命。我以前找到了一些关于locate的东西,但找不到确切的用法。你解释得很详细。谢谢