什么是 TFDDatSRow?
What is TFDDatSRow?
我用的是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,为什么没有关于它的参考,我在哪里可以得到关于它的正确信息?最后,上面的代码是否正确?
是的,您的代码工作正常。我承认我没有遇到过 TFDDatSRow
在你的 q 之前,但看了它之后,很明显它是做什么用的。
FireDAC 的数据集组件均源自 TDataSet,因此符合
以其建模数据集操作的方式,也就是说,当数据集
已打开,它有一个逻辑游标,它恰好是数据集中的一条记录 "over"
就是那条记录,Delphi 术语中的 "active",在其上进行 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-Click 会将我带到它的声明
在 FireDac.DatS 单元中。往里看,显然是 FireDAC 的作者
记住的比我的示例中显示的要多得多。
我用的是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,为什么没有关于它的参考,我在哪里可以得到关于它的正确信息?最后,上面的代码是否正确?
是的,您的代码工作正常。我承认我没有遇到过 TFDDatSRow 在你的 q 之前,但看了它之后,很明显它是做什么用的。
FireDAC 的数据集组件均源自 TDataSet,因此符合
以其建模数据集操作的方式,也就是说,当数据集
已打开,它有一个逻辑游标,它恰好是数据集中的一条记录 "over"
就是那条记录,Delphi 术语中的 "active",在其上进行 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-Click 会将我带到它的声明
在 FireDac.DatS 单元中。往里看,显然是 FireDAC 的作者
记住的比我的示例中显示的要多得多。