第一步:确认64位系统上安装了64位的access驱动。安装office2010的64位版本或者去微软平台下载Access 2010的64位驱动(AccessDatabaseEngine_X64.exe)。这个驱动可以从下面的地址下载:(由于不能发链接,大家去百度找吧)
有些电脑上可能先装了32位的office,这样安装这个64位驱动时会提示报错,要求先卸载32位office后再安装。这样有两个做法,一种是先卸载office,安装64位驱动,再重装32位的office;另外一个做法,修改64位的驱动包,跳过检测了直接安装,更改方法:
先用7zip把AccessDatabaseEngine_X64.exe接压缩,里面会有一个AceRedist.msi安装文件,然后用Orca(下载地址:(由于不能发链接,大家去百度找吧))打开这个MSI,找到LaunchCondition里面的BLOCKINSTALLATION,删掉,保存。现在在运行AceRedist.msi,成功。
第二步:修改connectstring语句
具体代码我放在下面,这样更好理解些。具体修改的就是connectstring语句的组成。考虑到在64位系统下可以安装32位CAD和64位CAD,故结合平台判断语句一起控制。

[pcode=lisp,true]

;;;函数名:MECAD_ADOLib_ConnectString1
;;;输入变量:dbFile(打开数据库的路径名)
;;;输出值:ConnectString
;;;注释:使用ODBC(不需要DSN)连接MS-Access数据库,
;;;     示例: (MECAD_ADOLib_ConnectString1 "d:/dbfiles/products.mdb")
;;;设计者:
;;;设计日期:2013年8月
;;;修改者:
;;;修改日期:
(defun MECAD_ADOLib_ConnectString1 (dbFile / ConnectString proc_arch)
  (if (and
(setq proc_arch (getenv "PROCESSOR_ARCHITECTURE"))
(< 1 (strlen proc_arch))
(eq "64" (substr proc_arch (1- (strlen proc_arch))))
      )
    (progn
      (setq ConnectString
      (STRCAT
        "Provider=MSDASQL;"
        "Driver={Microsoft Access Driver (*.mdb, *.accdb)};"
        "DBQ="
        dbFile
      )
      )     ;对于64位系统的数据库引擎连接
    )
    (progn
      (setq ConnectString
      (strcat
        "Provider=MSDASQL;"
        "Driver={Microsoft Access Driver (*.mdb)};"
        "DBQ="
        dbFile
      )
      )     ;对于32位系统的数据库引擎连接
    )
  )     ;end if
  ConnectString
)
;;;end if

;;;函数名:MECAD_ADOLib_ConnectString2
;;;输入变量:dbFile(打开数据库的路径名)
;;;输出值:ConnectString
;;;注释:使用JET4.0连接MS-Access数据库,64位系统上,JET引擎已不支持,需改用ACE引擎
;;;     示例: (MECAD_ADOLib_ConnectString2 "d:/dbfiles/products.mdb")
;;;设计者:
;;;设计日期:2013年8月
;;;修改者:
;;;修改日期:
(defun MECAD_ADOLib_ConnectString2 (dbFile / ConnectString proc_arch)
  (if (and
(setq proc_arch (getenv "PROCESSOR_ARCHITECTURE"))
(< 1 (strlen proc_arch))
(eq "64" (substr proc_arch (1- (strlen proc_arch))))
      )
    (progn
      (setq ConnectString
      (strcat "Provider=Microsoft.ACE.OLEDB.12.0;"
       "Data Source="
       dbFile
       ";Persist Security Info=False"
      )
      )     ;对于64位系统的数据库引擎连接
    )
    (progn
      (setq ConnectString
      (strcat "Provider=Microsoft.JET.OLEDB.4.0;"
       "Data Source="
       dbFile
       ";Persist Security Info=False"
      )
      )     ;对于32位系统的数据库引擎连接
    )
  )     ;end if
  ConnectString
)
;;;end if
;;;;测试函数的代码如下
(defun c:adotest (/ dbfile *ConnectionObject* result SQLStatement)
  (setq dbfile (getfiled "" "C:\\" "mdb" 4))
  (if dbfile
    (progn
      ;;打开MDB数据库
      (setq *ConnectionObject* (ADOLISP_ConnectToDB (MECAD_ADOLib_ConnectString1 dbfile) "" ""))
      ;(setq *ConnectionObject* (ADOLISP_ConnectToDB (MECAD_ADOLib_ConnectString2 dbfile) "" ""))
      (if *ConnectionObject*
(progn
   ;;数据库查询
   (setq result (ADOLISP_GetTablesAndViews *ConnectionObject*))
   ;;显示查询结果
   (print result)
   ;;关闭数据库
   (ADOLISP_DisconnectFromDB *ConnectionObject*)
)
      )
    )
  )
  (princ)
)

