Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection   conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _
                               "User ID=Admin;" & _
                               "Password=" & strPassword & ";" & _
                               "Data Source=" & strDBPath & ";"
                               
    这样打开数据库的时候,提示出错,==================================================    实时错误:80040e4d
     无法启动应用程序。工作组信息文件丢失,或是已被其他用户以独占方式打开==================================================    在没有使用密码的时候,连接是正常的。    
    我可以确定没有其他用户在使用这个MDB文件。
    我试着用ADODC控件来连接,在测试连接的时候,报同一个错误!
    在没有使用密码的时候,连接是正常的。        实在是很ft的错误,实在搞不定了,只好来向大虾们求救了!!

解决方案 »

  1.   

    这是个典型的问题,我从前遇到过很多次,但都被我解决了。问题的所在在于你的ACCESS设定了用户和口令,也就是说,你指定了一个MDW文件来管理你自己的数据库。所以,你在做DAO或ADO连接的时候一定要指明MDW文件的位置,当然也必须指定你的ACCESS中的USER ID 与PWD。可以看这样一条语句:
    Me.Adodata.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;User ID=" & cstDefaultUser & ";password =" & cstDefaultPassWord & ";Data Source=" & Trim(Cd.filename) & ";Jet OLEDB:System database=c:\data\system.mdw;Jet OLEDB:Database Password=" & InputBox("请输入数据库的密码,没有直接单击确定!", cstmsg, "")Jet OLEDB:System database=c:\data\system.mdw就是你需要的东西。
    呵呵~~~~~~~~~~~我需要的呢,快结帖给分。哈哈
      

  2.   

    对,我也意识到了应该是和用户名与密码有关,那,mdw文件的位置在什么地方呢?
    而且,我用ADODC控件设置连接的时候,并没有什么选项要求你设置mdw文件呀,
      

  3.   

    在里面添加一句:
    Jet OLEDB:Database Password=youPassWord
    其它的什么UserID呀 都不要
    Me.Adodata.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & Trim(Cd.filename) & ";Jet OLEDB:Database Password=" & InputBox("请输入数据库的密码,没有直接单击确定!", cstmsg, "")
      

  4.   

    楼上的lightwiter1(lightwiter) ,不要乱说啊.会#@$%^%$的!!!
    而且你上面一段代码是COPY的吧,告诉你,那就是我写的.哈哈.你算是撞上了!!!
    告你剽窃!!!
    -------------------------------
    mdw文件的位置在什么地方呢?----随便,什么地方都可以!!只是SQL中要指定好.
    而且,我用ADODC控件设置连接的时候,并没有什么选项要求你设置mdw文件呀,-----------在ADO的属性中你注意,在高级选项中有一项,大概是第3项,我具体记不太清楚了,有Jet OLEDB:System database项,在它后面的文本框中输入你的MDW的文件地址就可以了.带全文件名!!!
    ------------------------------
    你可以结帖了!!!
      

  5.   

    直说吧,conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _
                                   "User ID=Admin;" & _
                                   "Password=" & strPassword & ";" & _
                                   "Data Source=" & strDBPath & ";"
                                   
    要怎么改才会好用呢?我会再加20分的
      

  6.   

    我知道,但是他和我的情况是一样的,他是用一个ADO控件联接DATABASE的,根本不存在什么ACCSEE管理,关键是他没有加Jet OLEDB:Database Password=youPassWord
    这一句,我的确是看了你的答案后试出来的呢,我还要你发一个帖到我的问题里面给你分,你没有收到消息吗?我可不是那种人呀。
    他想指定密码用错了语句,不是用password,而是用上面那句没有错吧,如果用ACCSEE管理再加UserID和PASSWORD和Jet OLEDB:System database项没错吧
      

  7.   

    注意!
    我是在程序中用ADO的Connection连的,
    并不是用ADODC控件,前面说的用ADODC是我想看看如果用ADODC连得上的话,它的ConnectionString是什么
      

  8.   

    哈哈, lightwiter1(lightwiter),给你开玩笑呢!刚刚才看到你的短信!!!
    完全同意 lightwiter1(lightwiter)的话:
    1、如果有ACCESS安全机制的引入,则如我所说!
    2、如果没有ACCESS安全机制,而单纯是MDB的密码, lightwiter1(lightwiter)说的对!
    呵呵~~~~~~~~~~~~~强分!!!
    大家参阅:
    http://expert.csdn.net/Expert/topic/1174/1174824.xml?temp=.50375
      

  9.   

    OK,
    THANKS!
    我已经解决了!
    多谢2位!!!
    万分感谢!!不过分要怎么分呢?
      

  10.   

    呵呵,给lightwiter1(lightwiter)兄吧,我比他多个三角呢!呵呵!