明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: meflying

[公告] [公告]提问先看这里,——一些典型及实用问题及其回答!

    [复制链接]
发表于 2004-12-7 09:27 | 显示全部楼层
斑主可真是有风度啊,来去自由,心肠好
发表于 2005-1-10 17:20 | 显示全部楼层
斑竹帮帮忙,小弟有问题请教!


qq:6315551
发表于 2005-4-10 23:15 | 显示全部楼层
本人加载vlisp程序后,CAD老提示QUIT/EXIT ABORT,不知是什么原因?
发表于 2005-5-18 17:27 | 显示全部楼层
是啊!做人要“厚道”!心胸宽广点好!NB也不好!
发表于 2005-10-16 20:47 | 显示全部楼层
真是一个好地方
发表于 2005-11-17 20:43 | 显示全部楼层

排序函数:能根据X、Y条件对坐标表进行各种排序http://bbs.mjtd.com/forum.php?mod=viewthread&tid=9546

发表于 2005-11-24 16:40 | 显示全部楼层
网蜜(netbee)你的图标不错:)
发表于 2005-12-27 23:47 | 显示全部楼层
好,一点有用的东西,谢谢了哦!
发表于 2006-5-19 23:48 | 显示全部楼层

meflying版主

看了你写的以下程序运行成功,非常好,谢谢

(defun DbInitADO ( / ADO_DLLPath)
  (if (null adom-Append)
    (progn
      (setq ADO_DLLPath
        (strcat (getenv "systemdrive")
        "\\Program Files\\Common Files\\System\\Ado\\")
      )
      ;;
如果查找到类型库 ...
      (if (findfile (strcat ADO_DLLPath "msado15.dll"))    ;;
将其输入
        (vlax-Import-Type-Library
          :tlb-filename   (strcat ADO_DLLPath "msado15.dll")
          :methods-prefix    "adom-"
          :properties-prefix "adop-"
          :constants-prefix  "adok-"
        )
        ;;
找不到时,则通知操作者
        (alert (strcat "
不能找到以下文件\n" ADO_DLLPath "msado15.dll"))
      )
    )
  )
)


;
生成MS-Access MS-SQL Server 数据库的连接字符串  
;;;******************************************************************
;;;
使用ODBC(不需要DSN)连接MS-Access数据库
;;;
示例: (DbConnect_MSAccess1 "d:/dbfiles/products.mdb")
;;;******************************************************************

(defun DbConnect_MSAccess1 (dbFile)
  (strcat
    "Provider=MSDASQL;"
    "Driver={Microsoft Access Driver (*.mdb)};"
    "DBQ=" dbFile
  )
)

;
从内存中释放VLA对象
(defun MxRelease (xObject)
  vlax-object-released-p
  (if (not (vlax-object-released-p xObject))
    (vlax-Release-Object xObject)
  )
)

;
关闭ADO Connection 对象并将内存释放出来  
(defun DbCloseConnection (dbConnObject)
  (vlax-Invoke-Method dbConnObject "Close")
  (MxRelease dbConnObject)
)

;
关闭ADO RecordSet对象并将内存释放出来
(defun DbCloseRecordset (rsObject)
  (vlax-Invoke-Method rsObject "Close")
  (MxRelease rsObject)
)

;
布尔测试RecordSet 是否为 Closed (T nil)
(defun DbRsIsClosed (rsObject)
  (= adok-adStateClosed (vlax-Get-Property rsObject "State"))
)

;
返回一个ADO RecordSet对象中的记录数
(defun DbRsCount (rsObject)
  (vlax-Get-Property rsObject "RecordCount")
)

;
返回Field对象中给定字段数的字段名称
(defun DbGetFields (fObject fCount / FieldNumber)
  (setq FieldNumber -1)
  (while (> fCount (setq FieldNumber (1+ FieldNumber)))
    (setq FieldList (cons (vlax-Get-Property (DbRsFieldItem FieldsObject FieldNumber) "Name") FieldList)); setq
  ); end while
); defun

;
RecordSet对象返回ADO Field对象
(defun DbRsFields (rsObject)
  (vlax-Get-Property rsObject "Fields")
)

;
返回给定Field对象的字段数量
(defun DbRsFieldCount (fObject)
  (vlax-Get-Property fObject "Count")
)

;
获取Field对象的字段名()
(defun DbRsFieldItem (fObject fNumber)
  (vlax-Get-Property fObject "Item" fNumber)
)

;
返回RecordSet对象的RowSet对象
(defun DbRsGetRows (rsObject)
  (vlax-Invoke-Method rsObject "GetRows" adok-adGetRowsRest)
)

;
应用一个ADO LOCK(锁定)类型到给定的RecordSet对象
(defun DbRsLockType (rsObject lockType)
  (cond
    ( (= (strcase lockType) "OPTIMISTIC")
      (vlax-Put-Property rsObject "LockType" adok-adLockOptimistic)
    )
    ( (= (strcase lockType) "BATCHOPTIMISTIC")
      (vlax-Put-Property rsObject "LockType" adok-adLockBatchOptimistic)
    )
    ( (= (strcase lockType) "READONLY")
      (vlax-Put-Property rsObject "LockType" adok-adLockReadOnly)
    )
  )
)

(defun Search(RSObject / lst FieldsObject FieldCount FieldList ReturnValue)
  (defun getlst    (var)
    (setq lst nil)
    (setq n (length var) i 0)
    (while (< i n)
      (setq lst (append lst (list (vlax-variant-value (nth i var)))))
      (setq i (1+ i))
    )
    lst
  )
  (setq    FieldsObject (DbRsFields RSObject)        ;;
将字段作为对象
    FieldCount   (DbRsFieldCount FieldsObject)        ;;
取得列的数量
    FieldList    (DbGetFields FieldsObject FieldCount)    ;;
取得列表中所有列的名称
    ReturnValue  (list (reverse FieldList)))        ; setq
  (setq    lst (vlax-safearray->list (vlax-variant-value (dbrsgetrows rsobject))))
  (setq lst (mapcar 'getlst lst))
  (setq lst (mapcar '(lambda(var1 var2) (append (list var1) (list var2))) (car returnvalue) lst))
  (print lst)
)

;A sample...
(defun c:test (/ getlst dbconnection rsobject SqlString)
  (DbInitADO)                ;
初始化
  (setq DBConnection (vlax-create-object "adodb.connection"))        ;
创建并返回ADO Connection对象
  (setq RSObject (vlax-create-object "adodb.recordset"))        ;
创建并返回ADO RecordSet对象
  (setq SqlString "select
点号,横坐标,纵坐标,井盖高 from pspoint")
  (vlax-invoke-method DBConnection "open" (DbConnect_MSAccess1 "e:\\AAA.mdb") "admin" "" adok-adConnectUnspecified)
  (vlax-invoke-method RSObject "open" SqlString DBConnection nil nil adok-adcmdtext)
  (search rsobject)
  (DbCloseRecordset rsobject)
  (DbCloseConnection dbconnection)
  (princ)
)

        meflying@mjtd.com
          2004-10-10

能不能给个写进ACCESS数据库的例子吗,谢谢了,

 

发表于 2006-5-30 23:59 | 显示全部楼层
感动啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-4 07:23 , Processed in 0.216443 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表