Exclusive属性
该属性是一个布尔型属性它标明是否以共享方式打开数据库表如果Exclusive的值为True当打开一个数据库表时其他用户就不能访问该表了若Exclusive的值为False将以共享方式打开一个数据库表显然不能将其他用户正在访问的表以互斥方式打开(设定Exclusive的值为True)对于SQL数据库服务器上的数据库表当以互斥方式被一个用户打开时其他用户可以读取该表中的数据但不能修改表中的数据当然有些数据库服务器不支持这种方式这要具体参看有关的数据库服务器的文档
ReadOnly属性和CanModify属性
这两个属性都是布尔型属性ReadOnly属性决定用户是否能够对表中的数据进行读写ReadOnly为True 时用户只能读取表中的数据ReadOnly为False时用户可以读写表中的数据(假设数据库已授权用户能够读写其中的数据库表)CanModify属性是一个只读属性用户不能够修改其属性值它反映了用户对数据库表拥有的实际特权当ReadOnly为True时CanModify将自动地被置为False当ReadOnly为False时如果数据库允许用户对表进行读写时CanModify为True否则CanModify为False当CanModify为False时数据库表是只读的但不能将其置成编辑状态或插入状态当CanModify属性为True时虽然数据库表对应的数据集部件可以置成编辑和插入状态但是这并不意味着用户能够插入和修改表中的数据因为这还要受到其他因素的限制如用户对SQL数据库服务器的访问权限等的限制
TTable部件还有其他一些属性请参看联机帮助
TTable部件的方法及应用
设定数据库表的使用范围
在我们实际应用中的数据库表中常常存放着大量的数据信息其中包含着很多的记录而我们的应用程序可能只需对其中一部分记录进行操作因此为应用程序指定一个使用范围就显得特别重要了为方便有效地指定数据库表的使用范围Delphi为TTable部件提供了下列方法供用户使用
● SetRangeStart和EditRangeStart方法
● SetRangeEnd和EditRangeEnd方法
● SetRange([Start Values][End Values])方法
● ApplyRange方法
● CancelRange方法
SetRangeStart方法
用于指定检索范围的起始记录调用SetRangeStart方法之后可以为起始记录的一个或多个字段指定相应的字段值SetRangeEnd方法用于指定检索范围的结束记录调用SetRangeEnd方法之后可以为结束记录的一个或多个字段指定相应的字段值
SetRange方法
SetRange方法包含了SetRangeStart和SetRangeEnd方法的功能它可以同时指定检索范围的起始和结束记录起始记录和结束记录的字段值以数组形式送给SetRange其基本形式是
SetRange([起始值][结束值])
ApplyRange方法
根据SetRangeStartSetRangeEnd或SetRange方法说明的检索范围的起始和结束记录具体设定一个检索范围调用ApplyRange方法之后应用程序只能对检索范围内的记录进行有关的操作
CancelRange方法
CancelRange方法的作用与ApplyRange方法的作用是相反的这是取消为表设定的检索范围调用CancelRange方法之后应用程序可以对表中全部记录进行有关的操作
在这里要注意的是如果我们使用的是paradox表或dBASE表在调用SetRangeStartSetRangeEnd以及SetRange方法时只能为表中的索引字段或定义的索引指定相应的字段值以设定检索范围如果使用SQL数据库服务器中的数据库表可以为IndexFieldNames属性中指定的字段指定相应的字段值
例如假设Table与CustomerDB表相连CustomerDB中一个索引字段是CustNo同时应用窗体中有两个编辑框StartVal和EndVal用于输入起始结束记录的字段CustNo的值下面的程序代码便可以为我们设定一个检索范围
TabelSetRangeStart; {指定检索范围的起始记录}
TabelCustNoAsString:= StartValText {为起始记录的CustNo字段指定字段值}
TabelSetRangeEnd; {指定检索范围的结束记录}
if EndValText <> then
TabelCustNoAsString := EndValText; {为结束记录的CustNo 字段指定字段值}
TabelApplyRange; {根据检索范围的起始结束记录设定检索范围}
注意上面的程序代码在为结束记录的CustNo字段指定字段值时首先检查EndVal的值是否为空如果EndVal的值为空那么设定的检索范围没有包含一条记录因为没有任何记录的字段值小于NIL;如果StartVal的值为空那么检索范围将从表中的第一条记录开始因为表中任何记录的字段值都大于空(NIL)
上述代码可以用SetRange方法改写成
If EndValText <> then
TabelSetRane([StartValText][EndValText])
TableApplyRange;
EditRangeStart和EditRangeEnd方法的使用完全类似于SetRangeStart和SetRangeEnd方法只是调这两个方法是设定一个可编辑的范围
又如假设一个表中的一个索引包含两个字段LastName和FirstName我们为索引中的一个字段或多个字段指定相应的字段值设定数据库表的使用范围
TableSetRangeStart;
TableFieldByName(LastName)Asstring := Smith;
TableSetRangeEnd;
TabelApplyRange;
上述代码设定的范围包括LastName字段的值大于或等于Smith的所有记录而下面的代码设定的范围则包括LastName字段的值大于或等于Smith且FirstName字段的值大于或等于J的记录
TableSetRangeStart;
TableFieldByName(LastName)Asstring := Smith;
TableFieldByName(FirstName)Asstring := J;
TableSetRangeEnd;
TabelApplyRange;
查找数据库表中的记录
如果想查找数据库表中的记录必须想指定查找记录的一些字段的字段值然后在表中进行检索检索出与查找值相匹配的记录来如果我们是在Paradox或dBASE数据库中的表中查找记录那么查找值所对应的字段必须是表中的关键字段或辅助索引字段如果查找SQL数据库服务器中的表那么查找值必须是表的IndexFieldNames属性中指定的字段
[] [] [] []