电脑教程中文网
首页  动态网站建设学习 程序  笑话  论坛 娱乐  交友 ADSL  峄城  成功者
中文名:电脑教程中文网,收集了大量的电脑教程! 编程技术文档 游戏开发 笑话站暂时关闭 设为首页
网页设计 HTML | Dreamweaver | CSS | Firework | FrontPage WEB开发 ASP | JSP | PHP | .NET | CGI | JS | VBS | XML | IIS6 | Apache | PWS
程序设计 Java | C++ |VC++ | C# | Delphi | VB | C语言 | 汇编 | Pascal | Perl 数据库 MSSQL | MySQL | Access | VF | Oracle | DB2 | SYBASE |
办公软件 Word | Excel | WPS | PowerPoint 动画平面 Photoshop | ACDSee | 3Dmax | Flash | Coreldraw |
操作系统 Windows 2000 | Windows XP | Windows 2003 | SCO Unix | Windows Vista | unix、Linux | 综合| 服务器 | 系统安全| 黑客技术
其  他 UltraDev | DOS | UML | PWS | Powerbuilder | 开发心得 | 设计理念 | 病毒库 | 其他 | LightTPD (分类排序给您带来不便请谅解)
推  荐: Java文档500篇》《ASP.NET与相关数据库技术高级指南》《TC图形函数详解》《C函数速查手册》《C语言编程宝典之一》《MFC深入浅出》《黑客零起点》《VC++ 编程指南》《JScript 用户指南》 《CSS教程宝典》《Microsoft Jet SQL 参考》《delphi技巧集合》《MySQL 4.1.0 中文参考手册》《MySQL中文手册
【导航】 您现在的位置 : 首页 - VB教程 - 《VB高级应用》- 多用户应用程序中应注意的其它问题(2)--多客户环境下VB数据库编程之(9)

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

日期:2005-7-17 13:48:49 作者:佚名 人气:     来源:网络




问题二 再查询与事务

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对象。为了调用上面的过程,可以在窗体上画一个命令按钮,然后编写如下的事件过程:

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


本文由CLDE.NET原创或整理(收集),如您需转载,请保留一下链接,谢谢!


下一篇:多用户应用程序中应注意的其它问题(3)--多客户环境下VB数据库编程之(10)
※视频教程※
ASP入门到精通视频教程
西安电科大JSP视频教程
photoshop cs2视频教程
flash动画设计师视频教程
Dreamweaver视频教程
VB从入门到精通视频教程
 
 


网站首页 - 友情链接 - 公司简介 - 联系方式 - 广告投放 - 客户服务 - 错误报告 - 免责声明 - About us
CLDE.NET电脑教程中文网版权所有 未经许可禁止镜象和复制本站资料 MSN:CLDE_NET@hotmail.com
技术支持:CLDE.NET信息中心 鲁ICP备05039940号 友情链接QQ:784079(隐)