第十五章-数据访问部件的应用及编程(三)(3)

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按钮便可以创建永久性的字段部件。 

字段编辑器的增加字段部件对话框  

时间: 2024-12-22 09:57:08

第十五章-数据访问部件的应用及编程(三)(3)的相关文章

第十五章-数据访问部件的应用及编程(一)(1)

在这一章里我们主要介绍Delphi的数据访问部件的层次结构.多部件之间的关系.部件的属性.方法.事件以及各部件的应用.这些部件包括: ● TSession部件 ● 数据集部件(TTable和TQuery) ● TDatasource部件 ● 字段对象TField ● 字段编辑器的使用 ● TReport部件和TBatchMove部件 我们对这些部件的属性.方法和事件进行一般性的描述,读者在实际使用Delphi开发应用程序时,还可以通过联机帮助获得有关部件更详细的信息. 15.1 Delphi数据

第十五章-数据访问部件的应用及编程(三)(4)

15.6.2.3 删除字段部件 用字段编辑器Fields Editor为数据集部件创建好的字段部件都会显示在字段编辑器的Fields列表框中,如果用户认为其中的一些字段部件不合适或不再需要时,可以单击这些不需要的字段部件,然后单击鼠标右键弹出一佣弹出式菜单,从弹出式菜单中选择Delete菜单项,便可删除相应的字段部件,如果在弹出式菜单中单击Select All菜单项,然后选择Delete菜单项,这样会删除已创建好的所有的字段部件.某一个字段部件被删除以后,通过单击Add Fields菜单项可以重

第十五章-数据访问部件的应用及编程(三)(1)

字段部件在应用程序中始终是不可见的部件.在程序运行过程中是如此,在程序设计阶段也是如此,但是它在应用中起着非常重要的作用,可以说它是所有数据浏览部件从数据库表中显示.编辑数据的基础.这是因为字段部件直接对应着数据库表中的字段,浏览和修改表中的数据必须要通过字段部件,同时字段部件所拥有的属性可以用来说明数据库表中对应的字段的数据类型.当前的字段值.显示格式.编辑格式等,字段部件的事件如OnValidate可以用来设定输入字段值时进行有效性检验. 数据库表的每一列在应用程序中都有其对应的一个字段部件

第十五章-数据访问部件的应用及编程(二)(1)

数据集部件TTable或TQuery具有很多的事件.为这些事件编写相应的程序代码可以进行有效性验证.计算可计算字段的值.确认对数据库表的多种操作等等.这些事件及其描述如表15.4所示. 表15.4 数据集部件常用的事件 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 事 件 描 述 ─────────────────────────────────── BeforeOpen,Afteropen 在数据集部件被打开之前/之后被触发 ─────────────────────

第十五章-数据访问部件的应用及编程(二)(4)

15.5.1 TDataSource部件的属性 TDataSource部件除了其他部件都拥有的Name属性和Tag属性之外,主要有下面几个属性: DataSet属性:该属性说明TDataSource部件从中获取数据的数据集的名字,它可以是TTable部件的名字,也可以是TQuery部件的名字,甚至还可以指定其他窗体内的数据集作为该属性的值,如在下面的程序中我们指定窗体Form2中的table1作为窗体Form1中的DataSource1的DataSet属性值: TForm1.Formcreate

第十五章-数据访问部件的应用及编程(二)(3)

15.4.2.2 查找数据库表中的记录 如果想查找数据库表中的记录,必须想指定查找记录的一些字段的字段值,然后在表中进行检索,检索出与查找值相匹配的记录来.如果我们是在Paradox或dBASE数据库中的表中查找记录,那么查找值所对应的字段必须是表中的关键字段或辅助索引字段.如果查找SQL数据库服务器中的表,那么查找值必须是表的IndexFieldNames属性中指定的字段. Delphi提供了两种方式在数据库表中查找记录:Goto方式和Find方式.这两种方式十分相似,它们的主要区别在于为查找

第十五章-数据访问部件的应用及编程(一)(4)

SetRecords方法:调用该方法可以修改表中当前记录的多个字段的值,调用该方法之前必须将数据集部件置成编辑状态,调用该方法之后,还要调用post方法,才能真正将当前记录的修改写回数据库表.调用SetRecord方法时,被修改的字段值必须要与表中实际存在的字段名对应,并且数据类型要相匹配.例如,下面的代码是修改上面刚刚插入的那条记录. Table1.Edit; Tabel1.SetRecord(, , ,9600000,1200000000); Tabel1.post; 这一段代码是修改上面刚

第十五章-数据访问部件的应用及编程(三)(2)

表15.6中的属性并不是所有类型的字段部件都拥有的,如一个TStringField类型的字段部件是没有Currency.MaxValue.MinValue和DisplayFormat属性的,一个TFloatField类型的字段部件是没有Size属性的. 对于布尔型属性,在设计过程中的Object Inspector中双击该属性,该属性的值将会在True和False之间来回切换,其他属性需要用户输入属性值或从下拉式列表框中选取属性值.所有的属性都可以通过程序代码进行设置.大多数属性可以独立地设置,

第十五章-数据访问部件的应用及编程(二)(2)

15.4.2 TTable部件的方法及应用 15.4.2.1 设定数据库表的使用范围 在我们实际应用中的数据库表中常常存放着大量的数据信息,其中包含着很多的记录,而我们的应用程序可能只需对其中一部分记录进行操作,因此,为应用程序指定一个使用范围就显得特别重要了,为方便有效地指定数据库表的使用范围Delphi为TTable部件提供了下列方法供用户使用: ● SetRangeStart和EditRangeStart方法 ● SetRangeEnd和EditRangeEnd方法 ● SetRange(