我有一个Access 数据库,密码:123456
我在用 DAO 连接时通过:Dim db As Database
Set db = OpenDatabase("D:\123.mdb", False, False, ";pwd=123456")
db.Execute "CREATE TABLE AA (ID INT)"但在用 ADO 连接时报错:Dim oConnection As New ADODB.Connection
Dim StrConnect As StringStrConnect = "Provider=Microsoft.Jet.OLEDB.3.51;User ID=Admin;Password=123456;Persist Security Info=False;Data Source=D:\123.mdb"
oConnection .Open StrConnect
'此时报错:不能启动应用程序,工作组信息文件丢失,或是已被其它用户以独占方式打开
'我用 Microsoft.Jet.OLEDB.4.0也试过,保同样的错;这个数据库我根本就没打开呀。是不是 Access 数据库那儿设置不对,还是别的什么,请各位高手指教!
我在用 DAO 连接时通过:Dim db As Database
Set db = OpenDatabase("D:\123.mdb", False, False, ";pwd=123456")
db.Execute "CREATE TABLE AA (ID INT)"但在用 ADO 连接时报错:Dim oConnection As New ADODB.Connection
Dim StrConnect As StringStrConnect = "Provider=Microsoft.Jet.OLEDB.3.51;User ID=Admin;Password=123456;Persist Security Info=False;Data Source=D:\123.mdb"
oConnection .Open StrConnect
'此时报错:不能启动应用程序,工作组信息文件丢失,或是已被其它用户以独占方式打开
'我用 Microsoft.Jet.OLEDB.4.0也试过,保同样的错;这个数据库我根本就没打开呀。是不是 Access 数据库那儿设置不对,还是别的什么,请各位高手指教!
同时:在 ACCESS97 和 ACCESS2000 中用同样的语句,都可以吧;用provider=Microsoft.Jet.OLEDB.3.51 也行,无需输入用户名:admin
我在用 DAO 连接时:
Dim db As Database
Set db = OpenDatabase("D:\123.mdb", False, False, ";pwd=123456")报错:不可识别的数据格式,但直接用 Data 控件时则能正常连接;
对 Access97 数据库用以上两种方法都可正常连接,为什么???
难道前一种方法只支持 Access97 数据库!
升级到VB.Net或者换ADO吧
'我用 Microsoft.Jet.OLEDB.4.0也试过,保同样的错;这个数据库我根本就没打开呀。///
你直接給我開access看看
在設置密碼的時候才會被獨佔
StrConnect = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Password=123456;Persist Security Info=False;Data Source=D:\123.mdb"
报错;此问题已通过 草原上狂奔的蜗牛 的连接字符串:
StrConnect = "provider=Microsoft.Jet.OLEDB.4.0;Data source =D:\123.mdb, ;Persist Security Info=False;Jet OLEDB:Database Password=123456"
顺利解决,谢谢 !我得新问题是:有一个Access2000 数据库123.mdb,密码:123456
用 DAO 连接时:
Dim db As Database
Set db = OpenDatabase("D:\123.mdb", False, False, ";pwd=123456")报错:不可识别的数据格式,但直接用 Data 控件时则能正常连接;我已经打了 Jet4.0 补丁包
你知道data控件只支持倒jet3.5也就是access97。
所以你用data能连接,jet4.0却不能连接的时候,我很怀疑你是否是access2000 Access 数据库加了密码,直接由 Access 开启数据库时,会出现密码问话框,询问密码。但是若要由 VB 程序中开启,必须更改 VB 程序中开启数据库的指令,否则会出现错误讯息!以下针对各种状况,分别加以说明:1、 使用 DAO 语法开启数据库:OpenDatabase
若要由程序中开启,语法如下:
Set DB = OpenDatabase(DatabaseName, False, False, ";Pwd=密码")
实例例如:
Dim db As Database
Set db = OpenDatabase("C:\db1.mdb", False, False, ";Pwd=1")
若要使用 Data 控件,设定方法如下:
1、设定 DatabaseName 属性 ( 数据库名称 / 含路径 )
2、设定 Connect 属性,将预设的字符串【Access】改成【;Pwd=密码】 ( 不含双引号 )
3、设定 RecordSource 属性 ( 数据集 )
2、
使用 ADO 语法开启数据库:
在使用 ADODC 或 DataEnvironment 设定好联机之后,直接利用属性窗口修改 ConnectionString 属性 (附属于 ADODC) 或 ConnectionSource 属性 (附属于 DataEnvironment 的 Connection 对象),修改的方法是在属性之后增加以下参数:
;Jet OLEDB:Database Password=密码除了 ADODC 及 DataEnvironment 之外, 直接使用 ADO 对象来开启含有密码的 mdb 数据库,设定参数的方法也是相同的。
3、
压缩加了密码的数据库:CompactDatabase
DBEngine.CompactDataBase "原数据库文件名", "新数据库文件名", , , ";pwd=密码"
实例例如:
DBEngine.CompactDatabase "C:\Db1.mdb", "C:\Db2.mdb", , , ";pwd=1"
4、
修复加了密码的数据库: RepairDatabase
不必理会数据库设定的密码!
DBEngine.RepairDataBase "数据库文件名"
实例例如:
DBEngine.RepairDataBase "C:\Db1.mdb"
90.07.06 加注:在 DAO 3.6 之后,RepairDatabase Method 已经无法使用了,您必须改用 ADO 的 CompactDatabase Method 来取代了 DAO3.5 时的 RepairDatabase method!CompactDatabase Method 也合并了以往 DAO 3.5x 时代的 RepairDatabase Method 及 CompactDatabase Method 的功能,详细的说明请看以下二个单元:
在 Jet4.0 补丁还没打之前,用 Data 控件是不能访问该 Access2000 数据库的,我试过,在 Data 控件的属性栏的 Connect 只能看到 “access”;在我打了 Jet4.0 补丁包后,在 Data 控件的属性栏的 Connect 可以看到 “access”和“access2000;”;当 Connect 选择“access”时不能打开数据库,但当 Connect 选择“access2000;”时可以打开该Access2000数据库!这说明我的 Jet4.0 补丁是打成功了,而且数据库确实是 Access2000 。现在就是用
Dim db As Database
Set db = OpenDatabase("D:\123.mdb", False, False, ";pwd=123456")
打不开,是不是该语句写的不对!
另:是不是由于数据库 是由 Access97 转换到 Access2000 而非真正的 Access2000。
Private Conn As New ADODB.Connection'--如何用RecordSet連接Access
Private Sub Form_Load()
Dim strConn As String
' 連接數據庫的字符串
' 連接帶密碼的數據庫,直接在連接符後面加上Jet OLEDB:DataBase Password='您的密碼'
' 連接Access97數據庫需要使用Jet.OLEDB.3.5,Access2K和以上數據庫使用Jet.OLEDB.4.0
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test.mdb;Persist Security Info=False"
' 使用用戶端資料遊標
Conn.CursorLocation = adUseClient
' 打開Access的連接
Conn.Open strConn
' 如果RecordSet的狀態不是關閉狀態,則關閉Recordset
If Rs.State <> adStateClosed Then Rs.Close
' Recordser打開表People
Rs.Open "Select * from People", Conn, adOpenKeyset, adLockOptimistic
' 報告出 一共多少筆數據,測試是否存在數據
' MsgBox Rs.RecordCount
' 綁定進DataGrid
Set DataGrid1.DataSource = Rs
With DataGrid1
' 設置DataGrid標題
.Columns(0).Caption = "編號"
.Columns(1).Caption = "姓名"
' 設置 DataGrid的寬度
.Columns(0).Width = 0 ' 設置成為隱藏狀態,相同的方法可以應用在各種網格控件上面
.Columns(1).Width = 2000 ' 設置正常需要的寬度
End With
End Sub
我的问题是要维护一个很老的程序(DAO+Jet3.51+Access97+必需的密码),现要在最短的时间内将数据库由 Access97 升级到 Access2000 且必须要有密码(里面的数据要保密),要是改用 ADO 的话,那工作量解太大了。不过,要是实在没办法,那就只能大换血了:改用 ADO !
我在换台机子试试!
谢谢!
错误源: Microsoft Jet Database Engine
错误描述:不能启动应用程序,工作组信息文件丢失,或是已被其它用户以独占方式打开
但如果那掉密码,则导入成功!正在郁闷中
你問問他有啥辦法?
点"高级",第四行:
jet OLEDB:Database Password 中输入你的ACCESS数据库密码.