轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
一起源码网 门户 电脑主程序开源 查看主题

多用户应用程序中应注意的其它问题(2)

发布者: apple181 | 发布时间: 2018-1-16 00:15| 查看数: 2148| 评论数: 1|帖子模式

问题二 再查询与事务

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=-1EXit 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 FUnctlonEnd SelectEnd Select

End Function

用上面的过程可以再查询一个指定的记录集。如果再查询成功,则过程返回0;如果程序不能对记录集进行再查询,则重新打开记录集。如果不能重新打开记录集,则过程返回-1。该过程有两个参数,其中参数dbs是一个数据库对象;而rst是一个Recordset对象。为了调用上面的过程,可以在窗体上画一个命令按钮,然后编写如下的事件过程:

Private Sub Command1_CliCk()Dim Mvdbs As Database

Dim MvTab As Recordset

Set Mydbs=OPenDatabase("c:\dbdir\db1.mdb",dbOpenDynaset)

Set MyTab=Mydbs.OpenRecordset("Tabel1",dbOpenTable)

a=RequeryReCordset(Mydbs,MyTab)

If a=0 Then

MsgBox "再查询成功"

ElSe

MsgBox "不能执行再查询"

End if

End Sub

程序运行后,单击命令按钮,将调用上面的过程,然后根据具体情况显示相应的信息框。在一般情况下,大多数Recordset对象是可重启动的(或者是可以被再查询的),但基于传递查询和没有固定列宽的交叉表查询的Recordset对象例外,不能再查询这些类型的Recordset对象,为了获得数据的最新状态,必须重新打开这些对象。

2.在多用户环境中使用事务

可以用Microsoft Jet事务把更新划分为多个单元,使它能够被当作整体提交或回退。由于事务缓冲区的更新是临时文件,而不是实际的表,所以它们在多用户环境中也是有用的。在多用户环境中,事务的一般用途是:确保用户在变更共享数据时,所看到的共享数据的视图是完整的。例如,假定应用程序正在执行更新数据的代码,而另一个用户又正在生成相同数据的报表。如果更新没有被包装进事务中,则生成报表的用户接收到的数据可能是不一致的。而如果把更新包装进事务中,则可以确保共享数据的其它用户视图在代码结束运行之前不会受到代码的影响。注意,不要使事务保持打开的时间太长。由于编辑事务而产生的所有锁定,在事务被提交或回退之前,将保持锁定状态,这可能会对应用程序的多用户并发产生有害的影响。

最新评论

goumei 发表于 2022-5-11 15:10
情侣网站源码

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表