ListView

Started by SpEEDY, May 06, 2010, 06:05:47 AM

Previous topic - Next topic

Fred Tomke

Hi, auf 64-Bit-Betriebssystemen verwenden wir kein Jet mehr, sondern die AccessDatabaseEngine für Office 2010 x64.

VG, Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

SpEEDY

Danke Fred und wieder was gelernt.

Ein paar Fragen hätte ich aber noch.
- kann ich damit auch Access 2003 MDBs öffnen?
- Wie muss der "ConnectString" den aussehen?
- gibt es einen Möglichkeit in der Reg zu sehen ob es sich um ein x64 System handelt?
  Außer zu schauen ob "HKEY_LOCAL_MACHINE\Software\WOW6432Node" vorhanden ist?

Sind auch meine letzten Fragen zu dem Thema.  ;D
Danke noch mal.

MFG

SpEEDY
Es ist unmöglich etwas Idiotensicher zu machen, weil Idioten so genial sind!

Fred Tomke

Hi,

Quotekann ich damit auch Access 2003 MDBs öffnen
ja

QuoteWie muss der "ConnectString" den aussehen?
Ich mache das immer so:
Code (autolisp) Select
(setq strDriver (if (= (getenv "PROCESSOR_ARCHITECTURE") "x86") "Microsoft.Jet.OLEDB.4.0" "Microsoft.ACE.OLEDB.12.0"))
(setq err (vl-catch-all-apply 'vlax-invoke-method (list oDbv "Open" (strcat "Provider=" strDriver ";Data Source=" strFile) strUser strPass -1)))


VG, Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

SpEEDY

Danke Fred noch mal für die Antwort, leider funktioniert es nicht unter X64 Rechner.
Nutzt du die ADO.Lisp? oder gehts du über eine ActiveX verbindung?

Gruß
SpEEDY
Es ist unmöglich etwas Idiotensicher zu machen, weil Idioten so genial sind!

Fred Tomke

Hi, was funktioniert konkret nicht?

Eine ADO.Lisp kenne ich jetzt ad hoc nicht. Basierend auf dem Wissen aus den Beispielen der Flemming group und dem Buch AutoCAD Database Connectivity und meinen sonstigen Erfahrungen mit ActiveX habe ich mir eine ADO-Bibliothek gebaut, die im Prinzip auf Connection-Object holen, SQL-Statement absetzen und Connection-Objekt schließend besteht. Mit den unten genannten ConnectionStrings komme ich in die Datenbank (vorausgesetzt, sie liegt nicht in einem von Windows7 gesperrten Ordner wie unterhalb von C:\ProgramData).

VG, Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

SpEEDY

bekomme einfach keine Verbindung auf einen X64 PC. Ich meine diese ADO.lsp http://acad.fleming-group.com/Download/ADOLisp/ADOLisp.html

Habe mal was gebastelt womit man prüfen kann ob einen Verbindung steht.
Unter x86 PC ist alles in Ordnung, leider unter einem einzigen X64 nicht.
Dieser hat aber ein Office X86 Paket installiert. Könnte es vielleicht daran liegen?
Gibt es einen Möglichkeit auf die 32bit ADO zuzugreifen, falls es eine gibt? Leider bin ich noch nicht so fit in dem Thema.

Was mich nur wundert ist folgendes. Es gib VB-Programme die unter einem 64-Bit System immer noch "Microsoft.Jet.OLEDB.4.0" diese werden wahrscheinlich auf 32bit-erstellt und greifen auf die Daten in "Programm X86" zu. ÃÅ"berlege mir die ganze zeit ob das auch mit Lisp möglich ist.

Oder bin ich vielleicht vorkommen auf den Holzweg.

Code (autolisp) Select
(defun C:ACC ()

(setq DatenbankName "X")
(setq MDWPFAD "X")
;;;(setq strDriver (if (= (getenv "PROCESSOR_ARCHITECTURE") "x86") "Microsoft.Jet.OLEDB.4.0" "Microsoft.ACE.OLEDB.12.0"))
  (setq strDriver "Microsoft.ACE.OLEDB.12.0")
 
    (setq ConnectString  (strcat "Provider=" strDriver ";Data Source=" DatenbankName ";Persist Security Info=False;Jet OLEDB:System Database=" MDWPFAD ))
    (setq ConnectionObject
                  (ADOLISP_ConnectToDB ConnectString "MASTER" "")
           )

  (if ConnectionObject
    (alert "Verbindung OK")
    (alert "keine Verbindung")
   )
)


PS. Für die Routine wird die "ADOLISP_Library.lsp" (http://acad.fleming-group.com/Download/ADOLisp/ADOLisp.html) benötigt.
Gruß

SpEEDY
Es ist unmöglich etwas Idiotensicher zu machen, weil Idioten so genial sind!

Fred Tomke

Quote from: SpEEDY on September 16, 2011, 02:00:04 AM
[...] greifen auf die Daten in "Programm X86" zu. Überlege mir die ganze zeit ob das auch mit Lisp möglich ist.
Nein, Du arbeitest mit Lisp immer im AutoCAD-Kontext. Ist AutoCAD 64-Bit, werden alle Klassen aus dem 64-Umfeld instanziiert.
Wir haben aber eine 32-Bit-Komponente, die sich im 64-Bit-Kontext instanziieren lässt. Warum auch immer. Durch diesen Tunnel habe ich mir schon mal eine 32-Bit-ADO-Instanz ins 64-Bit-AutoCAD geholt. Ich halte das aber für keine gute Idee.

Dein ConnectionString sieht eigenartig aus. Kann es sein, dass Du versuchst, auf eine MDW zuzugreifen? Von MDW's habe ich keine Ahnung. Kann ich eine Beispieldatenbank von Dir haben?

Wichtig ist, dass Du auf einem 64-Bit-Rechner dringend die Access Database Engine für Office 2010 64-Bit installierst. Ein etwaig installiertes Office muss zunächst runter. Danach kann auch eine ältere 32-Bit Version wieder drauf. Soll es aber unbedingt Office 2010 sein, musst Du auf 64-Bit-Systemen auch das Office 2010 x64 verwenden.

VG, Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]