Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ODBC zu Access via Batch-Datei erstellen (https://www.delphipraxis.net/174695-odbc-zu-access-via-batch-datei-erstellen.html)

Ykcim 6. Mai 2013 11:37

ODBC zu Access via Batch-Datei erstellen
 
Hallo Zusammen,

ich benötige für meine Software eine ODBC-Verbindung zu einer AccessDB. Da ich aber nicht bei jedem Benutzer das von Hand einrichten möchte, wöchte ich, dass meine Software beim Start prüft, ob die Verbindung bereits besteht.
Und das ist die erste Frage: Wie kann ich prüfen, ob die ODBC-Verbindung Oberflaechen1 schon exitsiert?

Wenn sie nicht existiert, dann möchte ich eine Batch-Datei ausführen lassen, welche die ODBC-Verbindung anlegt.
Und das ist die zweite Frage: Ich habe die Batch-Datei wie folgt aufgebaut:
Delphi-Quellcode:
@echo off
 reg add HKCU\SOFTWARE\ODBC\ODBC.INI\Oberflaechen1 /v DBQ /t REG_SZ /d "H:\Oberflächen\Oberflächenschlüssel.mdb" /f
 reg add HKCU\SOFTWARE\ODBC\ODBC.INI\Oberflaechen1 /v Description /t REG_SZ /d "Oberflächenschlüssel AL" /f
 reg add HKCU\SOFTWARE\ODBC\ODBC.INI\Oberflaechen1 /v Driver /t REG_SZ /d "C:\WINDOWS\system32\odbcjt32.dll" /f
 reg add HKCU\SOFTWARE\ODBC\ODBC.INI\Oberflaechen1 /v FIL /t REG_SZ /d "MS Access" /f
 reg add HKCU\SOFTWARE\ODBC\ODBC.INI\Oberflaechen1 /v PWD /t REG_SZ /d "" /f
 reg add HKCU\SOFTWARE\ODBC\ODBC.INI\Oberflaechen1 /v UID /t REG_SZ /d "" /f
 reg add HKCU\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources /v Oberflaechen1 /t REG_SZ /d "Microsoft Access Driver (*.mdb)" /f
Ich bekomme bei der letzten Zeile einen Fehler angezeigt. Kann mir jemand erklären warum. Ich begebe mich gerade auf Neuland...

Vielen Dank
Patrick

p80286 6. Mai 2013 11:50

AW: ODBC zu Access via Batch-Datei erstellen
 
Zu Deiner ersten Frage:
Schau doch in der Registry nach

Zu Deiner zweiten Frage:
überprüf einmal die Anzahl der " in der letzten Zeile.

Sind auch die entsporechenden "ODBC Data Sources" eingetragen?

Gruß
K-H

Ykcim 6. Mai 2013 13:17

AW: ODBC zu Access via Batch-Datei erstellen
 
Hallo,

vielen Dank für die Antwort.

Zu 1) Ich möchte gerne, dass mein Programm ich der Registry nachsieht, habe aber keine Idee, wie ich das anstellen muss.

Zu 2) Genau bei diesem Eintrag macht er Probleme. Daher lautet die Antwort NEIN! Aber ich weiß auch leider nicht, wie ich den Eintrag in die "ODBC Data Sources" hinbekomme. Die Anzahl der " sollte stimmen...

Vielen Dank
Patrick

baumina 6. Mai 2013 13:45

AW: ODBC zu Access via Batch-Datei erstellen
 
evtl.

reg add HKCU\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources /v Oberflaechen1 /t REG_SZ /d "Microsoft Access Driver (*.mdb)" /f

ändern in

reg add "HKCU\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" /v Oberflaechen1 /t REG_SZ /d "Microsoft Access Driver (*.mdb)" /f

Bernhard Geyer 6. Mai 2013 13:52

AW: ODBC zu Access via Batch-Datei erstellen
 
