SWAYWOOD 发表于 2012-11-26 21:28:24

64位中怎么通过adodb.connection调用ACCESS数据库?

本帖最后由 SWAYWOOD 于 2012-12-10 15:34 编辑

如题,请高人指点啊!8楼有程序和MDB文件,急啊。。。

SWAYWOOD 发表于 2013-1-9 20:42:03

自己搞定了,现在把我的经验分享给大家,相信大家都会遇到这种情况,只是你们暂时没有上WIN7X64位。
主要问题还是access2007无法安装64位驱动的问题,换个acess2010x64bit,然后在acdb数据源中检查驱动是否有*.mdb,*.accdb,如果没有需要完全安装office2010,或是去ms官网下载access64位数据引擎安装文件,安装后就有,然后在lisp中将access驱动引用从*.mdb改成*.accdb,一切就通过了!

Gu_xl 发表于 2012-11-28 11:44:13

本帖最后由 Gu_xl 于 2012-11-28 11:54 编辑

SWAYWOOD 发表于 2012-11-27 15:44 http://bbs.mjtd.com/static/image/common/back.gif
能否给一个调用数据库的代码啊?研究不来,谢谢!


;;数据库访问示例代码
(defun c:adotest (/ dbfile *ConnectionObject* result SQLStatement)
(setq dbfile (getfiled "" "" "mdb" 4))
(if dbfile
    (progn
      ;;打开MDB数据库
      (setq *ConnectionObject*
      (ADO_ConnectToDB
      (strcat
   "Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb)};DBQ="
   dbfile)
      "admin"
      "123456")
   )
      (if *ConnectionObject*
(progn
   ;;设置查询字串
   (setq SQLStatement
   "SELECT estName, estNameAlias, estAddrNo, estMapNo, estRoad, estDoorNo, estDiNo, estArea, PreEstAddress, remarks FROM Archives"
)
   ;;数据库查询
      (setq result (ADO_DoSQL *ConnectionObject* SQLStatement))
   ;;显示查询结果
   (print result)
   ;;返回:
   ;; (("estName" "estNameAlias" "estAddrNo" "estMapNo" "estRoad" "estDoorNo" "estDiNo" "estArea" "PreEstAddress" "remarks")
   ;;("配套公建" "无" "xx区" "" "xx路1号院" "8号楼" "" 0.0 "无" ""))
   ;;修改数据库 estName 为 "配套公建1"
   (ADO_DoSQL *ConnectionObject* (strcat "UPDATE Archives SET estName = '配套公建1'"))
   ;;数据库查询
   (setq result (ADO_DoSQL *ConnectionObject* SQLStatement))
   ;;打印修改后结果
   (print result)
   ;;关闭数据库
   (ADO_DisconnectFromDB *ConnectionObject*)
   )
)
      )
    )
(princ)
)

测试数据库:

dcl1214 发表于 2019-8-31 22:18:06

革天明 发表于 2014-12-20 16:54
(vlax-put-property
      RecordSetObject
      "LockType"


此问题我已经找到了解决办法了

革天明 发表于 2019-9-1 13:24:45

dcl1214 发表于 2019-8-31 22:18
此问题我已经找到了解决办法了

久远的问题了,现在不玩lisp了

Gu_xl 发表于 2012-11-26 21:33:08

本帖最后由 Gu_xl 于 2012-11-26 21:33 编辑

去这里下载源码,里面有一整套ADOdb的方法函数:
http://bbs.mjtd.com/thread-89578-1-1.html

SWAYWOOD 发表于 2012-11-27 12:40:58

Gu_xl 发表于 2012-11-26 21:33 static/image/common/back.gif
去这里下载源码,里面有一整套ADOdb的方法函数:
http://bbs.mjtd.com/thread-89578-1-1.html

你确认可以用于64位系统吗?我怎么发现里面代码与我的代码一样的。

SWAYWOOD 发表于 2012-11-27 15:44:10

Gu_xl 发表于 2012-11-26 21:33 static/image/common/back.gif
去这里下载源码,里面有一整套ADOdb的方法函数:
http://bbs.mjtd.com/thread-89578-1-1.html

能否给一个调用数据库的代码啊?研究不来,谢谢!

SWAYWOOD 发表于 2012-12-1 22:42:55

DOSQL中下面位置出错了。不知道怎么回事。
      (vlax-put-property
      RecordSetObject
      "cursorType"
      ADOConstant-adOpenKeyset
      )

SWAYWOOD 发表于 2012-12-6 13:31:50

怎么弄啊,帮帮忙啊

SWAYWOOD 发表于 2012-12-6 15:52:01

SWAYWOOD 发表于 2012-12-6 13:31 static/image/common/back.gif
怎么弄啊,帮帮忙啊



帮忙看一下,我将在我自己电脑中可以完全运行的代码压缩发上来了。把所有文件放到D:下,帮忙测试一下在WIN764位下是否可以,谢谢!
现在公司要上64位系统,结果我写的代码只要和MDB数据库有关的都不能用。

SWAYWOOD 发表于 2012-12-10 15:33:26

帮忙看看是怎么回事吧,谢谢
页: [1] 2
查看完整版本: 64位中怎么通过adodb.connection调用ACCESS数据库?