首页 / 软件开发 / Delphi / 第十五章-数据访问部件的应用及编程(二)(2)
第十五章-数据访问部件的应用及编程(二)(2)2007-05-0715.4.2 TTable部件的方法及应用15.4.2.1 设定数据库表的使用范围在我们实际应用中的数据库表中常常存放着大量的数据信息,其中包含着很多的记录,而我们的应用程序可能只需对其中一部分记录进行操作,因此,为应用程序指定一个使用范围就显得特别重要了,为方便有效地指定数据库表的使用范围Delphi为TTable部件提供了下列方法供用户使用:● SetRangeStart和EditRangeStart方法● SetRangeEnd和EditRangeEnd方法● SetRange([Start Values],[End Values])方法● ApplyRange方法● CancelRange方法1. SetRangeStart方法用于指定检索范围的起始记录,调用SetRangeStart方法之后,可以为起始记录的一个或多个字段指定相应的字段值。SetRangeEnd方法用于指定检索范围的结束记录,调用SetRangeEnd方法之后,可以为结束记录的一个或多个字段指定相应的字段值。2. SetRange方法SetRange方法包含了SetRangeStart和SetRangeEnd方法的功能,它可以同时指定检索范围的起始和结束记录,起始记录和结束记录的字段值以数组形式送给SetRange,其基本形式是:SetRange([起始值],[结束值])3. ApplyRange方法根据SetRangeStart,SetRangeEnd或SetRange方法说明的检索范围的起始和结束记录,具体设定一个检索范围,调用ApplyRange方法之后,应用程序只能对检索范围内的记录进行有关的操作。
4. CancelRange方法CancelRange方法的作用与ApplyRange方法的作用是相反的,这是取消为表设定的检索范围,调用CancelRange方法之后应用程序可以对表中全部记录进行有关的操作。在这里要注意的是:如果我们使用的是paradox表或dBASE表,在调用SetRangeStart,SetRangeEnd以及SetRange方法时,只能为表中的索引字段或定义的索引指定相应的字段值,以设定检索范围。如果使用SQL数据库服务器中的数据库表,可以为IndexFieldNames属性中指定的字段指定相应的字段值。例如:假设Table1与Customer.DB表相连,Customer.DB中一个索引字段是CustNo,同时应用窗体中有两个编辑框StartVal和EndVal用于输入起始、结束记录的字段CustNo的值,下面的程序代码便可以为我们设定一个检索范围:Tabel1.SetRangeStart; {指定检索范围的起始记录}Tabel1CustNo.AsString:= StartVal.Text {为起始记录的CustNo字段指定字段值}Tabel1.SetRangeEnd; {指定检索范围的结束记录}if EndVal.Text <> " " thenTabel1CustNo.AsString := EndVal.Text; {为结束记录的CustNo 字段指定字段值}Tabel1.ApplyRange; {根据检索范围的起始、结束记录设定检索范围}注意上面的程序代码,在为结束记录的CustNo字段指定字段值时,首先检查EndVal的值是否为空,如果EndVal的值为空,那么设定的检索范围没有包含一条记录,因为没有任何记录的字段值小于NIL;如果StartVal的值为空,那么检索范围将从表中的第一条记录开始,因为表中任何记录的字段值都大于空(NIL)。上述代码可以用SetRange方法改写成:If EndVal.Text <>" " thenTabel1.SetRane([StartVal.Text].[EndVal.Text]);Table1.ApplyRange;EditRangeStart和EditRangeEnd方法的使用完全类似于SetRangeStart和SetRangeEnd方法,只是调这两个方法是设定一个可编辑的范围。又如:假设一个表中的一个索引包含两个字段LastName和FirstName,我们为索引中的一个字段或多个字段指定相应的字段值,设定数据库表的使用范围。Table1.SetRangeStart;Table1.FieldByName("LastName").Asstring := "Smith";Table1.SetRangeEnd;Tabel1.ApplyRange;上述代码设定的范围包括LastName字段的值大于或等于Smith的所有记录。而下面的代码设定的范围则包括LastName字段的值大于或等于Smith且FirstName字段的值大于或等于"J"的记录。Table1.SetRangeStart;Table1.FieldByName("LastName").Asstring := "Smith";Table1.FieldByName("FirstName").Asstring := "J";Table1.SetRangeEnd;Tabel1.ApplyRange;