Bestand automatisch korrigieren
Hallo
Ich habe eine Access DAtenbank . In der befinden sich unter anderem eine Tabelle tblLager mit einem Feld Bestand und eine Tabelle tblRech_Material mit einem Feld Abgang.
Wie bekomme ich es nun hin dass wenn ich im Feld Abgang z.B. eine 3 eintrage der Bestand in der tblLager automatisch verändert wird??
Auf eure Antworten freue ich mich.
Gruß Hari
Antwort schreiben
Antwort 1 von Marie vom 05.02.2020, 23:58 Options
Na Du gibst doch sicherlich die Abgänge in einem Formular ein? Dann kannst Du doch ein Ereignis bei Änderung schreiben oder nach Aktualisierung oder beim Verlassen des Datensatzes, je nachdem, damit nichts verhuddelt wenn einer sich verschreibt oder nochmal korrigiert.
Aber um Dir jetzt hier Code zu liefern, der das an einer sinnvollen Stelle subtrahiert müsstest Du ein wenig mehr schreiben wo Du den Code hinhaben möchtest.
Eine andere Möglichkeit wäre eine Aktualisierungsabfrage. Aber auch dafür möchte ich natürlich zuerst wissen wann und wo Du diese aufrufen möchtest.
Gruß Marie
Antwort 2 von hari vom 06.02.2020, 09:41 Options
Hallo Marie
Vielen Dank für deine Antwort.
Also die Abgänge werden in einem Formular Rechnung eingegeben. Nach welchem Ereignis dies geschehen soll wird die Praxis zeigen, nach meiner Vorstellung nach Aktualisierung. Wenn du mir einen Code liefern könntest wäre das fantstisch, ich bin schon lange daran aber kriege es einfach nicht auf die Reihe.
Also für den Fall dass du mir den Code liefern könntest hier noch mehr Informationen:
Eingabe erfolgt in einem Formular Rechnung, das Feld ist mit Abgang bezeichnet und befindet sich in der Tabelle tblRech_Material, die Berechnung soll jedes mal nach Aktualisierung erfolgen.
Aktualisiert werden soll das Feld Bestand in der Tabelle tblLager also
[tblLager.Bestand]= [tblLager.Bestand] - [tblRech_Material.Abgang]
Über eine Aktualisierungsabfrage möchte ich dies nicht lösen, da diese Funktion SEHR oft benötigt wird wenn es Sie mal gibt. Also auch noch an andere Stelle in meinem Programm, aber ich gebe mich schon zufrieden wenn dies erst mal an einer Stelle klappt.
Einen schönen Gruß und einen schönen Tag wünscht dir
Hari
Antwort 3 von hari vom 06.02.2020, 10:20 Options
Hallo Marie
Da bin ich nochmal.
Nochmals ein paar Informationen:
Bei der Rechnugsstellung rufe ich über das Feld Teilenummer welche ich im Rechnungsformular eingebe sämtliche Angaben wie Teilebezeichnung Einzelpreis usw. automatisch ab, diese Angaben werden dann automatisch in die Tabelle tblRech_Material übertragen (der Sinn ist dass sich nach Rechnungsstellung bei Änderungen in der tblLager z.B. Preis diese sich nachträglich in der Rechnung nicht mehr ändern), danach erhält das Feld Abgang den Focus.
Die Tabelle tblLager und tblRech_Material stehen in einer 1:n Beziehung.
Alle Suchfunktionen beziehen sich auf die Teilenummer in der tblLager.
Übriegens ich erwarte nicht dass ich einen fertigen Code erhalte aber ich hoffe es da alle mir bisher genannten Tips von anderen nicht weitergeholfen haben. Wie bereits erwähnt es wäre fantastisch.
Gruß Hari
Antwort 4 von Marie vom 07.02.2020, 03:38 Options
Zitat:
Die Tabelle tblLager und tblRech_Material stehen in einer 1:n Beziehung.
Jo, schick mal den Code Deiner Datensatzherkunft des Formulares. Ich müsste wissen wie die Felder heissen, die gleich sind, ist das die Artikelnummer oder ID oder was?
Geh in die Abfrage, die die Daten Deines Formulars enthält, Ansicht SQL und kopier das hier rein.
Wie heisst das Formularfeld, wo die Abgänge eingetragen werden?
Normal hast Du beide Tabellenfelder in dem Formular und dann ist das einfach:
Private Sub frmfeldAbgang_LostFocus()
Me![Bestand] = Me![Bestand] - Me![Abgang]
End Sub
Wenn Deine Formularfelder Bestand und Abgang heissen! Wenn aber nach Lost Focus erneut darin geändert wird, dann wird erneut abgezogen, deshalb ist das nicht das gelbe vom Ei.
Gruß Marie
Antwort 5 von Marie vom 07.02.2020, 03:40 Options
upps sorry,
Private Sub frmfeldAbgang_LostFocus()
Me![Bestand] = Me![Bestand] - Me![frmfeldAbgang]
End Sub
natürlich entweder so, oder so:
Private Sub Abgang_LostFocus()
Me![Bestand] = Me![Bestand] - Me![Abgang]
End Sub
Also halt eben hier die Namen Deiner entsprechenden Formularfelder
Nochmal Gruß Marie