PDA

Vollständige Version anzeigen : Vom Vorherigen Wert abziehen


WG
21.06.2001, 08:32
Halloechen,
vielleicht habt Ihr meine letzte Anfrage nicht verstanden - ich probiere es nochmal:
Ich moechte in einem Formular ein Wert eingeben. Dieser Wert soll dann automatisch vom einem anderem Feldwert abgezogen und aktualisiert und angezeigt werden. Das gleiche Prinzip geschieht, wenn man eine Ware bestellt und vom Lagerbestand abgezogen wird. Was ich nicht verstehe: wie man den letzten "Lagerbestandswert" herausliesst, da dieser ja ein Record vorher ist. Verstanden? ;-)
Haette da jemand eine Idee mich von meine "langen Leitung" zu schupsen. Vor lauter nachdenken, sehe ich schon die einfachsten Lösungen nicht mehr. Danke
Tom

Morli
21.06.2001, 08:39
Hi Tom,

den letzten Lagerbestand solltest Du mit
DLast("[Lagerbestand]","Deine Tabelle","[Dein ID]=" & Formulare![Dein Formular]![Dein ID])
ermitteln können.

Gruß

Rainer :)

WG
21.06.2001, 08:54
Danke erstmal,
aber lache nun nicht auch wenn es gesund ist ;-). Bin naemlich Anfaenger. Wie trage ich dies denn ein bzw. was bedeutet da "mein ID"
Ich habe ja in einer Tabelle zwei Spalten:
Order und Bestand
Zeile 1 2 5
Zeile 2 3 x da muss nun von Zeile 1 die Zahle 5 minus 3 = 2 sich ergeben.
ist ja einfach. Aber wenn ich dies in einem Formular mache. Habe ich ein Feld mit der order "3". Wie weiss ich da in dem Feld Lagerbestand den Wert 5 aus dem vorherigen Record minus 3 zu? Haette hier noch eine Käsestange als Belohnung :-)
Tom

Morli
21.06.2001, 09:10
Hallo Tom,

jeder von uns war mal Anfänger und mit Sicherheit hat jeder an Anfang mit Problemen gekämpft, über die andere nur lachen :D!

Also, so wie ich das jetzt verstehe, ist dein Formularfeld Lagerbestand ein an das Tabellenfeld Bestand gebundenes Feld. Da kannst Du dann keine Formel als "Steuerelementinhalt" eingeben.

Du mußt beim Feld "Order" beim Ereignis "Nach Aktualisieren" den folgende Code eingeben:

Private Sub Order_AfterUpdate()
Me.Bestand = DLast("[Bestand]", "Tabelle1") - Me.Order
End Sub

Dann wird nach Eingabe des Wertes im Feld Order automatisch die Berchnung für Feld Lagerbestand ausgeführt.

Gruß

Rainer :)

Zwicki
21.06.2001, 09:18
Guten Morgen WG!

Ich habe dieses Problem ganz anders gelöst. In einer Tabelle habe ich die Lagerbewegungen. Zugänge sind positiv, Abgänge negativ. Die Auswertung geht über die Aufsummierung im Formularfeld. Man spart sich dann auch das Eintragen des Bestandswertes in die Tabelle. Der kann jederzeit aktuell ermittelt werden, oder wenn eine historische Betrachtung gewünscht wird, sich per Abfragedefinition herbei zaubern. Funkt beimeinen DBs prima. Ich bin auch nicht der Access oder SQL oder VBA- Crack. Getreu meinem Motto: KISS (keep it simple and stupid)

PS: Käsestange is' nicht mein Fall. Besser 'ne fette Einladung zum besten Italiener Deiner Stadt :D

Stephan

WG
21.06.2001, 12:44
Eijeijei, nochmals vielen Dank fuer die Tips:
nun habe ich die Vorschläge ausprobiert. Wenn ich die Codeversion einsetze, verschwindet jeglicher Wert im Feld Lagerbestand in der Tabelle. Anscheinend sind die Bezeichnungen der Felder richtig; habe ich da irgendwelche Typenbezeichnungen misachtet? Noch was. Wenn ich einen Code im Bereich des Berichtes schreibe, wird mir nach dem tippen von "Me." die Alternativen wie zb. Feldname angezeigt. Aus dem "Formularmodus-Code" wird mir dies nicht angezeigt.
Stoehn -wie ich DB und VBA liebe :-)
Gruss
Tom

WG
21.06.2001, 12:50
Sorry,
mea culpa. Habe meine Schusseligkeit entdeckt. DLast holt ja den letzten Wert aus der Tabelle und wenn man halt in den Werte vorhandenen Werte spielt und in der letzten Zeile nichts stehet. Kommt halt nichts in den Feldern hinein. Besser waere es doch, wenn es anstatt DLast oder DFirst sowas wie Prevoius geben wuerde. Gibt es das? Somit waere es viel flexibler.
Bye bye
Tom

A.S.
21.06.2001, 12:59
Hi,

Probiere es nicht über DLast sondern über VBA via

Me.RecordsetClone.Bookmark = Me.Bookmark
Me.RecordsetClone.MovePrevious

Ergebnis = Me.RecordsetClone("Lagerbestand") - Me!Abgang

------------------
HTH

Arno