hab mir da mal was gebastelt
funktioniert zwar noch mit DAO und noch nicht mit ADOC, aber es funktioniert
so zu verwednen als Test
(setq dao (DaoInit))
(setq db (DaoOpenDb dao "d:\\test.mdb"))
(setq rs (DaoOpenRecordset db "select * from [Tabelle1] where [Spalte] = '5'"))
(while (not (DaoRsEof rs))
(print (DaoRsGetField rs "Feldname"))
(DaoRsMoveNext rs)
)
(DaoCloseRecordset rs)
(DaoCloseDb db)
(vlax-release-object dao)
und hier die Basis Bibliotheken
; Funktionen zu Zugriff auf Access Tabellen
;------------------------------------------------------------------------------
; erstellen einer referenz auf dao.dbengine
;------------------------------------------------------------------------------
(defun DaoInit ( / daoobj)
(vl-load-com)
(if (not (setq daoobj (vlax-get-or-create-object "DAO.DBENGINE.35")))
(if (not (setq daoobj (vlax-get-or-create-object "DAO.DBENGINE.36")))
(progn (alert "Cannot initialize DAO") nil)
daoobj
)
daoobj
)
)
;------------------------------------------------------------------------------
; Öffnen einer Access Datenbank
;------------------------------------------------------------------------------
(defun DaoOpenDb ( DaoObj Db / )
(try 'vlax-invoke (list daoobj "OPENDATABASE" db))
)
(defun DaoCloseDb ( Db / )
(try 'vlax-invoke (list db "CLOSE"))
(try 'vlax-release-object (list db))
)
;------------------------------------------------------------------------------
; Öffnen eines Recordsets
;------------------------------------------------------------------------------
(defun DaoOpenRecordset ( db query / )
(try 'vlax-invoke (list db "OPENRECORDSET" query))
)
(defun DaoCloseRecordset ( rs / )
(try 'vlax-invoke (list rs "CLOSE"))
(try 'vlax-release-object (list rs))
)
;------------------------------------------------------------------------------
; EndOfFile
;------------------------------------------------------------------------------
(defun DaoRsEof ( rs / )
(if (= (try 'vlax-get-property (list rs "EOF")) :vlax-false) nil t)
)
;------------------------------------------------------------------------------
; Move Next
;------------------------------------------------------------------------------
(defun DaoRsMoveNext ( rs / )
(try 'vlax-invoke (list rs "MOVENEXT"))
)
;------------------------------------------------------------------------------
; Recordcount
;------------------------------------------------------------------------------
(defun DaoRsRecordCount (rs / )
(try 'vlax-get-property (list rs "RECORDCOUNT"))
)
;------------------------------------------------------------------------------
; rs.fields
;------------------------------------------------------------------------------
(defun DaoRsGetField (rs name / fields field value )
(cond ((and (setq fields (try 'vlax-get-property (list rs "FIELDS")))
(setq field (try 'vlax-get-property (list fields "ITEM" name)))
)
(setq value (vlax-get-property field "VALUE"))
(vlax-release-object fields)
(vlax-release-object field)
(vlax-variant-value value)
)
(t nil)
)
)
;------------------------------------------------------------------------------
; Testroutine ergibt nil im Fehlerfall ansonst den Rückgabewert der zu
; testenden Funktion
; ist der Rückgabewert der Funktion auch im Erfolgsfall nil
; wird t zurückgegeben
;
; (try '+ (list 1 2 3 4 5 6)) ergibt 21
; (try '/ (list 5 0)) ergibt nil
;------------------------------------------------------------------------------
(defun Try ( func arg / a1 a2 )
(setq a2 (vl-catch-all-error-p (setq a1 (vl-catch-all-apply func arg))))
(cond (a2 nil)
(a1 a1)
(t t)
)
)
------------------
Ing. Anton Fuchs
WWW.FFZELL.AT.TC
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP