Neuigkeiten:

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

Mobiles Hauptmenü

Mit SQL einen Wert in einer Tabelle aktualisieren

Begonnen von smily68, Juni 02, 2011, 09:55:17

⏪ vorheriges - nächstes ⏩

smily68

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]

DF6GL

Hallo,

wenn, dann:


db.Execute "Update T_Eink Set Eink_PosZaehler = " & Zaehler & " Where Eink_ID = " & EinkPos_EinkID


smily68

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]

DF6GL

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

smily68

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

DF6GL

#5
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


smily68

Hallo Franz

Ich habe Me.Requery vor der letzten Zeile eingebaut nun geht es.

Gruss Daniel