有没有一种方法可以将数据库的当前记录保存到变量中?

时间:2020-08-08 19:36:33

标签: delphi

在delphi 10.3中,我有一个数据库显示在dbGrid上。我需要将所选记录中的某些字段显示到其他表单上。我不确定是否需要将所选记录保存到变量并将其声明为全局变量,然后以下一种形式调用该全局变量?有办法吗?

1 个答案:

答案 0 :(得分:3)

对q的简短回答是,可以做到,实际上很简单。

Delphi中的数据库访问基于数据集(TDataSet)的抽象模型, 如果不为空,则具有一个逻辑光标,该光标精确地将一条记录指定为选定的记录 (或“当前”)一种,并且有多种移动方法(“第一”,“最后”,“下一个”,“优先级”等) 光标周围以访问其他记录。您可以访问当前字段中的值 通过诸如

的呼叫进行记录
SomeString := Table1.FieldByName('FirstName').AsString;

但是,Delphi附带了一套完整的“可识别数据库的”控件(请参见“组件面板Data Access选项卡”),该控件用于显示并允许在屏幕上编辑记录数据而无需编写任何代码,最少用于简单的编辑操作。

有关此操作的详细信息超出了此类SO答案的范围,但您不会遇到任何麻烦 找到关于该主题的教程,您确实需要这样做。

一个TBGrid显示从数据集中获取数据的几个相邻(按访问顺序)记录 通过TDataSource组件,该组件将TDBGrid与您正在使用的特定数据集隔离 (有许多TDataSet后代类型的库可用于不同的数据库类型, DBMS。一个方便的事情(尤其是从您的角度来看)是TDBGrid的编码可以确保 网格中的所选行(或者严格来说是其中之一,因为网格支持多选 记录)是数据集光标所在的记录。

因此,实现所需目标的最简单方法是:

  • 将TDataSource添加到第二个表单,并将其DataSet属性连接到正在馈送的数据集 您的TDBGrid。

  • 向您的表单添加数据库感知控件,例如TDBEdit和TDBText, 将它们在“对象检查器”中连接到您添加的TDataSource并将其FieldName属性设置为名称 要显示的字段中。

  • 这就是它的全部,实际上-您在使用全局变量时不会一团糟 似乎正在设想。