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

王朝other·作者佚名  2006-01-08
宽屏版  字体: |||超大  

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

问题:

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

在链接或者用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 站长收藏

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有