当前位置:首页>> PowerBuilder>> PB技巧

全文搜索

精华导读

·EasyERP2004 制造行业通用性ERP管理系统
·PB中表的修改对数据窗口和报表的影响的解决办法
·在PB中实现Word内容的替换
·office xp风格菜单基本版
·用PB制作outlook界面源程序(非原来的老外版本)(
·将所见dw内容(包括计算字段)输出到execl中
·ERP在中国应用面临的问题
·PB中使用FORMULA ONE(实例篇
·控制打印机的动态库,兼容win98/98/me/nt2000/xp
·易佳自定义报表系统
·用例驱动的需求过程实践

最新发表

·导出数据到Excel概述
·根据查询结果,生成XML文件
·精彩的近乎完美的分页存储过程
·数据库主键设计之思考
·但凡涉及多用户不同权限的网络或者单机程序,都会有权限管理的问题,比较突出的是MIS系统。
·权限设计的探讨
·刷新数据库视图
·使用XML技术实现OWC对数据库的展示
·如何实现对数据库单个字段进行加密
·在PB中实现热键的方法
·PB动态报表格式自由定义的实现
·PowerBuilder应用开发系列讲座(18)
·PowerBuilder应用开发系列讲座(30)
·PowerBuilder应用开发系列讲座(7)
·在PB中如何实现数据模糊查询
·项目范围管理是项目成败的关键
·某装配型制造企业ERP系统需求分析(连载一)
·某装配型制造企业ERP系统需求分析(连载二)
·某装配型制造企业ERP系统需求分析(连载三)

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

文章来源:本网 文章编辑:admin 添加时间:2007-1-1 16:58:40

问题:

如何判断是否以独占方式打开当前数据库?
在链接或者用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属性来判断是否已经被独占打开 

[ ]

首页 评论 打印 刷新 返回顶部 关闭
【相关文章】  【相关评论】
目前暂时没有相关文章