我想用外部数据更改DBgrid行值,如何实现?
例如,我想通过单击按钮将Tedit值添加到dbgrid选定的行列(例如5)中。
另外,我希望将1 dbgrid的值添加到另一个dbgrid。(添加一个现有的数字,而不是替换)。
发布于 2021-03-26 22:24:43
假设您有一个数据集通过一个TDBEdit和TDBGrid通过TDataSource连接到具有数据库感知的控件。Delphi的数据库感知控件基本上是Delphi附带的默认控件,并显示在组件面板的Data controls选项卡上,以及您安装的任何第三方控件上。之所以被称为“数据库感知”,是因为它们是编写的,因此它们显示的值自动从数据集的相关字段派生出来。
还假设数据集名为Table1,并且有一个要更改的CustomerName字段。实现这一目标的最简单代码如下:
Table1.Edit; // put table one into dsEdit state so that field values can be changes
Table1.FieldByName('CustomerName').AsString := 'Jones';
Table1.Post; // save the change(s) to Table1更好的代码可能是
Table1.Edit;
try
Table1.DisableControls; // this prevents the db-aware controls updating on-screen while the changes are made
Table1.FieldByName('CustomerName').AsString := 'Jones';
Table1.FieldByName('CustomeCountry').AsString := 'DE@;
finally
Table1.Post;
Table1.EnableControls; // Eable screen updating od the db-aware controls again
end;这将更新DBEdit控件中显示的值,这些值链接到当前(即高亮显示) DBGrid行的CustomerName和CustomerCountry单元格中的和字段,因为DBGrid中的当前行总是跟踪连接数据集中的当前行。
如果您确实希望从TEdit的文本中更新给定的列,您可以这样做:
Table1.Edit;
DBGrid1.Columns[5].Field.AsString := Edit1.Text;
Table1.Post;https://stackoverflow.com/questions/66824778
复制相似问题