[/pcode]

ADOLISP在64位系统上读取数据库的解决办法相关推荐

  1. 32位系统上开发的Access为数据库的程序在64位机器上运行出错的解决办法

    64位平台下解决方法为在VS2010开发环境下进行以下操作:生成->配置管理器->平台->点击Any Cpu选项卡->新建->新建平台->X86

  2. 【转】将 Linux 应用程序移植到 64 位系统上

    原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...

  3. 64位系统使用Access 数据库文件的彻底解决方法

    最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是32位版本的,所以在VS里面调试访问Access是没 ...

  4. 64位系统使用Access数据库文件的彻底解决方法

    64位系统使用Access数据库文件的彻底解决方法 最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是 ...

  5. 关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”

    使用APlayer开发了一个C#程序,原先开发电脑是32位的,安装电脑也是32位,只需要将相应的文件打包,然后在system32文件夹中放入atl71.dll和D3DX9_43.dll,项目运转正常. ...

  6. 64位系统上安装apache

    查看系统是多少位: # getconf LONG_BIT   显示: # 64 如果在64位系统上安装apache 正常情况下会报一下错误 /usr/lib/libexpat.so: could no ...

  7. win10 64位系统上注册wincc的ocx插件问题

    win10 64位系统上注册wincc的ocx插件问题 今天下载一个anigif动态图控件,注册时死活注册不了 在win10操作系统下注册OCX控件,主要有以下几个步骤: 1.以管理员的身份打开命令提 ...

  8. 修改32位的AutoCAD2012,使其能在64位系统上安装

    修改32位的AutoCAD2012,使其能在64位系统上安装 我们只需要下载AutoCAD2012的32位版,通过下面的修改就可以同时兼容32位和64位操作系统,二合一可以节省很多的硬盘开销.  1. ...

  9. hp1015驱动64位_在win10/win7 64位系统上安装 hp laserjet 1015对应的打印机驱动

    在win10/win7 64位系统上安装 hp laserjet 1015对应的打印机驱动 在win10/win7 64位系统上安装 hp laserjet 1015对应的打印机驱动 打印机是2005 ...

最新文章

  1. SAP WM 二步法确认TO场景下WM库存状态变化
  2. 在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?
  3. Vue04 -- 计算属性用法(v-for的筛选排序)
  4. technology and business combination point
  5. php类的组成部分,计算机5大组成部分是什么?
  6. 跨性别,你所不知道的事
  7. css 垂直居中_html中div使用CSS实现水平/垂直居中的多种方式
  8. UIColor设置自定义的颜色不成功问题
  9. 牛客网–华为机试在线训练5:进制转换
  10. Non-Local Image Dehazing 复现
  11. 达梦数据库SQL语句执行
  12. 【高手分享】熟知Win7系统(英文版)分区14个小步骤
  13. ie 打开html文件 慢,win7系统使用ie浏览器访问网页显示缓慢、卡死的解决方法
  14. 携手业内专家赋能AI时代--EpiK铭识协议发起开源知识运动
  15. 微信支付--付款到零钱(java后端)
  16. 这16道题都能答上来?恭喜你,90%的面试都能通过!
  17. 讨伐Zookeeper
  18. 数据库语法整理及WAF绕过方式
  19. LeetCode 41-50题
  20. Main.obj : error LNK2019: 无法解析的外部符号 _Direct3DCreate9@4,该符号在函数 long __cdecl InitD3D(struct HWND__ *)

热门文章

  1. GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?
  2. Java设计模式——责任链模式(职责链模式)详解
  3. 29岁转行软件测试靠谱吗?一个过来人的心路历程送给迷茫的你
  4. 问题解决:System.TypeLoadException: 未能从程序集“XXX”中加载类型“XXX
  5. 企业Web服务器Nginx应用实战-高俊峰-专题视频课程
  6. Pregel:一个大规模图计算系统
  7. WPF+WCF一步一步打造音频聊天室(一):概述
  8. 《数据结构与抽象:Java语言描述(原书第4版)》一1.4 像使用自动贩卖机一样使用ADT...
  9. 手把手教你写!java开发的工作描述
  10. Linux 安装 RabbitMq 详细过程(含 Erlang 下载 网盘地址)