多用户应用程序中应注意的其它问题(2)--多客户环境下VB数据库编

逝意服

逝意服

2016-02-19 12:54

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐多用户应用程序中应注意的其它问题(2)--多客户环境下VB数据库编,无聊中的都看过来。
问题二再查询与事务
  
  1.再查询数据
  
  在多用户应用程序中,如果以可视的形式把数据显示在窗口中,则需要用最新的数据来更新用户的视图。而要获得由其他用户修改了的最新视图,应用程序必须显式地对数据执行再查询操作。为了获得记录集中数据的最新视图,首先应确定记录集是否支持Requery方法。如果ReCordset对象的Restartable属性值为Tme,则可以使用Requery方法来刷新Recordset对象的内容。如果记录集不支持Requery方法,则必须用OpenRecordset方法再次打开记录集。一般说来,重新打开记录集比使用Requery方法要慢一些。下面这个过程,用来测试一个记录集是否可执行再查询。
  
  过程如下:
  
  FunctionRequeryRecordset(dbsAsDatabase,rstAsRecordset)AsInteger
  OnErrorResumeNext
  '能够再查询记录集吗?
  Ifrst.Restartable=FalseThen
  requeryRecordset=-1
  EXitFunction
  Endlf
  rst.Requery'再查询记录集
  SelectCaseErr'处理所有错误
  Case0
  RequeryReCordset=0
  EXitFunction
  CaseElse
  Err=0
  '重新打开记录集
  '使用rstNane来获取SQL
  '字符串、表或QueryDef的值
  '记录集最初是基于它们的
  Setrst=dbs.OpenRecordset(rst.Name,rst.Type)
  SelectCaseErr
  Case0
  RequeryRecordset=0
  EXitFunction
  CaseElse
  '不返回错误给调用程序
  Err=0
  RequeryRecordset=-l
  EXitFUnctlon
  EndSelect
  EndSelect
  EndFunction
  
  用上面的过程可以再查询一个指定的记录集。如果再查询成功,则过程返回0;如果程序不能对记录集进行再查询,则重新打开记录集。如果不能重新打开记录集,则过程返回-1。该过程有两个参数,其中参数dbs是一个数据库对象;而rst是一个Recordset对象。为了调用上面的过程,可以在窗体上画一个命令按钮,然后编写如下的事件过程:
  
  PrivateSubCommand1_CliCk()
  DimMvdbsAsDatabase
  DimMvTabAsRecordset
  SetMydbs=OPenDatabase("c:dbdirdb1.mdb",dbOpenDynaset)
  SetMyTab=Mydbs.OpenRecordset("Tabel1",dbOpenTable)
  a=RequeryReCordset(Mydbs,MyTab)
  Ifa=0Then
  MsgBox"再查询成功"
  ElSe
  MsgBox"不能执行再查询"
  Endif
  EndSub
  
  程序运行后,单击命令按钮,将调用上面的过程,然后根据具体情况显示相应的信息框。在一般情况下,大多数Recordset对象是可重启动的(或者是可以被再查询的),但基于传递查询和没有固定列宽的交叉表查询的Recordset对象例外,不能再查询这些类型的Recordset对象,为了获得数据的最新状态,必须重新打开这些对象。
  
  2.在多用户环境中使用事务
  
  可以用MicrosoftJet事务把更新划分为多个单元,使它能够被当作整体提交或回退。由于事务缓冲区的更新是临时文件,而不是实际的表,所以它们在多用户环境中也是有用的。在多用户环境中,事务的一般用途是:确保用户在变更共享数据时,所看到的共享数据的视图是完整的。例如,假定应用程序正在执行更新数据的代码,而另一个用户又正在生成相同数据的报表。如果更新没有被包装进事务中,则生成报表的用户接收到的数据可能是不一致的。而如果把更新包装进事务中,则可以确保共享数据的其它用户视图在代码结束运行之前不会受到代码的影响。注意,不要使事务保持打开的时间太长。由于编辑事务而产生的所有锁定,在事务被提交或回退之前,将保持锁定状态,这可能会对应用程序的多用户并发产生有害的影响。->

展开更多 50%)
分享

猜你喜欢

多用户应用程序中应注意的其它问题(2)--多客户环境下VB数据库编

编程语言 网络编程
多用户应用程序中应注意的其它问题(2)--多客户环境下VB数据库编

多用户应用程序中应注意的其它问题(1)--多客户环境下VB数据库编

编程语言 网络编程
多用户应用程序中应注意的其它问题(1)--多客户环境下VB数据库编

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

多用户应用程序中应注意的其它问题(3)--多客户环境下VB数据库编

编程语言 网络编程
多用户应用程序中应注意的其它问题(3)--多客户环境下VB数据库编

数据访问控制--多客户环境下VB数据库编程之(2)

编程语言 网络编程
数据访问控制--多客户环境下VB数据库编程之(2)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MicrosoftJet的多客户模型--多客户环境下VB数据库编程之(1)

编程语言 网络编程
MicrosoftJet的多客户模型--多客户环境下VB数据库编程之(1)

页面锁定--多客户环境下VB数据库编程之(5)

编程语言 网络编程
页面锁定--多客户环境下VB数据库编程之(5)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

在VB中利用UDP协议编写聊天程序

在VB中利用UDP协议编写聊天程序

可拖动窗口附带鼠标控制渐变透明开启关闭功能

可拖动窗口附带鼠标控制渐变透明开启关闭功能
下拉加载更多内容 ↓