我用ODBC自动配置数据源,用ADO()连接,不能实现远程连接,请教高手指教。谢谢!
令外配置ODBC时Access不支持网络路径吗?非常感谢!!

解决方案 »

  1.   

    将ACCESS所在目录共享,在代码中这样访问:\\计算名或IP地址\共享目录名\数据库名.mdb
    不过并发用户较多或数据操作比较频繁,则建议数据库使用SQL
      

  2.   

    我的代码是通过ASP来做个中转
      

  3.   

    Connectstring="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+[数据库路径和名称]+";User Id=admin;Password=;" 
    其中:[数据库路径和名称] 可以是你自己的机子上的某个数据库,也可以是局域网上的某个机子上的数据库,例如:[数据库路径和名称] = "D:\...\mydb.mdb" 或者 app.path+"\data\mydb.mdb" 或者  "192.168.0.27\d$\...\mydb.mdb" 均可;对于 "192.168.0.27\d$\...\mydb.mdb" 中的 d$ 是指你的 192.168.0.27 这台机子上的 d 盘(外加 $ 符号表示该盘你可以不必去有意识的共享也能让程序正常访问数据库 )建议:你将上面的连接字符串事先保存在一配置文件中(如:DataPath.ini),你在程序启动时直接读取该连接字符串即可,这样,你的连接字符串可以动态的进行改变,其不美哉!
      

  4.   

    oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source=\\myServer\myShare\myPath\myDb.mdb;
      

  5.   

    这几种方式我都试过,只是以前没有加“$”符号,现在加了,还是报错:Microsoft Jet 数据库引擎打不开文件'\\192.168.0.168\D$\hp\Data\DATA.MDB'。  它已经被别的用户以独占方式打开,或没有查看数据的权限。权限我已经设置过了哈。请问怎么回事?
      

  6.   

    你的数据库有密码吧,那连接字符串应该这样写:
    ConnectionString= "provider=Microsoft.Jet.OLEDB.4.0;Data source =" + [Access97、Access2000 数据库路径及名称] + " ;Persist Security Info=False;Jet OLEDB:Database Password=" + [数据库密码]且记:对于有密码的数据库,“Jet OLEDB:Database Password=" + [数据库密码] ”不可少!当然,你的数据库在别处确实没有被以独占方式打开呀!
      

  7.   

    我是这样做的,
    将数据库和VB执行程序都放在服务器上(WIN2000),
    然后在要使用程序的计算机上建立一个快捷方式,经过测试10用户同时操作通过,上面的方法同时也解决了操作系统兼容性的问题,
    在WIN95,WIN98,WIN2000,WIN XP下测试通过。
      

  8.   

    实现有难度,建议不要用ACCESS,最好使用SQL SERVER....
      

  9.   

    请教godwim(Godwin)网友,首先谢谢您的回复。您在要使用程序的计算机上建立一个快捷方式,是指把服务器上的vb程序在应用计算机上建立一个快捷方式吗? 这样的话数据安全吗?谢谢
      

  10.   

    首先,不知你是用的是 ODBC 数据源 来访问数据库,还是直接用Jet.OLEDB.4.0来访问的;
    如果是用ODBC 数据源 来访问数据库,可这样写:
    ConnectionString = "Provider=MSDASQL.1;Data Source=[ODBC数据源];UID=;PWD=[密码];" 或者:ConnectionString = "Provider=MSDASQL.1;DSN=[ODBC数据源];Product;UID=;PWD=[密码];"
    如果是直接用Jet.OLEDB.4.0来访问,可这样写:ConnectionString= "provider=Microsoft.Jet.OLEDB.4.0;Data source =" + [Access97、Access2000 数据库路径及名称] + " ;Persist Security Info=False;Jet OLEDB:Database Password=" + [数据库密码]以上两种方法在 VB6.0+Jet4.0 下测试通过!还有,你的机子打过 Jet4.0 补丁包没有(原来的 Jet3.51不能打开Access2000 数据库)
    补充,你说你在本机测试通过,但在服务器上通不过,请问:你的两台机子能正常访问吗(即:你的这台机子能正常访问服务器吗,是否存在一个访问权限问题),建议你的这台机子以 administrator 管理员身份登陆,并事先同你的服务器取得有效的连接再试!
      

  11.   

    你的本机子的 ODBC 数据源 可以配置成访问 服务器上的某个数据库!在代码中直接调用本地ODBC 数据源即可
      

  12.   

    感谢!非常感谢网友 libingao(alex) 提供的帮助,问题基本解决。这里还有一个小问题请教,就是服务器有登陆密码时,我在User Id=admin;Password=;中的 Password=后面加上服务器的登陆密码,但还是连接不上服务器上的数据库。提示错误信息为:
    无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。
      

  13.   

    User Id=admin;Password=;中的用户名和密码是数据库的拥护和密码,不是服务器的登陆用户和密码!
    对于如何将服务器的登陆用户名和密码提交个访问数据库的应用程序,我目前还不会,关注中,抱歉!
    我目前是采用客户端机子启动时自动同服务器映射一次建立有效连接,随后客户端程序就可以访问服务器上的数据库了!
      

  14.   

    dim cnn as new adodb.connection
    kk=”Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;data source=d:\exg.mdb”
    cnn.open kk
      

  15.   

    请问各位朋友:我在访问远端服务器上的ACCESS数据库时,以"192.168.0.27\d$\...\mydb.mdb" 这种方式在2000系统下可以访问服务器的数据库。
    在win XP系统下不行,提示“\\192.168.0.3\c$\Program Files\SG\PManager\data\data.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。”但可以以这种方式 “\\计算名或IP地址\共享目录名\数据库名.mdb” 访问服务器的数据库。就是数据库必须共享,而且要允许网络用户更改我的文件。这样数据安全就不能保证。请问XP下该如何操作?谢谢!
      

  16.   

    其实,“\\192.168.0.3\c$\Program Files\SG\PManager\data\data.mdb”的 c$ 是windows2000 和 windows xp 默认的 c 共享名称,这与你的 “\\计算名或IP地址\共享目录名\数据库名.mdb”没有本质上的区别,你可以在“控制面板\管理工具\计算机管理\共享文件夹\”下面看到你当前机子所有的共享文件,同时也能看到被别的机子打开的文件和机子名称。
    你可以在 资源管理器 的地址栏直接输入:\\192.168.0.3\c$\Program Files\SG\PManager\data\  看能否直接连接到相应的目录下面,如果这里行的话,那客户端程序理论上也应该访问才对呀;如果这里不行,首先,请检查 \SG\PManager\data\ 拼写是否正确,同时检查相应的文件夹 \Program Files\SG\PManager\data\ 在服务器上是否真的存在,另一种情况是服务器在 Win XP 下的 c 盘默认共享名 C$ 已被取消(原则上在系统启动时他会自动设为共享的)。像“\\192.168.0.3\d$\...\*.mdb”这种类型的路径我在win98、win2000、win Xp下测试均通过!
      

  17.   

    libingao:您好!情况确实是您所言的那样:服务器在 Win XP 下的 c 盘默认共享名 C$ 已被取消。要让c 盘默认共享有办法吗?请您指教。谢谢!