想向各位大虾请教一个问题:VB+ACCESS应用程序发布(单机使用\ADO连接)
1.ODBC
2.连接字符串
  假定应用程序所在目录下有一名为Student.mdb数据库
  采用第一种方式时只须首先创建Student.mdb的ODBC驱动(假设命名为student),然后将ADO的ODBC数据源名称设为student即可.但是,在应用程序安装到客户机上时,客户可能不知如何创建Student.mdb的ODBC驱动,所以在运行程序时,就会出现错误!有没有一种方法可以将这种驱动导出直接打包到安装程序中?
  采用第二种方式时,ADO的连接字符串属性中包含有数据库文件所在的路径(绝对路径),而在应用程序安装到客户机上时,数据库所在的路径往往和ADO中的连接字符串包含的路径是不一致的.那么应用程序在运行时,也会出现错误!有没有一种方法可以将ADO的连接字符串中的路径设定为相对路径,类似于App.path?
  不知大家以前采用的是什么办法来解决这个问题,恳请赐教!
  如有源代码提供,本人将感激涕零!
  谢谢!

解决方案 »

  1.   

    采用第二种方式嘛.将数据库放在你的软件目录下.连接字符串你不要写死了,这样写:conn="Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & app.path & "\student.mdb"db.open conn
      

  2.   

    新建ODBC数据源时,选择文件数据源(file data source),不要用机器数据源(machine data source),然后把生成的文件数据源一起打包在应用程序的目录下,连接字符串中用APP.PATH应用程序安装到客户机上时,数据库所在的路径往往和ADO中的连接字符串包含的路径是不一致
    应该不会出现这种情况,安装时数据库不是放在应用程序同目录下吗??如果数据库是用户自己
    选择安装位置,在程序运行时可以让用户输入数据库所在位置,来取得路径
      

  3.   

    '引用Microsoft Activex Data Object2.x Library
    Dim cn As New adodb.Connection
    '连接
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.path & "\test.mdb;Persist Security Info=true"
      

  4.   

    纯粹的用app.path &"\student.mdb"这样是不严谨的,不信你把你的应用程序装在某个盘的根目录下试试看可以如下写:
    dim DatabaseFile as string '完整数据库位置及文件名
    if right(app.path,1)<>"\" then
      DatabaseFile=app.path &"\student.mdb"
    else
      DatabaseFile=app.path &"student.mdb"
    end if
      

  5.   

    Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & app.path & "\student.mdb
      

  6.   

    用第二种方式,数据库的路径用相对路径就可以了,
    App.Path取得的就是应用程序所在的路径,把数据库和应用程序放在一个目录下就可以了!