首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改DBgrid行值?

如何更改DBgrid行值?
EN

Stack Overflow用户
提问于 2021-03-26 21:56:43
回答 1查看 986关注 0票数 1

我想用外部数据更改DBgrid行值,如何实现?

例如,我想通过单击按钮将Tedit值添加到dbgrid选定的行列(例如5)中。

另外,我希望将1 dbgrid的值添加到另一个dbgrid。(添加一个现有的数字,而不是替换)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-26 22:24:43

假设您有一个数据集通过一个TDBEdit和TDBGrid通过TDataSource连接到具有数据库感知的控件。Delphi的数据库感知控件基本上是Delphi附带的默认控件,并显示在组件面板的Data controls选项卡上,以及您安装的任何第三方控件上。之所以被称为“数据库感知”,是因为它们是编写的,因此它们显示的值自动从数据集的相关字段派生出来。

还假设数据集名为Table1,并且有一个要更改的CustomerName字段。实现这一目标的最简单代码如下:

代码语言:javascript
复制
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

更好的代码可能是

代码语言:javascript
复制
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的文本中更新给定的列,您可以这样做:

代码语言:javascript
复制
Table1.Edit;
DBGrid1.Columns[5].Field.AsString := Edit1.Text; 
Table1.Post;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66824778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档