中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
如何判断是否以独占方式打开当前数据库?
作者:未知 时间:2004-01-18 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

如何判断是否以独占方式打开当前数据库?

 

问题:

如何判断是否以独占方式打开当前数据库?

在链接或者用ADO操作其他数据库时,如果被操作的数据库已经被某用户以独占方式打开,就会出错,如何预先判断该数据库是否已经被独占打开?

 


方法一:


很简单,只要判断 currentproject.connection.ConnectionString中是否包含以下字母
Jet OLEDB:Database Locking Mode=0
写一个函数就可以判断:

Function testLockMode()
    If InStr(CurrentProject.Connection.ConnectionString, "Jet OLEDB:Database Locking Mode=0") > 0 Then
        MsgBox "本数据库已经用独占方式打开"
    Else
        MsgBox "本数据库未用独占方式打开"
    End If
End Function

以下是 debug.print CurrentProject.Connection.ConnectionString 的结果供参考:

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=L:\IBM WinXP\desktop\mdb\重复记录.mdb;Mode=Share Deny Read|Share Deny Write;Extended Properties="";Jet OLEDB:System database=C:\Documents and Settings\ec\Application Data\Microsoft\Access\System.mdw;Jet OLEDB:Registry Path=SOFTWARE\Microsoft\Office\10.0\Access\Jet\4.0;Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

 

方法二:

很简单,你只要在程序中尝试用独占方式打开数据库即可,如果返回了错误号加以判断即可。就像本站中的很多问题解决方法类似,用错误陷阱即可判断了

Function testLockMode()
    On Error Resume Next
    Dim conn As New ADODB.Connection
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=L:\IBM WinXP\desktop\mdb\重复记录.mdb;Jet OLEDB:Database Locking Mode=0;"
    If Err.Number = -2147467259 Then
        MsgBox "文件已经在使用中,估计是被别人以独占方式打开了"
    End If
End Function

 


方法三:

当然,你还可以直接读取currentdb属性来判断是否已经被独占打开

 

http://www.access911.net 站长收藏
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有