15.6.1.4 字段部件的访问
字段部件对应着数据库表中实际的字段,用户要读写数据库表中的字段值其实是通过访问相应的字段部件进行的。在前面的章节中我们介绍过在Delphi的数据库应用程序中有两类字段部件:一类是利用字段编辑器创建的永久性字段部件;另一类是随着数据集部件被激活(被打开)而动态生成的字段部件。对于永久性字段部件的访问可以直接调用使用字段部件的名字进行。假设我们在设计阶段利用字段编辑器创建了对应于Customer.DB表中Company字段的字段部件Table1Company,下面的代码访问Company字段的字段值,并将该字段值显示在编辑框部件Edit1中。
Edit1.Text := Table1Company.Value;
因为company字段是字符串类型的数据,它与Edit1中的数据类型相匹配的,因此可以直接使用字段部件的Value属性读取字段值。如果两个变量的类型不匹配,则要使用表15.9中的转换函数进行字段值的读取。例如:要读取Customer.DB表中的CustNo字段的值并将它显示在编辑模框Edit1中,假设我们已用字段编辑器(Fields Editor)创建了CustNo相应的字段部件,Table1CustNo,则程序代码如下:
Edit1.Text := Table1CustNo.AsString;
访问动态生成的字段部件相对要困难一些,因为动态生成的字段部件是没有自己的名字的,我们必须利用特殊的手段获得数据库表中各字段对应的字段部件,然后对字段进行访问。一般采用的方法有两种:
● 使用数据集部件的Fields属性
● 使用数据集部件的FieldByName方法
1. 使用数据集部件的Fields属性访问数据库表中各字段
数据集部件的Fields属性是与数据集部件相连的数据库表中各个字段对应的动态字段部件的名字列表,因此我们可以通过Fields属性的下标(即索引号)来访问各字段部件,从而达到访问数据库表中的各个字段,索引号从0开始,也就是说数据库表中第一个字段对应着Fields列表的第一行即0索引,第二个字段对应的Fields的索引号为1,以此类推。下面的例子是访问Customer.DB表中的第一个字段并在编辑框Edit1中显示其字段值。假设Table1与数据库表Customer.DB相连。
Edit1.Text := Table1.Fields[0].AsString;
下面的代码是将编辑框Edit1中的字符值赋给Customer.DB表中当前记录的第一个字段,以实现修改Customer.DB表中的字段值。
Table1.Fields[0].AsString := Edit1.Text;
2.使用数据集部件的FieldByName方法访问字段部件
在数据集部件所拥有的方法中,有一个FieldByName方法,它是专门用于访问数据集部件中动态生成的字段部件的,调用FieldByName方法时,必须要把数据库表中的字段名作为参数传给FieldByName,调用该方法后便可以得到该字段所对应的字段部件,这样通过字段部件我们便可以读写表中相应的字段值了,用这种方法访问字段部件时,必须要知道数据库表中各个字段的名字,否则是没有办法调用该方法的。还是基于上面的假设。下面是访问Customer.DB表中的CustNo字段的程序代码:
Edit1.Text := Table1.FieldByName('CustNo').AsString;
Table1.FieldByName('CustNo').AsString := Edit1.Text;
在使用这两种方法访问动态生成的字段部件时,可以使用表15.9中的转换函数,在变量和字段值之间进行数据类型的转换。
15.6.2 字段编辑器的使用
字段编辑器(Fields Editor)主要是用于创建永久性的字段部件。在前面的内容中我们知道,当TTable或TQuery部件与数据库表相连接时,且TTable或TQuery部件被激活时(Active属性被设置成True或调用Open方法),Delphi便动态地为表中各字段创建相应的字段部件,字段部件中包含着相应字段的很多信息如字段值、字段值的显示、编辑格式等,有时我们在应用程序中为了更加方便、可靠地访问数据库表中各个字段,需要创建永久性的字段部件,这时我们必须要借助于字段编辑器来实现我们的设想。字段编辑器的主要功能如下:
● 创建永久性的字段部件
● 修改永久性字段的显示属性,如显示格式、显示宽度等
● 删除永久性的字段部件
● 增加新的永久性的字段部件
● 定义计算字段(不对应数据库表中实际的字段,字段值根据表中其他字段的值计算得出)
15.6.2.1 打开字段编辑器
为TTable和TQuery部件打开字段编辑有两种方法:
● 用鼠标左键双击TTable或TQuery部件
● 选择TTable部件或TQuery部件,然后单击鼠标右键,然后从弹出式菜单中选择 Fields Editor
字段编辑器Fields Editor被打开以后,窗体的名字和数据集部件的名字会显示在窗口的标题上。
字段编辑器Fields itor中的Fields列表框是用于显示已经创建的永久性字段部件的名字的。字段编辑器Fields Editor第一次被打开时,该列表框是空的,因为在此之前的字段部件都是动态生成的,只要Fields列表框中有字段部件,那么与数据集部件相连的数据浏览部件中只显示Fields中列出的字段的字段值,在Fields列表框中,可以通过拖放字段部件的名字来改变相应的字段值在数据浏览部件中的显示顺序,如在TDBGrid部件中根据各字段在Fields列表框中的顺序显示各字段的值。
在字段编辑器Fields Editor窗体上面的导航按钮是用来移动TTable或TQuery部件中的记录指针的,使用导航按钮可以将记录指针向前、向后移动,也可以移到第一条记录处或最后一条记录处。
字段编辑器中的弹出式菜单
15.6.2.2 增加字段部件
字段编辑器Fields Editor中的Add Fields菜单项用于向数据集部件中增加字段部件的,单击Add Fields菜单项时便会打开增加字段部件对话框,如图15.9所示。Available Fields列表框中显示出数据集部件TTable或TQuery中当前可以用于创建永久字段部件的全部的字段,也就是说Available Fields列表框中显示字段是数据库表中实际存在的字段,而且还没有为这些字段创建相应的永久性的字段部件,在缺省状态下所有的字段都被选择用于创建相应的永久性的字段部件,用鼠标单击其中的字段名可以有选择地创建其相应的永久性的字段部件,选择好有关的字段名之后,单击OK按钮便可以创建永久性的字段部件。
字段编辑器的增加字段部件对话框