Mit der Klasse TRegistry kann du sowohl nachsehen was überhaupt schon in der Registry steht als auch deine eigenen Einträge erstellen.
Das Arbeiten mit Batch-Datei halte ich hier für zu fehleranfällig.

Besser ist es natürlich gleich die dafür vorgesehene API zu verwenden.

sx2008 6. Mai 2013 14:10

AW: ODBC zu Access via Batch-Datei erstellen
 
Wenn du ADO-Komponenten verwenden würdest, dann bräuchtest du keine ODBC-Verbindung und könntest dir die Änderungen in der Registry sparen.
Wie wär's damit?

baumina 6. Mai 2013 14:13

AW: ODBC zu Access via Batch-Datei erstellen
 
Zitat:

Wenn du ADO-Komponenten verwenden würdest, dann bräuchtest du keine ODBC-Verbindung und könntest dir die Änderungen in der Registry sparen.
Wie wär's damit?
Delphi XE2 Starter wird das nicht haben, denke ich mal.

Bernhard Geyer 6. Mai 2013 14:43

AW: ODBC zu Access via Batch-Datei erstellen
 
Zitat:

Zitat von sx2008 (Beitrag 1214325)
Wenn du ADO-Komponenten verwenden würdest, dann bräuchtest du keine ODBC-Verbindung und könntest dir die Änderungen in der Registry sparen.
Wie wär's damit?

Das wurde schon hier angesprochen.

Ykcim 6. Mai 2013 14:50

AW: ODBC zu Access via Batch-Datei erstellen
 
Ich wünschte mir auch, ich hätte nicht die Starter... Schmecken tut mir diese Vorgehensweise auch nicht, schon weil ich mich mit der Regitry noch nie beschäftigt habe...

Mit der Batch-Datei bekomme ich es leider auch nicht hin. Er legt zwar nach dem Änderungsvorschlag von baumina alles an, erzählt mir aber dann, dass er die Driver Datei (C:\Windows\system32\odbcjt.dll) nicht finden kann.

Ich habe es jetzt mit er veränderten *.reg Datei gelöst.

Jetzt komme ich aber bei der Überprüfung, ob die ODBC-Schnittstelle vorhanden ist, nicht weiter. Kann mir da einer einen Schups geben? Ich bin dem Link von Bernhard Geyer gefolgt, habe aber noch keine Lösung damit gefunden - tue mich damit etwas schwer.

Vielen Dank

Patrick

Bernhard Geyer 6. Mai 2013 14:54

AW: ODBC zu Access via Batch-Datei erstellen
 
Zitat:

Zitat von Ykcim (Beitrag 1214343)
..., erzählt mir aber dann, dass er die Driver Datei (C:\Windows\system32\odbcjt.dll) nicht finden kann.

Erstens heißt die DLL odbcjt32.dll und zweitens ist sie unter C:\Windows\SysWOW64 zu finden. Nur auf 32-Bit Systemen liegt sie unter C:\Windows\system32.

Ykcim 6. Mai 2013 14:58

AW: ODBC zu Access via Batch-Datei erstellen
 
Liste der Anhänge anzeigen (Anzahl: 3)
Sorry, das war ein Flüchtigkeitsfehler meinerseits... Habe es in der Batchdatei richtig gemacht.
Ich habe ebenfalls dann festgestellt, dass die in dem Verzeichnis SysWOW64 liegt und den Pfad geändert. Leider hat mich das nicht weitergebracht. Was ich nicht verstehe: Ich hatte die ODBC Schnittstelle manuel angelegt, und dann trägt er system32 ein - und es klappt...
Meine Batch-Datei fürhre ich auf dem gleichen System aus...

Kannst Du mir noch bei der Überprüfung helfen?

Vielen Dank
Patrick

Ykcim 6. Mai 2013 15:10

AW: ODBC zu Access via Batch-Datei erstellen
 
