首页 / 软件开发 / Delphi / 第十四章-简单数据库应用的创建及MASTAPP介绍(二)(2)
第十四章-简单数据库应用的创建及MASTAPP介绍(二)(2)2007-05-0714.4.4 字段对象的访问 字段对象在应用程序中有动态生成的,也有通过字段编辑器Fields Editor 创建的永久性的,它们虽然在设计和运行阶段都是不可见,但是它们跟其他的对象一样都拥有自己的属性、方法和事件,因此我们在应用程序中是可以对字段对象进行控制和访问的。因为动态字段对象是没有自己的名字的,永久性的字段对象有自己的名字,所以对这两种字段对象的访问方法是不一样的。14.4.4.1 动态字段对象的访问动态字段对象存在于数据集部件TTable和TQuery部件中,它们是随着磁盘上的数据库文件的打开而动态生成的,并且每一个字段对象对应于数据库表中的一个字段(即记录的一列),TTable或TQrery部件中所有的字段对象存在属性Fields列表中,Fields列表中的字段对象就像数组元素一样拥有自己的索引号,我们可以用这个索引号来访问字段对象。索引号在程序运行时赋值,从0开始,表中最左边的一列(第一个字段)的索引号为0,紧接着右边一个为1,以此类推。访问这些属性的方法和处理其他对象一样。 Table1.Fields[0].DisplayLabel:="标识符" 上述代码让我们访问与Table1相连的数据库表中的第一个字段,并为该字段指定一个标题,这是通过设置它的DisplayLabel属性值为一个特定的标识符来实现的。 通过索引号来访问Fields属性中的字段在使用For循环对列号进行迭代时会非常有用。但是在大多数简单应用程序中,通过列名(字段名)来访问字段会更加明白而且易读。在TTable部件中,提供了一个名为FieldByName的方法以便让我们通过列名访问字段对象。Table1.FieldByName("CustNo").DisplayLabel:="标识符"通过这种途径同样可以访问CUSTOMER.DB表中的CustNo字段,并为该字段指定一个标题信息。 现在我们可以建立一个允许用户通过字段名和索引号来访问Customer.DB 表中的字段对象的简单窗体。字段对象的访问 在该应用窗体的运行过程中,我们通过程序来访问其中的字段对象并设置有关的属性,这一控制过程我们放在窗体的OnCreate事件处理过程中。例14.1 在窗体的Oncreate事件处理过程中访问字段对象。 procedure TForm1.FormCreate(Sender:TObject);Beginwith Table1 Dobegin{通过索引号访问字段对象}Field[0].DisplayLabel:="客户编号";{通过字段名访问字段对象}FieldByName("Company").DisplayLabel:="公司名称"; FieldByName("Phone").DisplayLabel:="电话号码"; FieldByName("LastInvoiceDate").DisplayLabel:="购买日期"; end;end; 在程序运行过程中访问字段对象 14.4.4.2 永久性字段对象的访问 通过字段编辑器Fields Editor 建立的永久性字段对象的访问相对于动态字段对象的访问要简单得多,我们在程序中可以直接通过字段对象的名称(即Name属性)进行访问。例如:Table1CustNo.DisplayLabel:="客户编号";Table1CustNo.DisplayWidth:=12; 14.4.4.3 字段对象的读取和赋值 通过字段对象的Value属性,我们可以读取字段对象的值,例如在如图14.13所示的窗体中,单击Read按钮便可以将Customer.DB表中当前记录的COMPANY字段的值读取到编辑框Edit1中。 读取字段对象的字段值窗体中各部件的属性如表14.7所示 表14.7 各部件的属性 ━━━━━━━━━━━━━━━━━━━━━━━━部件的属性 属 性 值────────────────────────Button1.Caption &ReadButton1.Name Button1Label1.Caption 字段值Label1.Name Label1Edit1.Text Edit1.Name Edit1━━━━━━━━━━━━━━━━━━━━━━━━其它部件的的属性跟前面的例子一样。为Read按钮编辑的OnClick事件处理过程如下: procedure Form1.TButton1Click(Sender:TObject);beginEdit1.Text:=Table1Company.Value;end; 在这里要注意的是:从字段对象中读取字段值时必须要将它赋给与之数据类型相匹配的变量,否则会出错。在上面的程序代码中,Table1Company的类型是TStringField 即是字符串类型的字段,而编辑框Edit1的属性Text的类型也是字符串型的,因而它们是匹配的。如果类型不匹配,则要经过一定的转换才能够相互赋值。如: Edit1.Text:=Table1CustNo.Value 这条代码在运行过程中将会出错,因为TablelcustNo是TFloatField 类型即是数值型数据,要在编辑框Edit1中显示数值型数据要经过下列转换: Edit1.text:=Table1CustNo.AsString; AsString是字段对象的属性,通过字段对象的AsString属性可以读取字段值并且将它转换成字符串类型。字段对象的字段值可以转换成以下几种类型的数据:AsString: 将字段值转换成字符串数据AsBoolean: 将字段值转换成布尔型数据AsDateTime: 将字段值转换成日期时间数据 AsFloat: 将字段值转换成数值型数据AsInteger: 将字段值转换成整数型数据下面的程序代码是从字段对象中读取字段值并将它显示在编辑框Edit1中,或者将字段值赋给相匹配的变量。 CustNoDouble: Double;CustNoInt: Integer;CustNoString: String;{在Edit1中显示字段值}Edit1.Text:=Table1Company;{类型相匹配,不需要转换}Edit1.Text:=Table1CustNo.AsString;{类型不匹配,需要转换}{将字段值赋给变量}CustNoDouble:=Table1CustNo.Value;{类型相匹配,不需要转换}CustNoInt:=Table1CustNo.AsInteger;{类型不匹配,需要转换}CustNoString:=Table1CustNo.AsString;{类型不匹配,需要转换}