如何通过delphi clientdataset中特定行(记录)的ID向字段引用插入值(数据)

如何通过delphi clientdataset中特定行(记录)的ID向字段引用插入值(数据),delphi,Delphi,我试图在运行时将数据插入到clientdataset中由行(或记录)的特定ID引用的字段中 我使用的是delphi,下面是我案例的结构——mysql数据库>mysqluniprovider>uniquery>数据集提供程序>clientdataset>数据源>dbgrid 我试图插入的数据是在运行时由同一过程中的另一个代码生成的。因此,dbnavigator在这里不适用于我。另一方面,我更喜欢在clientdataset级别执行此操作,而不希望直接使用sql 我能够使用clientdataset

我试图在运行时将数据插入到clientdataset中由行(或记录)的特定ID引用的字段中

我使用的是delphi,下面是我案例的结构——mysql数据库>mysqluniprovider>uniquery>数据集提供程序>clientdataset>数据源>dbgrid

我试图插入的数据是在运行时由同一过程中的另一个代码生成的。因此,dbnavigator在这里不适用于我。另一方面,我更喜欢在clientdataset级别执行此操作,而不希望直接使用sql

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

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


我将非常感谢您在这方面提供的任何帮助。

您使用TDBGrid显示数据是偶然的,您更改了clientdataset中的数据,TDBGrid将自动更新其记录显示。您需要做的是使用clientdataset的方法移动到记录并更新其字段数据。您可以使用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;

查看
t字段
的在线帮助,了解其各种
AsXXX
方法,如
AsInteger
AsFloat
,等等。

MartynA,它对我来说非常顺利。非常感谢你。