我 写了以下的连接字符串,其中192.168.99.32是目的ip地址
addressBookConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\192.168.99.32\C:\Documents and Settings\Administrator\桌面\AddressBook.mdb;Persist Security Info=False"
        addressBookConnection.Open()结果在addressBookConnection.Open()处出现以下错误:Microsoft Jet 数据库引擎打不开文件'\\192.168.99.32\C:\Documents and Settings\Administrator\桌面\AddressBook.mdb'。  它已经被别的用户以独占方式打开,或没有查看数据的权限。请高手指点啊,谢谢啊

解决方案 »

  1.   

    \\192.168.99.32\C:\Documents and Settings\Administrator\桌面\AddressBook.mdb'
    这样对吗?
    是不是\\192.168.99.32\共享目录名字 吗
      

  2.   

    \\192.168.99.32\共享目录名字\数据库名字.mdb
      

  3.   

    谢谢楼上的回复啊,如果我加上uid=adminaddressBookConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\192.168.99.32\C:\Documents and Settings\Administrator\桌面\AddressBook.mdb;Persist Security Info=False;uid=admin;"则提示错误:找不到可安装的 ISAM。是怎么回事啊,请高手指点啊,谢谢了
      

  4.   

    谢谢了。如果我要访问192.168.99.32上的AddressBook.mdb,一定要将该文件共享吗?
      

  5.   

    建议把数据库文件拷到app_data文件夹,这样生成发布也很方便,不过你上面的连接字符串也要改
      

  6.   

    连接远程access
    1 建立VPN(Virtual Private Network),
    然后把服务器中mdb文件所在的Folder共享即可。ADO连接如下:
    oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\ServerName\DatabaseFolder\Database.mdb;Jet OLEDB:Database Password=databasepw;Persist Security Info=False"2把Database放在Web Server上,使ADO或RDO通过RDS(Remote Data Service)及IIS来实现:如果服务器像上面Jave大侠说那样设置了ODBC DSN的话:oConn.Open "Provider=MS Remote;" & _
          "Remote Server=http://myServerName;" & _ 
          "Remote Provider=MSDASQL;" & _
          "DSN=AdvWorks;" & _
          "Uid=myUsername;" & _
          "Pwd=myPassword" 如果设置的是OLE DB Provider 的话:
    oConn.Open "Provider=MS Remote;" & _ 
          "Remote Server=http://myServerName;" & _
          "Remote Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=c:\somepath\mydb.mdb", _
          "admin", ""3.自己编写服务器程序,通过TCP/IP,传递Recordset。4.使用第三方控件,如:ADO Anywhere或UDAParts RDB等。具体查看
    http://www.adoanywhere.com
    http://www.udaparts.com/
    5.使用XMLHTTP
      

  7.   

    谢谢各位的回复,我没有将AddressBook.mdb打开啊。我的方法跟楼上说的有些相似。1 建立VPN(Virtual Private Network), 
    然后把服务器中mdb文件所在的Folder共享即可。ADO连接如下: 
    oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\ServerName\DatabaseFolder\Database.mdb;Jet OLEDB:Database Password=databasepw;Persist Security Info=False" 怎么样建立vpn啊,请指点,谢谢了啊
      

  8.   

    不一定需要建立vpn,在局域网里,你的access文件所在机器只要保证和你运行程序的计算机在同一工作组,并且该文件夹必须打开读写共享,同时检查防火墙设置(最好别安装那东西,否则共享很麻烦,当然裸奔病毒还是很可怕的)
    只要这些条件满足,打开应该没问题,你的连接串应该没错
      

  9.   

    谢谢各位的回复啊,我现在改成如下语句了:addressBookConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\192.168.99.32\E:\yes\AddressBook.mdb;Persist Security Info=False;"E:\yes是一个共享的文件夹,并且允许用户对其进行改写,AddressBook.mdb属性为“存档”,可运行后出现如下问题:'\\192.168.99.32\E:\yes\AddressBook.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。请大家指点啊,谢了啊
      

  10.   

    远程访问Access数据库?是不是应该用其它的办法比较好。比如把操作数据写成web services直接调用web services就行了
      

  11.   

    本人刚刚做的一个小系统,不知是否能有帮助.delphi实现连接accessunit DMconn;interfaceuses
      SysUtils, Classes, DB, ADODB, Forms, Windows;type
      TDataModuleConn = class(TDataModule)
        ADOConnectionAccess: TADOConnection;
        procedure DataModuleCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      DataModuleConn: TDataModuleConn;implementationuses login;
    {$R *.dfm}procedure TDataModuleConn.DataModuleCreate(Sender: TObject);
    var conn:String;
        path:string;
        Login:TuserLogin;
    begin
      try
         path:=ExtractFilePath(Application.EXEName);
         ADOConnectionAccess.Connected:=False;
         conn:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=MS Access Database;'+
         'DBQ='+path+'aaa.mdb;DefaultDir='+path+';DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;PWD=aaa;UID=admin;"';
         ADOConnectionAccess.ConnectionString:=conn;
         ADOConnectionAccess.Connected:=True;
         Login:=TuserLogin.Create(nil);
         Login.ShowModal;
      except
         MessageBox(Application.handle,'连接数据库发生错误,请检查数据库连接!','错误',MB_OK+MB_ICONERROR);
         Halt;
      end;
    end;
    end.