首页 > 解决方案 > 如何通过delphi客户端数据集中特定行(记录)的ID将值(数据)插入字段引用

问题描述

我正在尝试在运行时将数据插入到客户端数据集中由行(或记录)的特定 ID 引用的字段。

我正在使用delphi,这是我案例的结构——mysql数据库>mysqluniprovider>uniquery>数据集提供程序>clientdataset>datasource>dbgrid。

我尝试插入的数据是在运行时由同一过程中的另一个代码生成的。因此,dbnavigator 在这里对我不起作用。另一方面,我更喜欢在客户端数据集级别执行此操作,并且不想定向到 sql。

我能够通过使用 clientdataset.lookup/locate/findkey 找到参考 ID。但是我无法将光标指向同一行参考ID和特定字段的单元格以插入数据。

我相信这种情况必须有一个代码组件,就像 cds.lookup/locate/findkey 在运行时更新现有表中的数据一样。

我将不胜感激任何帮助。

标签: delphi

解决方案


您使用 TDBGrid 来显示数据的事实是偶然的,您更改了 clientdataset 中的数据,TDBGrid 将自动更新它的记录显示。您需要做的是使用客户端数据集的方法移动到记录并更新其字段数据。您可以使用 clientdataset 的Locate方法移动到您想要的记录,如:

ID := 99;  //  the ID of the record to change

if ClientDataSet1.Locate('ID', ID, []) then begin
  ClientDataSet1.Edit;  //  Put the CDS into dsEdit mode so you can change its field data
  ClientDataSet1.FieldByName('SomeField').AsString := 'Whatever';
  ClientDataSet1.Post;  // save the change(s) to the record
end;

TField有关其各种AsXXX方法,如AsIntegerAsFloat等,请参见联机帮助。


推荐阅读