Delphi 什么是TFDDatSRow?

Delphi 什么是TFDDatSRow?,delphi,firedac,fdmemtable,Delphi,Firedac,Fdmemtable,我使用Delphi10.3。我尝试创建一个内存数据库,向其中添加数据并在其中查找数据 我参考其他人的代码编写了以下代码,它运行良好 procedure TForm1.DataAppendFind; var _FieldDef: TFieldDef; _FDDatsRow: TFDDatSRow; i: Integer; begin _FieldDef := FDMemTable1.FieldDefs.AddFieldDef; _FieldDef.Name := 'field

我使用Delphi10.3。我尝试创建一个内存数据库,向其中添加数据并在其中查找数据

我参考其他人的代码编写了以下代码,它运行良好

procedure TForm1.DataAppendFind;
var
  _FieldDef: TFieldDef;
  _FDDatsRow: TFDDatSRow;
  i: Integer;
begin
  _FieldDef := FDMemTable1.FieldDefs.AddFieldDef;

  _FieldDef.Name := 'field1';
  _FieldDef.DataType := ftInteger;

  _FieldDef := FDMemTable1.FieldDefs.AddFieldDef;

  _FieldDef.Name :='field2';
  _FieldDef.DataType := ftString;
  _FieldDef.Size := 10;

  FDMemTable1.CreateDataSet;

  FDMemTable1.Append;

  FDMemTable1.FieldValues['field1'] := 1;
  FDMemTable1.FieldValues['field2'] := 'one';

  FDMemTable1.Append;

  FDMemTable1.FieldValues['field1'] := 2;
  FDMemTable1.FieldValues['field2'] := 'two';

  FDMemTable1.First;

  for i := 0 to FDMemTable1.RecordCount - 1 do
  begin
    _FDDatsRow := FDMemTable1.GetRow;

    if _FDDatsRow.Values['field1'] = 2 then
    begin
      Caption := _FDDatsRow.ValueS['field2'];
    end;

    FDMemTable1.Next;
  end;
end;
我无法理解TFDDatSRow,我试图通过Delphi引用和google搜索它。但关于这一点没有明确的文件。我可以猜它与一行相似,但不是一行,因为它有一个长而复杂的名称,而不仅仅是一个tROW


什么是TFDDatSRow,为什么没有关于它的参考资料,我在哪里可以获得关于它的正确信息?最后,上面的代码是否正确?

是的,您的代码工作正常。我承认我没有遇到Tffdatsrow 在你的q之前,但是看了之后,很明显它是用来做什么的

FireDAC的数据集组件都从TDataSet派生,因此符合 用它的方式对数据集操作进行建模,也就是说,当一个数据集 如果是打开的,则它有一个逻辑游标,该游标正好“位于”数据集中的一条记录上 就是那个记录,用Delphi的术语来说是“活动的”记录,在它上面有像
Edit
Post
FieldByName
,这样的操作, 等等。这可以正常工作,但会使某些操作无法进行,例如工作 同时在两条记录上,例如,当您希望在两条记录之间交换值时 不同的记录,因为它们不能同时是数据集的活动记录

我说很明显TFDDatSRow的目的是什么,有一件事是允许 完全可以同时访问2个或更多记录

例如,此代码

  FDMemTable1.First;
  FDDatsRow1 := FDMemTable1.GetRow;
  FDMemTable1.Next;
  FDDatsRow2 := FDMemTable1.GetRow;

  FDDatSRow1.BeginEdit;
  FDDatSRow1.Values['Field2'] := FDDatSRow2.Values['Field2'];
  FDDatSRow1.EndEdit(False);
允许以以下方式将数据从第二行传输到第一行: 没有TFDDatSRow是不可能的

为什么没有记录?不知道,问问EMBA

我是如何找到它的方法的?很简单,我声明了一个变量

 var FDDatSRow1 : TFDDatSRow;
然后打字

  FDDatSRow1.
IDE的代码完成弹出了它们

另外,选择
TFDDatSRow
并按Ctrl键将我带到它的声明 在FireDac.DatS单元中。看看里面,显然是FireDAC的作者
记住比我的例子中要多得多的东西。

我非常感谢你友好而微妙的回答。我的社区版本似乎不允许跳转到TFDDatSRow的源代码中。我不需要那种工作。仅使用tFDDataSet.Lookup看起来不错。鉴于您在早期版本的评论中所说的,您可能想看看在Delphi中使用数据集的教程:参见示例。虽然它是为早期版本的Delphi编写的,但在添加FireDAC之前,它仍然适用。