Peter Klaeusli: odbc Zugriff auf MS-Access Datenbank

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

  1. 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

    1. 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

      1. 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

        --
        SELFforum - Das Tor zur Welt!
        Theoretiker: Wie kommt das Kupfer in die Leitung?
        Praktiker: Wie kommt der Strom in die Leitung?
        1. 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

          1. 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

            1. 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

  2. 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

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?