Neuigkeiten:

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

Mobiles Hauptmenü

INSERT INTO wird nicht ausgeführt

Begonnen von gilles_de_rais, Oktober 19, 2017, 16:23:51

⏪ vorheriges - nächstes ⏩

gilles_de_rais

Hallo,

ich möchte Werte aus einer Liste per Knopfdruck in eine Zwischentabelle einfügen. Das habe ich in einem Formular erfolgreich implementiert.

Jetzt, da ich es in einem Formular auf genau die gleiche Art angewendet habe, funktioniert der Button nicht mehr. Selbstverständlich habe ich den Code entsprechend angepasst.


Private Sub cmdRueber_mat_Click()
strSQL = "INSERT INTO tblWart_Mat (auf_id_f, mat_id_f) " & _
         "VALUES (" & Str(Me!auf_id) & "," & Str(lstMaterial) & ")"
'MsgBox strSQL
CurrentDb.Execute strSQL, 128
Forms!frmBahn_Auftrag!frmBahn_Auftrag_ufoBeanstandung.Requery
End Sub


Beim Ausführen kommt die Meldung, dass für mat_id_f kein Wert eingegeben wurde. Die einzige Ursache, die ich mir vorstellen kann, ist, dass die Liste keine ID des entsprechenden Werts an die Tabelle übergibt.

Hat jemand eine Idee, was ich falsch mache?

VG
Dennis

PhilS

Was zeigt den die ausgabe von MsgBox strSQL an?
Ersetz das doch mal durch Debug.Print strSQL, dann kannst du den SQL String auch einfach hier im Forum posten.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

gilles_de_rais

#2
Die Message Box gibt
INSERT INTO tblWart_Mat(auf_id_f, mat_id_f) Values(3,1)

aus.

Nach meinem Verständnis sagt das eigentlich aus, dass genau die Werte vorhanden sind, die letztlich aber nicht eingetragen werden.

Über Debug.Print strSQL wird mir leider nichts ausgegeben.

EDIT: Es handelt sich um eine geteilte Datenbank. Backend liegt auf dem Server. Besteht hier vielleicht ein Zusammenhang?

EDIT 2: Ich sehe gerade, dass der Debug.Print-Befehl sehr wohl etwas ausgibt. Nämlich das gleiche wie die Message Box :)

gilles_de_rais

#3
Ok, wer lesen kann, ist fast immer im Vorteil.

Es kommt am Ende der Prozedur der Hinweis, dass wart_mat.wart_id_f nicht eingetragen werden kann. Nicht, wie ich ursprünglich behauptet habe, mat_id_f.

wart_id_f ist in dieser Zwischentabelle zwar als Spalte vorhanden, wird aber von dem aktuellen Formular überhaupt nicht verwendet. Kann mir jemand sagen, wie ich herausbekomme, wo Access den Bezug zu diesem Fremdschlüssel herstellt?

VG
Dennis

EDIT: Ich habe das Problem lösen können. Und zwar habe ich das Feld in der Backend-Tabelle gelöscht und anschließend wieder neu eingefügt. Jetzt funktioniert alles genauso, wie es soll. Danke für den Tip mit Debug.Print. So wusste ich wenigstens, dass ich nichts Grundlegendes falsch gemacht habe. Zwar weiß ich jetzt immer noch nicht genau, woran es lag. Spielt für den Moment aber auch keine Rolle!