TTable部件还有其他一些属性请参看联机帮助
15.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 <> ' ' then
Tabel1CustNo.AsString := EndVal.Text; {为结束记录的CustNo 字段指定字段值}
Tabel1.ApplyRange; {根据检索范围的起始、结束记录设定检索范围}
注意上面的程序代码,在为结束记录的CustNo字段指定字段值时, 首先检查EndVal的值是否为空,如果EndVal的值为空,那么设定的检索范围没有包含一条记录, 因为没有任何记录的字段值小于NIL;如果StartVal的值为空,那么检索范围将从表中的第一条记录开始,因为表中任何记录的字段值都大于空(NIL)。
上述代码可以用SetRange方法改写成:
If EndVal.Text <>' ' then
Tabel1.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;
15.4.2.2 查找数据库表中的记录
如果想查找数据库表中的记录,必须想指定查找记录的一些字段的字段值,然后在表中进行检索,检索出与查找值相匹配的记录来。如果我们是在Paradox或dBASE数据库中的表中查找记录,那么查找值所对应的字段必须是表中的关键字段或辅助索引字段。如果查找SQL数据库服务器中的表,那么查找值必须是表的IndexFieldNames属性中指定的字段。
Delphi提供了两种方式在数据库表中查找记录:Goto方式和Find方式。这两种方式十分相似,它们的主要区别在于为查找指定查找值的方法不一样。
使用Goto方式进行数据查找使用的方法有SetKey方法、GotoKey方法和GotoNearest方法。其实际步骤如下:
①确保要查找的字段是关键字段或辅助索引字段。
②调用SetKey方法把与表对应的TTable部件置成查找状态。
③把查找值赋给相应的字段。
④调用GotoKey方法,并测试它的返回值检验查找是否成功。
假设Table1对应的表中第一个字段是关键字段,Edit1是应用窗体中的一个编辑框,用户可以通过Edit1输入查找值。下面的代码将通过Goto方式进行查找。
Table1.SetKey; {将Table1置成查找状态}
Table1.Field[0].AsString := Edit1.Text; {指定查找值}
Table1.GotoKey; {进行查找}
上面最后一行代码是根据用户指定的查找值,在表中执行查找。查找的结果有两种,也许成功也许失败,这是由调用GotoKey方法之后返回的布尔值来决定,如果返回True,那么查找成功,并且记录指针会指向与查找值匹配的记录,如果返回Fale,那么查找失败,记录指针的位置不发生变化。下面的代码可以测试调用GotoKey方法之后的返回值,告知用户查找是否成功。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




