delphi - 如何通过delphi客户端数据集中特定行(记录)的ID将值(数据)插入字段引用
问题描述
我正在尝试在运行时将数据插入到客户端数据集中由行(或记录)的特定 ID 引用的字段。
我正在使用delphi,这是我案例的结构——mysql数据库>mysqluniprovider>uniquery>数据集提供程序>clientdataset>datasource>dbgrid。
我尝试插入的数据是在运行时由同一过程中的另一个代码生成的。因此,dbnavigator 在这里对我不起作用。另一方面,我更喜欢在客户端数据集级别执行此操作,并且不想定向到 sql。
我能够通过使用 clientdataset.lookup/locate/findkey 找到参考 ID。但是我无法将光标指向同一行参考ID和特定字段的单元格以插入数据。
我相信这种情况必须有一个代码组件,就像 cds.lookup/locate/findkey 在运行时更新现有表中的数据一样。
我将不胜感激任何帮助。
解决方案
您使用 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
方法,如AsInteger
、AsFloat
等,请参见联机帮助。
推荐阅读
- javascript - 是否可以手动从 Bloodhound 索引中删除条目?
- amazon-web-services - 使 lambda 函数的多个实例写入同一个文档
- multiple-columns - 添加列以检索单行
- python - 返回python中的主菜单
- facebook - 在发布中需要帮助 Flutter facbook 登录应用程序
- regex - 正则表达式在德国管道前获取文本|fbf4cf3c-ebfe-43c8-aaf9-6811bd3488b0
- javascript - 如何在函数参数中定义/使用“el”(vue js)
- react-native - FlatList 组件有问题
- continuous-integration - 工作服不工作“五零零”消息
- java - Java 中的当前日期和时间