Ok, habe gerade heraugefunden, dass es nicht an der Treiber-Datei liegt, sondern an den Äs und Üs in dem Dateipfad für die Datenbank. Ich habe den Name nicht vergeben und kann ihn auch leider nicht ändern. Wie kann ich die Batchdatei dazu bringen, dass sie Äs und Üs richtig darstellt?

Vielen Dank

Patrick

baumina 6. Mai 2013 15:16

AW: ODBC zu Access via Batch-Datei erstellen
 
Zitat:

Zitat von Ykcim (Beitrag 1214350)
Ok, habe gerade heraugefunden, dass es nicht an der Treiber-Datei liegt, sondern an den Äs und Üs in dem Dateipfad für die Datenbank. Ich habe den Name nicht vergeben und kann ihn auch leider nicht ändern. Wie kann ich die Batchdatei dazu bringen, dass sie Äs und Üs richtig darstellt?

Vielen Dank

Patrick

http://www.pctipp.ch/praxishilfe/kum...h_dateien.html

Ykcim 6. Mai 2013 15:28

AW: ODBC zu Access via Batch-Datei erstellen
 
PRIMA, jetzt funktioniert die Batch-Datei.

Bleibt nur noch das Thema mit der Überprüfung, mit dem ich leider alleine nicht zurechtkomme.

Kann ich hierbei auf Hilfe hoffen?

Vielen Dank

Patrick

p80286 6. Mai 2013 16:09

AW: ODBC zu Access via Batch-Datei erstellen
 
Was willst Du Prüfen?
Wenn du auf Batch-Dateien stehst, dann arbeite doch mit "reg Compare".
ansonsten könnte Auch Dein Delphiprogramm dies leisten (TRegistry). Beispele müßten hier eigentlich en Masse zu finden sein.

Die einfachste Methode is natürlich vor jedem Programmstart, die ODBC-Schnittstelle neu einzurichten,denn dann bist Du sicher, daß das System immer Deinen Ansprüchen genügt.

(ich würde Dein Programm dann allerdings ganz schnell von allen erreichbaren Rechnern entfernen. Freundlich wäre es den Benutzer den Schnittstellennamen auswählen zu lassen und diesen dann zu nutzen)

Gruß
K-H

Ykcim 6. Mai 2013 17:50

AW: ODBC zu Access via Batch-Datei erstellen
 
Hallo,
ich möchte gucken, ob die ODBC-Schnittstelle schon vorhanden ist, oder nicht.
Das mit dem Auswählen mache ich besser nicht. Das Programm wird nur intern benutzt und würde den ein oder anderen User leider überfordern... ABer ich habe zwei Datenbankparameter, auf denen ich bei Änderung der Datenbank die Änderung im Programm vornehmen kann.
Das Programm soll erst in 1-2 Wochen eingeführt werden, d.h. bis jetzt ist es noch auf keinem Rechner drauf.

Das mit der TRegistry muss ich mal gucken. Habe ich bislang noch nie mit gearbeitet...

Am liebsten würde ich die ODBC-Schnittstelle nicht bei jedem Start neu erstellen, sondern nur wenn sie nicht vorhanden oder nicht funktioniert...

Gruß
Patrick

Ykcim 7. Mai 2013 14:09

AW: ODBC zu Access via Batch-Datei erstellen
 
Hallo Zusammen,

ich will nur noch schnell meinen gewählten Lösungsansatz mitteilen:

Ich habe die Abfrage, welche auf die ODBC-Verbindung angewiesen ist einfach in ein Try - Except gesetzt. Geht etwas schief, dann wird in dem Except-Teil die ODBC-Schnittstelle via Batch-Datei angelegt/Repariert und es wird eine erneute Abfrage versucht. Wenn die auch schiefgeht, dann kommt eine MessageBox mit einem Hinweis.

Das war jetzt aus meiner Sicht der einfachste Weg, um das Thema sicher zu machen.

Vielen Dank für die Unterstützung - Ihr habe mir mal wieder toll weitergeholfen!

Gruß
Patrick


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz