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

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

|

问题:

| |

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

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

Published At
Categories with 数据库类
comments powered by Disqus