odbc Zugriff auf MS-Access Datenbank
Peter Klaeusli
- datenbank
0 romy0 Peter Klaeusli0 Erwin0 Peter Klaeusli0 Tom
0 Erwin
Guten Tag,
Kann mir jemand helfen:
Ich bin PHP (4.2) Anfänger und habe folgendes Problem:
Ich greife aus einem PHP-Script mittels odbc-Schnittstelle auf eine MS-Access Datenbank zu.
Bei einem normalen Select Statement ist dies auch kein Problem. Sobald ich jedoch einen UPDATE oder INSERT mache, reagiert MS_Access oder die odbc Schnittstelle mit einer Fehlermeldung:
Bsp.: "UPDATE Tabelle1 SET Feld1 = 'text2' WHERE Feld1 = 'text1'" ergibt eine Meldung, dass dies keine aktualisierbare Abfrage sei.
Genau dieselbe Abfrage funtioniert, wenn ich sie in MS-ACESS direkt eingebe problemlos.
Mit freundlichen Gruessen
Peter Klaeusli
Hi Peter,
nur ne Idee, ist vielleicht Schreibschutz auf der Datenbankdatei bzw. hat Dein Script nicht genügend Rechte darauf verändernd zuzugreifen.
ciao
romy
Hi Peter,
nur ne Idee, ist vielleicht Schreibschutz auf der Datenbankdatei bzw. hat Dein Script nicht genügend Rechte darauf verändernd zuzugreifen.
ciao
romy
Hi romy
Dies war auch meine erste Idee, habe ich überprüft. Was ich nicht begreife ist die Fehlermeldung: "Es muss eine aktualisierbare Abfrage sein". Ich habe im Help von MS-Access nachgeschaut. Gemäss der Meldung kommt die Meldung, wenn man z.B. ein Update Sql auf eine Kreuztabelle abschickt. Nur: bei mir handelt es sich um eine hundsgewöhnliche Tabelle. Ich habe extra alles auf eine Testtabelle mit genau 2 Feldern reduziert.
Trotzdem herzlichen Dank für Deine Antwort.
Gruss
Peter
Hi Peter,
Dies war auch meine erste Idee, habe ich überprüft. Was ich nicht begreife ist die Fehlermeldung: "Es muss eine aktualisierbare Abfrage sein". Ich habe im Help von MS-Access nachgeschaut. Gemäss der Meldung kommt die Meldung, wenn man z.B. ein Update Sql auf eine Kreuztabelle abschickt. Nur: bei mir handelt es sich um eine hundsgewöhnliche Tabelle. Ich habe extra alles auf eine Testtabelle mit genau 2 Feldern reduziert.
Hmm, das ist wirklich seltsam. Hast du die Datenquelle als System-DSN eingerichtet ? (DSN = DataSurceName).
Es gibt User-DSN und System-DSN. Wenn der User den Script ausführt reicht eine User-DSN. Soll das Script als CGI in einem Webserver laufen brauchts einen System-DSN.
Ist aber trotzdem komisch weil ein SELECT funktioniert...
Erwin
Hi Peter,
Hmm, das ist wirklich seltsam. Hast du die Datenquelle als System-DSN eingerichtet ? (DSN = DataSurceName).
Es gibt User-DSN und System-DSN. Wenn der User den Script ausführt reicht eine User-DSN. Soll das Script als CGI in einem Webserver laufen brauchts einen System-DSN.
Ist aber trotzdem komisch weil ein SELECT funktioniert...
Erwin
Hi Erwin
Ja, ich habe die DSN als System-DSN eingerichtet. Ich habe auch dieselbe Abfrage (copy/paste) als querry im MS-Access direkt laufen lassen und dort funktionierts. Das seltsame ist, dass die Fehlermeldung gemäss Help sich auf Kreuztabellen bezieht. ich aber überhaupt nichts mit Kreuztabellen am Hut habe.
Gruss
Peter
Hello,
das liegt an der DSN.
Hatt ich auch schon mal, erinnere mich aber nicht mehr genau, da ich inzwischen nur noch MySQL und Informix benutze.
Da musste aber der User und das Passwort für den User zu Fuß nachgefrickelt werden. Dann hat's geklappt. Der User muss ien gültiger Access-User sein.
Grüße
Tom
Es muss tatsächlich an der DSN liegen. Ich habe das ganze jetzt auf dem SQL Server nachvollzogen und dort funktioniert der code.
Danke an alle Antworter
Gruss
Peter
Mahlzeit
die FM kommt vom ODBC Treiber oder von der PHP-Schnittstelle, hmm, versuchs mal ohne die Leerzeichen;
"UPDATE Tabelle1 SET Feld1 = 'text2' WHERE Feld1 = 'text1'"
"UPDATE Tabelle1 SET Feld1='text2' WHERE Feld1='text1'"
Gruss, Erwin