DELPHI基础教程:数据访问部件的应用及编程(二)[2]
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方法
根据SetRangeStart SetRangeEnd或SetRange方法说明的检索范围的起始和结束记录 具体设定一个检索范围 调用ApplyRange方法之后 应用程序只能对检索范围内的记录进行有关的操作
CancelRange方法
CancelRange方法的作用与ApplyRange方法的作用是相反的 这是取消为表设定的检索范围 调用CancelRange方法之后应用程序可以对表中全部记录进行有关的操作
在这里要注意的是 如果我们使用的是paradox表或dBASE表 在调用SetRangeStart SetRangeEnd以及SetRange方法时 只能为表中的索引字段或定义的索引指定相应的字段值 以设定检索范围 如果使用SQL数据库服务器中的数据库表 可以为IndexFieldNames属性中指定的字段指定相应的字段值
例如 假设Table 与Customer DB表相连 Customer DB中一个索引字段是CustNo 同时应用窗体中有两个编辑框StartVal和EndVal用于输入起始 结束记录的字段CustNo的值 下面的程序代码便可以为我们设定一个检索范围
Tabel SetRangeStart; {指定检索范围的起始记录}
Tabel CustNo AsString:= StartVal Text {为起始记录的CustNo字段指定字段值}
Tabel SetRangeEnd; {指定检索范围的结束记录}
if EndVal Text <> then
Tabel CustNo AsString := EndVal Text; {为结束记录的CustNo 字段指定字段值}
Tabel ApplyRange; {根据检索范围的起始 结束记录设定检索范围}
注意上面的程序代码 在为结束记录的CustNo字段指定字段值时 首先检查EndVal的值是否为空 如果EndVal的值为空 那么设定的检索范围没有包含一条记录 因为没有任何记录的字段值小于NIL;如果StartVal的值为空 那么检索范围将从表中的第一条记录开始 因为表中任何记录的字段值都大于空(NIL)
上述代码可以用SetRange方法改写成
If EndVal Text <> then
Tabel SetRane([StartVal Text] [EndVal Text])
Table ApplyRange;
EditRangeStart和EditRangeEnd方法的使用完全类似于SetRangeStart和SetRangeEnd方法 只是调这两个方法是设定一个可编辑的范围
又如 假设一个表中的一个索引包含两个字段LastName和FirstName 我们为索引中的一个字段或多个字段指定相应的字段值 设定数据库表的使用范围
Table SetRangeStart;
Table FieldByName( LastName ) Asstring := Smith ;
Table SetRangeEnd;
Tabel ApplyRange;
上述代码设定的范围包括LastName字段的值大于或等于Smith的所有记录 而下面的代码设定的范围则包括LastName字段的值大于或等于Smith且FirstName字段的值大于或等于 J 的记录
Table SetRangeStart;
Table FieldByName( LastName ) Asstring := Smith ;
Table FieldByName( FirstName ) Asstring := J ;
Table SetRangeEnd;
Tabel ApplyRange;
查找数据库表中的记录
如果想查找数据库表中的记录 必须想指定查找记录的一些字段的字段值 然后在表中进行检索 检索出与查找值相匹配的记录来 如果我们是在Paradox或dBASE数据库中的表中查找记录 那么查找值所对应的字段必须是表中的关键字段或辅助索引字段 如果查找SQL数据库服务器中的表 那么查找值必须是表的IndexFieldNames属性中指定的字段
lishixinzhi/Article/program/Delphi/201311/25158