Hallo Kadir
Wenn ich mich recht erinnere gibt es von der FlemmingGroup das ADOLisp Bundle mit dem auf diverse Datenbanken zugegriffen werden kann.
Hatte bei mir aufgrund von Treiberregulierungen im Staatsbetrieb nie Funktioniert.
Für Access greife ich daher, wie auch bei Excel, über ein Application-Objcet darauf zu. Ab da dann weiter mit SQL deine Abfragen bauen.
Ist schon ne weile her seit ich das zuletzt gemacht habe, bin also nicht mehr ganz in der Materie.
Hier als Beispiel meine Abfrage:
Code:
;;; --==*==-- ------------------------------------------------- --==*==-- --=={ ABBS }==-- --==*==-- ------------------------------------------------- --==*==-- ;;;
;;; Befehl: GetAccData
;;; Zweck: Access Handler für den Zugriff auf die Datenbank und abfragen der Daten per SQL Befehl
;;; Funktionen: Keine Unterfunktionen
;;; Autor: Fabian Bubendorf / Archäologische Bodenforschung Basel-Stadt
;;; URL: https://forums.autodesk.com/t5/net/how-to-connect-to-dao-library-through-visual-lisp-functions/td-p/9326216
;;; Datum: 2022/August
;;; Argumente: AccFile --> Der komplette Pfad der Datenbank
;;; PlaNr --> Die Zeichnungsnummer
;;; Variablen: AccApp --> Ein Access.Application Objekt
;;; AccDB --> Ein Datenbank Objekt
;;; Data --> Ein Recordset Objekt, dann eine Liste mit den DB-Einträgen
;;; nData --> Die länge des Recordset
;;; Code:
(defun GetAccData ( AccFile PlaNr / AccApp AccDB Data nData )
(if (findfile AccFile)
(progn
(setq AccApp (vlax-get-or-create-object "Access.Application")
AccDB (vlax-invoke-method
(vlax-invoke-method
(vlax-get-property AccApp 'DBEngine)
'CreateWorkspace
"AccessWorkspace"
"Admin"
""
'""
);end vlax-invoke-method
'OpenDatabase
AccFile
);end vlax-invoke-method
Data (vlax-invoke-method
AccDB
'OpenRecordset
(strcat
"SELECT Struktur, Bef_Nr FROM [Bef_Nr-Zeichnung] INNER JOIN [Bef_Nr-Journal] "
"ON [Bef_Nr-Zeichnung].ID = [Bef_Nr-Journal].ID "
"WHERE Zeichnung = '" PlaNr "' ORDER BY [Bef_Nr-Journal].Bef_Nr;"
);end strcat
);end vlax-invoke-method
nData (vlax-get-property Data 'RecordCount)
);end setq
(if (> nData 0)
(setq Data (vlax-safearray->list
(vlax-variant-value
(vlax-invoke-method Data 'GetRows nData)
);end vlax-variant-value
);end vlax-safarray->list
);end setq
(setq Data nil)
);end if
(vlax-invoke-method AccDB 'Close)
);end progn
);end if
Data
);end defun;;; --==*==-- ------------------------------------------------- --==*==-- --=={ ABBS }==-- --==*==-- ------------------------------------------------- --==*==-- ;;;
------------------
Bubi spiele, Bubi glücklich!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP