多用户应用程序中应注意的其它问题(2)
问题二
再查询与事务
1.再查询数据
在多用户应用程序中,如果以可视的形式把数据显示在窗口中,则需要用最新的数据来更新用户的视图。而要获得由其他用户修改了的最新视图,应用程序必须显式地对数据执行再查询操作。为了获得记录集中数据的最新视图,首先应确定记录集是否支持Requery方法。如果ReCordset对象的Restartable属性值为Tme,则可以使用Requery方法来刷新Recordset对象的内容。如果记录集不支持Requery方法,则必须用OpenRecordset方法再次打开记录集。一般说来,重新打开记录集比使用Requery方法要慢一些。下面这个过程,用来测试一个记录集是否可执行再查询。
过程如下:
Function
RequeryRecordset(dbs As Database,rst As Recordset) As
Integer
On Error Resume
Next
'能够再查询记录集吗?
If rst.Restartable=False
Then
requeryRecordset=-1
EXit Function
End
lf
rst.Requery '再查询记录集
Select Case Err
'处理所有错误
Case 0
RequeryReCordset=0
EXit
Function
Case
Else
Err=0
'重新打开记录集
'使用rstNane来获取SQL
'字符串、表或QueryDef的值
'记录集最初是基于它们的
Set
rst=dbs.OpenRecordset(rst.Name, rst.Type)
Select Case
Err
Case0
RequeryRecordset=0
EXit
Function
Case
Else
'不返回错误给调用程序
Err=0
RequeryRecordset=-l
EXit
FUnctlon
End Select
End Select
End
Function
用上面的过程可以再查询一个指定的记录集。如果再查询成功,则过程返回0;如果程序不能对记录集进行再查询,则重新打开记录集。如果不能重新打开记录集,则过程返回-1。该过程有两个参数,其中参数dbs是一个数据库对象;而rst是一个Recordset对象。
|