MS-Access über ODBC, es muss doch gehen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

MS-Access über ODBC, es muss doch gehen

Beitrag von KOBOLD Messring GmbH »

Datenbank-Zugriff über ODBC auf MySQL und MS-Access unter Lazarus (TODBCConnection) und MSEide (TmseODBCConnection). Ich dachte, soooo buggy können die ODBC-Komponenten doch nicht sein, dass man nicht die einfachsten Datenbank-Zugriffe damit hinbekommt.
¡¡¡ Aber ich verzweifle noch !!!
Ich dachte, nun einen Weg gefunden zu haben um auch unter Windows an die MS-Access DB heranzukommen.
Sowohl die TODBCConnection von Lazarus als auch die TmseODBCConnection funktionieren super unter Linux auf MySQL (ich mache keine dollen Sachen, nur SELECT, INSERT und UPDATE von Varchar, Integer und Double-Felder).
Auch unter Windows (XP, mit SP2 und MS-Access 2000) über den ODBC kann ich problemlos SELECT-Statement machen (die Anwendung kennt die Felder, brauche keine System-Tables etc.), aber
INSERT und UPDATE führen immer zu Fehler:
Anzahl der Parameter stimmt nicht, obwohl das Statement 100% korrekt ist. ¡¡¡Das gleiche Statement in MS-Access ausgeführt funktioniert!!!
Aber über Lazarus und/oder MSEide immer der Fehler, dass die Anzahl der Parameter falsch ist:
UPDATE baumtabelle SET baumart = "Tanne" WHERE ID = 2;
hat doch alle Parameter, ist ein einziger String, nicht mit TParam gemacht.
Habe auch probiert mit und ohne Semikolon hintendran, aber immer das gleiche.
Das gleiche auch bei z.B.
INSERT INTO baumtabelle VALUES (3,"abc","xyz","bnr","Tanne",0.7,0.3,3,0,100,14,0.16,10,1);
Statement funktioniert perfekt in MS-Access, aber über Lazarus/MSEide-ODBC wird die Anzahl der Parameter angemeckert (und die ist korrekt).
¿¿Was mach ich nur falsch, woran könnte es liegen??
¿¿Sind die ODBC-Komponenten wirklich soooo buggy?? ¿¿Alle beide, die von Lazarus UND MSEide??
¿¿Hat jemand eine Idee??

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: MS-Access über ODBC, es muss doch gehen

Beitrag von Christian »

Du brauchst nicht auch noch im selben Forum alles doppelt posten. Es reicht wenn die Leute schon immer nicht kappieren das sie nicht in 3 Foren den selben Post absetzen müssen da eh in den entsprechend Thematisierten Foren immer die selben Leute unterwegs sind nein jetzt werden schon in ein und dem selben Forum Posts dubliziert.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: MS-Access über ODBC, es muss doch gehen

Beitrag von KOBOLD Messring GmbH »

Lieber Christian,
entschuldige bitte dieses vorgehen. Ich möchte nämlich gerne 2 Antworten auf mein Problem:
1. Für Lazarus, für die LCL-Komponente TODBCConnection mit MS-Access unter Windows.
2. Für MSEide für die tmseodbcconnection.
Martin hat mich darauf hingewiesen, dass sämtliche Posts, die MSEide betreffen, im Unterforum von MSEide zu stehen haben, deshalb habe ich dies dort zusätzlich hingestellt.
Da anscheinend aber mehrere Programmierer Probleme mit Lazarus und MS-Access haben (siehe z.B. Thema `MS Access zugriff - letzter Thread!`) dachte ich, dass gehört auch ins Forum `Lazarus-Datenbanken`.
Denn da hiess es : Es besteht noch hoffnung um MS-Access per ODBC in Lazarus zu "verarbeiten" ^^
(von EugenE am 11.6.2008).
¿Hast Du `ne Idee mit der ODBCConnection?

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: MS-Access über ODBC, es muss doch gehen

Beitrag von KOBOLD Messring GmbH »

Problem gelöst:
Unter Windows/ODBC/MS-Access dürfen KEINE doppelten Anführungszeichen in die SQL-Statements. Verwendet man einfache Anführungszeichen dann funktioniert`s:
FÜHRT ZU FEHLER:

Code: Alles auswählen

UPDATE baumtabelle SET baumart = "Tanne" WHERE ID = 2;
Korrekt:

Code: Alles auswählen

UPDATE baumtabelle SET baumart = 'Tanne' WHERE ID = 2;
und damit im Pascal-Code etwas umständlicher zu schreiben

Code: Alles auswählen

SQLQuery2.SQL.Add ('UPDATE baumtabelle SET baumart = '''+Edit1.Text+''' WHERE ID='+id);
Kleine Dinge, grosse Wirkung, Martin hats rausgefunden. Mögen anderen diese Probleme erspart bleiben und finden die Lösung schnell im Lazarus-Forum.

Antworten