Hallo
Ich möchte mit einem SQL Befehl eine Wert aktualisieren. Den VB Code wird aus einem Unterformular herausgestartet und will einen Wert in die Tabelle des Hauptformulares schreiben.
Ich habe folgende VB Code getestet
db.Execute "T_Eink " & "Set Eink_PosZaehler = " & Zaehler & " Where Eink_ID = " & EinkPos_EinkID
db.Execute "T_Eink " & "Set Eink_PosZaehler = " & Zaehler & " Where Eink_ID = " & EinkPos_EinkID &";"
Bei beiden gibt es angehängte Fehlermeldung:
Habe ich einen Schreibfehler oder Ueberlegungsfehler gemacht. Ich sehe jedenfalls nichts. Die Tabellen und Feldnamen sind ok.
Wer kann mir helfen?
Gruss Daniel
[Anhang gelöscht durch Administrator]
Hallo,
wenn, dann:
db.Execute "Update T_Eink Set Eink_PosZaehler = " & Zaehler & " Where Eink_ID = " & EinkPos_EinkID
Hallo Franz
Es hat funktioniert.
Diese Lösung mit SQL Befehl habe ich gewählt, weil bei mir die andere Lösung mit der Positionsnummerierung nicht mehr funktioniert hat. Kannst du mir weiterhelfen und mir sagen warum mein VB Code angefügte Fehlermeldung verursacht.
Das ganze ist in folgender Konstellation:
Tabelle T_Eink und Tabelle T_EinPos. In der Abfrage A_EinPos habe ich das Feld Eink_PosZaehler von der T_Eink eingefügt. Ich habe ein Formular F_Eink mit einem UnterFormuluar F_EinkPos. Die Abfrage A_EinPos ist die Grundlage für das UnterFormular F_EinPos. Beim Auswählen eines Artikel löse ich den folgende VB Code aus:
Sub ArtikelUpdate()
Dim Zaehler As Integer
If EinkPos_MerkerPos = False Then 'Nummerierung der Auftragspositionen
EinkPos_ID = Eink_PosZaehler
EinkPos_MerkerPos = True
Zaehler = EinkPos_ID + 1
Eink_PosZaehler = Zaehler
End If
End Sub
Am Anfang hat dies funktioniert aber irgendwann als ich meine Accesslösung weiterentwickelt habe ging der Code plötzlich nicht mehr und ich bekam angefügte Fehlermeldung. "Feld konnte nicht aktualisiert werden" Das ganze funktioniert auf der Auftragsseite einwandfrei und ich entdecke keinen Unterschiede zur Einkaufsseite.
Kannst du mir einen Typ geben?
Gruss Daniel
[Anhang gelöscht durch Administrator]
Hallo,
was ist hier eine "Positionsnummerierung" ?
So wie ich den Code interpretiere, will der in das (Formular-)Feld "EinkPos_ID" , das vermutlich an das Primärschlüssel-Feld in Tabelle "T_EinPos" gebunden ist, einen Wert schreiben, was im Fall von Datentyp Autowert nicht geht.
Ansonsten verstehe ich deine Absicht hier nicht...
Hallo Franz
Mein Primärschlüssel besteht aus zwei Feldern in der Untertabelle Eink_ID vom Hauptformular sowie das Feld Eink_PosID in welchem mit dem Zaehler bei jedem Einkauf mit eins beginne. Die Tabelle hat somit keinen AutoWert. Das Problem im VB Code ist aber folgende Zeile: Eink_PosZaehler = Zaehler; hier kommt die Meldung "Feld konnte nicht aktualisiert werden"
Meine Absicht ist, ich möchte bei jedem Einkauf von vorne mit der Positionsnummerierung beginnen und keine fortlaufende Nr.
Gruss Daniel
Hallo,
ok, dann weitere Fragen:
WO befindet sich der Code?
Existiert im Unterform ein gebundenes Feld "Eink_PosZaehler" ?
Was machst Du, wenn mal eine Position gelöscht werden muß?
Ansonsten, wenn der Code sich im UFO befindet und "Eink_PosZaehler" im HaFo steht:
Sub ArtikelUpdate()
Dim Zaehler As Long
If not Me!EinkPos_MerkerPos = False Then 'Nummerierung der Auftragspositionen
Me!EinkPos_ID = nz(Me.Parent!Eink_PosZaehler,1)
Me!EinkPos_MerkerPos = True
Zaehler = Me!EinkPos_ID + 1
Me.Parent!Eink_PosZaehler = Zaehler
End If
End Sub
Hallo Franz
Ich habe Me.Requery vor der letzten Zeile eingebaut nun geht es.
Gruss Daniel