Hallo
Ich stehe vor folgendem Problem:
Ich habe eine Tabelle Lager in die ich aus dem Verkauf, Einkauf und manuellen Bewegungen die Eingänge Ausgänge durch Anfügeabfragen reinschreibe. Nun möchte ich in dieser Abfrage laufend nach Bewegungsdatum den aktuellen Lagerbestand anzeigen. Wie löse ich das?
In der Tabelle sind die Eingänge und Ausgänge in separaten Feldern aufgeführt.
Gruss Daniel
Hallo,
ZitatIn der Tabelle sind die Eingänge und Ausgänge in separaten Feldern aufgeführt.
Das gehört in ein Feld, wobei das Vorzeichen die Richtung bestimmt. Eingäne positiv, Ausgänge negativ.
Eine Abfrage nach Artikel gruppiert und das Feld mit den Mengen summiert liefert jederzeit den aktuellen Bestand.
Alternativ: In einer Abfrage ein berechnetes Feld anlegen, die aus der Menge je nach Richtung eine positive oder negative Zahl macht.
Noch besser ist es für die Bewegungsarten eine extra Tabelle zu machen. Es gibt ja noch mehr, Verkauf, Einkauf, Diebstahl, Defekt usw. In dieser Tabelle hinterlegt man auch noch einen Multiplikator, der das Vorzeichen bestimmt.
Schaue mal in das angehängte Beispiel, da ist das so gelöst.
[Anhang gelöscht durch Administrator]
Hallo
Ich habe mich nicht klar ausgedrückt. Ich habe schon für den Einkauf, Verkauf extra Tabellen. Ich schreibe bei jeder Lagerbewegung eine Anfügeabfrage in die Tabelle Lager. Auch den aktuellen Lagerbestand habe ich auf dem Artikelstamm. Es geht mir um eine Historie.
Ich habe in einer Tabelle alle Lagerbewegungen sortiert nach Datum. Nun möchte ich in einer Abfrage oder Bericht anzeigen wie sich der Lagerbestand der entsprechenden Artikel entwickelt, dass heisst in einer Spalte ist die Zu oder Abgangsmenge und in einer wird der Lagerbestand zu diesem Zeitpunkt angezeigt.
Gruss Daniel
Hallo,
nein nein, ich habe Dich schon richtig verstanden. Du solltest Dich mal mit meinem Beispiel beschäftigen. Das macht nämlich das was Du willst, nur auf eine andere Art.
ZitatIch habe schon für den Einkauf, Verkauf extra Tabellen.
Das sollte in eine Tabelle mit einem kennzeichen ob Einkauf oder Verkauf.
ZitatAuch den aktuellen Lagerbestand habe ich auf dem Artikelstamm
Auch das ist bereits falsch. Ein Lagerbestand sollte niemlas gespeichert werden. Schau in mein Beispiel, der Bestand wird immer aktuell berechnet, ohne Speicherung. Eine solche Abfrage lässt sich auch um einen Stichtag für den Bestand erweitern.
Hallo
Auf dem Artikelstamm wird der errechnete Bestand angeigt.
Ich habe das Beispiel angeschaut, doch es ist nicht das, was ich möchte. Das Beispiel ist klar für mich doch ich möcht folgendes.
Eine Abfrag die wie folgt aussieht:
ID Datum Artikel-ID Bewegungsart Menge Bestand
1 15.6.2011 257 Einkauf 100 100
2 16.6.2011 58 Einkauf 50 50
3 16.6.2011 257 Verkauf 10 90
4 17.6.2011 58 Verkauf 60 40
5 19.6.2011 257 Einkauf 100 190
usw.
Der Bestand in dieser Tabelle soll laufend errechnet werden. Es kann vorkommen, dass rückwirkenden Datum gebucht wird
Gruss Daniel
@ MzKlMu
Deine Lagerdatei "Bestand.zip" hat mich gestern im Büro schon vom Grübeln erlöst. Die Idee mit dem Multiplikator ist echt toll!
Eine Frage habe ich dazu habe ich aber noch: Was verbirgt sich hinter dem Feld [RechenMenge]? Wie funktioniert das?
Gruß Kai.
Hallo,
die Rechenmenge ist ja für die Bestandanzeige im Formular das wichtigste. Du gibst ja die Menge ohne Vorzeichen ein. Zur Summierung (=Bestand) ist aber das entsprechende Vorzeichen notwendig. Das heist, die Rechenmenge ist je nach Vorgangsart positiv oder negativ. Das bestimmt der Multiplikator. Für den Bestand wird also die Rechenmenge summiert, nicht die Menge.
Öffne die Abfrage das Unterformulars direkt, dann siehst Du es.
Hallo,
danke für die schnelle Antwort.
Den Aufbau der Abfrage verstehe ich -das ist logisch. Wie ich aber das Feld "RechenMenge" einrichte - da komme ich einfach nicht dahinter. Verknüpfe ich das mit der Abfrage? Wenn ich unter "Eigenschaften" nachschaue, sehe ich nur, dass es ein Textfeld ist mit dem Namen und Steuerelementeinhalt "RechenMenge" ist. Vielleicht (bestimmt sogar) steh ich ganz arg auf der Leitung. Aber kannst Du mir erklären, wie ich dieses Feld einrichte?
Der Rest ist mit dann wieder klar.
Gruß Kai.
Hallo,
"Rechenmenge" ist doch ein (Alias-)Name einer berechnete Spalte in der Abfrage. An diese Spalte ist das gleichlautende (unsichtbare) Formulartextfeld gebunden. In diesem Feld steht der zum Vorgang des entspr. Datensatzes mathematisch passende Mengen-Wert (hier lediglich entweder negativ oder positiv) aus eben dieser Abfragespalte . Die akt. Bestandswert selber wird im Formularfeld "Bestand" mittels Summe über die einzelnen Werte im Feld "Rechenwert" (---> mathematisch richtiger Wert der Menge).
Hallo,
hat jetzt auch in meiner db funktioniert. Danke :-)
Wenn ich jetzt die Lagerhaltung noch um verschiedene Lagerorte erweitern will/muss, kann ich dann nach demselben Muster erweitern? Müsste doch eigentlich möglich sein...
Gruß Kai.
Hallo,
natürlich geht das...
Das Muster wäre: Neue Tabelle für die Lagerort-Definitionen (tblLagerorte) und zusätzliches Fremdschlüsselfeld in tblBewegungsdaten für den PK-Wert aus tblLagerorte.
Hallo Franz,
Habe beim Stöbern diesen Thread gefunden, und hätte da mal eine Frage.
Interessiert mich zur Zeit sehr, da ich gerade dabei bin meine A2K-Fakturierung in A2010 neu aufzusetzen, da die zwar schon ein paar Jährchen läuft, aber doch so ihre Schwächen und Lücken hat, und ich in der Zwischenzeit doch einiges gelernt habe und daher besser machen kann, so wie dies. Z.Zt. speichere ich die Bestände noch (schäm :-[), und das Bewegungsprotokoll ist nur rudimentär. Aber der Ansatz ist schon mal da ;).
Habe mir Deine Beispiel-DB angeschaut, speziell natürlich die Abfrage.
Lässt sich das auch auf mehrere Bestände ausbauen. Bei mir gibt es da noch welche, die den physischen Bestand nicht verändern, aber für mein geplantes Bestellwesen und die Disposition wichtig sind. Das sind
"Reservierte" (aktuell zwischen Auftragsbestätigung und Lieferung, dann 0),
"Rückstände" (aktuell zwischen Auftragsbestätigung und Lieferung, dann 0 bzw. Restmenge; aber nur wenn aktueller Lagerbestand<Auftrag),
"Bestellte" (aktuell zwischen Bestellung beim Lieferanten und Wareneingang, dann 0 bzw. Restmenge).
Dann gibt es noch den Mindest- und den Inventur(Zähl)bestand. Diese dürfen IMO aber in einer Tabelle gespeichert werden.
"Reservierte" und "Rückstände" ermittele ich z.Zt. durch eine Abfrage auf die Auftragspositionen (Felder "bestellt", "geliefert", "Rückstand").
Die "Reservierte"n und "Bestellte"n sollte man in Dein Beispiel eigentlich einfach einbauen können, indem man je zwei Vorgangsarten ("Reservierung", "Entreservierung" bzw. "Bestellung", "Wareneingang") aufnimmt, und die Abfrage dann auf diese filtert, - oder?
Bei der Belegbearbeitung müssten dann u.U. zwei DS in tblBewegungsdaten geschrieben werden. "Rückstände" muss ich aber wohl weiterhin aus den Auftragspositionen holen.
Würde mich freuen, wenn Du (andere natürlich auch) mir da ein bisschen auf die Sprünge helfen würde.
Dank im Voraus.
gruss
ekkehard