Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Execute Update bleibt ohne Effekt bei verlinkter Tabelle

Begonnen von Eisman333, Juli 15, 2024, 18:11:18

⏪ vorheriges - nächstes ⏩

Eisman333

Hallo liebe Communtiy,

ich bin auf ein Problem gestoßen dessen Lösung sicherlich ein Leichtsinnsfehler ist, den ich aber leider bisher nicht finden konnte.

Ich habe ein Formular (fArtikelAnlegen) das ausschließlich zum eintragen von neuen Datensätzen (in eine Tabelle public_tArtikel) verwendet wird (es ist so eingestellt, dass nur neue Datensätze über das Formular angelegt werden können). In dem AfterInsert Event habe ich dann ein kurzen VBA Code eingefügt, der eigentlich 2 Datensätze in anderen Tabellen aktualisieren sollte.

Ursprünglich hatte ich die Tabellen in Access selbst und dabei hatte dieser Code funktioniert. Nun habe ich aber eine externe PostgreSQL Datenbank angebunden und in Access entsprechend verlinkte Tabellen erstellt. Meinen Code habe ich dann angepasst, dass er die Namen der verlinkten Tabellen verwendet (Struktur identisch), und nun funktioniert es plötzlich nicht mehr.

Hier der Code aus dem AfterInsert Event:
Private Sub Form_AfterInsert()
    Dim laufendeNummer As Integer
    Dim gtin As String
    Dim id As Integer
   
    laufendeNummer = Me.intLaufendeNummer
    laufendeNummer = laufendeNummer + 1
   
    gtin = Me.txtGTIN
    id = Me.IDArtikel
   
    CurrentDb.Execute "UPDATE public_tHersteller SET intLaufendeNummer = " & laufendeNummer & " WHERE IDHersteller = " & Me.IDHersteller
    CurrentDb.Execute "UPDATE public_tGTINs SET IDArtikel = " & id & " WHERE txtGTIN = '" & gtin & "'"

End Sub

Anbei zwei Screenshots mit den jeweiligen Tabellen Strukturen.

Eigentlich sollte also bei public_tHersteller die laufendeNummer um 1 hochgezählt werden, und bei public_tGTINs sollte IDArtikel hinterlegt werden. Wie erwähnt, mit lokalen in Access erstellten Tabellen hatte das ganze normal funktioniert, also sollte es mit verlinkten Tabellen sicherlich auch funktionieren aber irgendwo habe ich wohl doch einen Fehler eingebracht.

Die im Code verwendeten Formular Felder funktionieren auch, wenn ich also einen neuen Datensatz hinzufüge, sind die Daten wie z.B. Me.IDHersteller richtig ausgefüllt.

Vielen Dank im Voraus für jegliche Rückmeldung hierzu, falls noch weitere Infos gebraucht werden um den Fehler zu analysieren stelle ich diese gerne bereit.

Viele Grüße
Eisman333

PhilS

Ich sehe bisher kein offensichtliches Problem mit deinem Code.
Generell solltest du bei DB.Execute aber die Option dbFailOnError verwenden. Dann bekommst du bei Problemen mit der Ausführung des SQL einen echten Fehler mit einer meist hilfreichen Meldung, während bisher bei deinem Code ein SQL-Fehler einfach ignoriert wird.
CurrentDb.Execute "UPDATE .... = '" & gtin & "'", dbFailOnError
Das natürlich für beide SQL-Statements.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Eisman333

#2


Vielen Dank für die schnelle Rückmeldung und für die Info mit dbFailOnError. Ich habe das gleich hinzugefügt, mit der Hoffnung, eine Fehlermeldung zu erhalten um das Problem genauer zu untersuchen, allerdings gab es "leider" keinen Fehler. Stattdessen funktioniert es nun einfach, obwohl ich wirklich nichts verändert habe außer bei beiden SQLs hinten das dbFailOnError hinzuzufügen.

Ich vermute jetzt einfach mal, das sich Gestern irgendwas "verhakt" hatte und ich einfach mal Access hätte neustarten müssen.

Auf jeden Fall trotzdem vielen Dank für deine Hilfe! Werde diesen Zusatz für die Fehlermeldung auch bei meinen anderen  DB.Execute SQLs hinzufügen, Vorsicht ist immerhin besser als Nachsicht.