PDA

Vollständige Version anzeigen : Bestandsverbuchung (Zugang, Abgang?)


Pascal
28.08.2001, 13:17
Ich habe mit Access 97 eine Datenbank zur Bestandsverwaltung erstellt. Wie kann erreichen, dass der Bestand bei einem Zugang oder Abgang automatisch dazugezählt oder abgezogen wird? Muss ich das mit VBA code machen, oder kann man das auch anders?

Bitte, bitte helft mir!

Kurt aus Kienitz
28.08.2001, 15:54
Hallo Pascal,

Folgender Vorschlag.

Leg eine Tabelle mit den Ausgangsbeständen an.

Tabelle: Grundbestand
ArtikelNr | Anzahl
----------+--------
4711 | 1
4712 | 100
4713 | 50

Dann eine weite, in der die Bestandsänderungen festgehalten werden.

Tabelle: BestandBuchung
ArtikelNr | Datum | Anzahl
----------+---------+--------
4711 | 1.1.01 | 3
4711 | 2.1.01 | -2
4712 | 2.1.01 | 50
4713 | 2.1.01 | 25
4713 | 2.1.01 | 20

Nun kannst Du jederzeit den aktuellen Bestand ermitteln (über Abfragen)

Abfrage: ZuAbgaenge
SELECT ArtikelNr, Sum(Anzahl) As DiffBestand
FROM BestandBuchung
WHERE Datum >= #2001-01-01#
GROUP BY ArtikelNr;


Abfrage: AktuellerBestand
SELECT G.ArtikelNr, G.Anzahl + Z.DiffBestand As AktBestand
FROM Grundbestand G, ZuAbgaenge Z
WHERE G.ArtikelNr = Z.ArtikelNr;

Einmal im Jahr machst Du eine Inventur, änderst die Daten in der Tabelle
Grundbestand und das Datum in der WHERE Klausel der Abfrage ZuAbgaenge.


Für den Fall, daß Dir das zuviel Arbeit ist, könntest Du eine VBA-Prozedur
schreiben, die deine Bestandsänderungen bucht.

Sub BucheBestandAenderung( iBestandAenderung As Integer)

currentDB.Execute "UPDATE Grundbestand SET Anzahl=Anzahl+" & Str$(iBestandAenderung) ";"

End Sub

HTH

Benjamin
28.08.2001, 22:13
Das ist eine gute Lösung; wenn's einfacher sein soll, dann mach das einfach mit Ja/ Nein-Feldern und "Nach Aktualisierung" bzw. beim Drucken des Lieferscheins öffnest Du das Recordset, suchst den richtigen Datensatz (DLookup...), Bestand = bestand -1 (oder eben die Anzahl im Form) und schon ist Dein Artikel wieder aktuell...

Pittchen
29.08.2001, 07:29
Hey Pascal,

noch eine Möglichkeit:

Du schreibst deine Bestandsänderung in eine Tabelle tblMaterialbewegung, dort in ein Feld ZugangAbgang. Auf diese Tabelle legst Du eine Abfrage, die über die ArtikelNr gruppiert und das Feld ZugangAbgang aufsummiert:
SELECT tblMaterialbewegung.ArtNr, Sum(tblMaterialbewegung.Zugang_Abgang) AS Bestand
FROM tblMaterialbewegung
GROUP BY tblMaterialbewegung.ArtNr;
auf der Basis dieser Abfrage machst Du ein UF, das Du in dein Form Materialabewegung legst und dort über die ArtikelNr verknüpfst, fertich
Gruß Pittchen