Artikelverwaltung mit Inventurfunktion

André Minhorst, Duisburg

Die Verwaltung von Artikeln ist eines der Haupteinsatzgebiete von Datenbankanwendungen. Gerade in Zeiten von Online-Shops mit Datenbankanbindung und stetig zunehmenden Handels auf Auktionsplattformen wie eBay erleben Datenbankanwendungen zur Verwaltung von Artikeln eine Renaissance. Da will Access im Unternehmen nicht außen vor stehen und startet mit der Artikelverwaltung des vorliegenden Beitrags eine neue Reihe mit Musterlösungen, der unter anderem Datenbanken für Bestellverwaltung, Faktura und Mahnwesen folgen werden.

Wer mit der Zeit geht, der wirft nichts mehr weg, sondern er verkauft, was er nicht mehr braucht. Vielleicht macht er das Ganze auch gewerbsmäßig oder bestreitet mit dem An- und Verkauf diverser Produkte ganz oder teilweise seinen Lebensunterhalt Irgendwann wird es dann Zeit, sich einmal mit dem Einsatz einer Artikelverwaltung anzufreunden – erst recht, wenn diese wie die in diesem Beitrag besprochene auch noch eine Inventurfunktion und in folgenden Ausgaben noch Erweiterungen wie eine Bestellverwaltung, eine Fakturierung und ein Mahnwesen mit sich bringt.

In den folgenden Kapiteln erfahren Sie, wie Sie Artikel und damit in Zusammenhang stehende Informationen in einer Datenbank speichern und verwalten können. Dazu gehört neben den Artikeln selbst noch Informationen über Wareneingänge und -ausgänge, Umbuchungen und Inventuren. Teilweise werden für diese Anwendung bereits Tabellen verwendet, die erst in den in folgenden Beiträgen zu diesem Themenkomplex behandelt werden – dazu gehört die Verwaltung von Bestellungen und Kunden.

Die Formulare zur Eingabe der entsprechenden Daten sind dementsprechend rudimentär und werden zukünftig ausgebaut.

Wenn Sie bereits einen Online-Shop führen oder in dieses Geschäft einsteigen möchten, ist Access als Datenbackend auf dem Internetserver sicher nicht die erste Wahl – hier kommen besser geeignete Systeme wie MySQL zum Zuge. Das folgende Know-how können Sie hier dennoch einsetzen – denn auch die Daten in einer MySQL-Datenbank auf dem Server wollen erst einmal verwaltet werden. Und das lässt sich mit einem Access-Frontend sicher besser bewerkstelligen als mit einer Web-Benutzungsoberfläche – und die Erstellung des Access-Frontends ist in den meisten Fällen wesentlich weniger aufwändig und damit auch kostengünstiger.

Das Datenmodell können Sie auch für eine MySQL-Datenbank verwenden; die Formulare und Berichte lassen sich ebenfalls mit einer MySQL-Datenbank kombinieren. Wie das sogar über das Internet funktioniert, erfahren Sie im Beitrag MySQL und Access in Ausgabe 6/2004.

Das Kernstück der Artikelverwaltung ist das Formular zur Ansicht der Artikeldetails. Hier finden sich sowohl die Stammdaten des Artikels wie Bezeichnung, Beschreibung, Hersteller, Lieferanten, Einheit, Mehrwertsteuersatz, Verkaufspreis, Kategorie und der Meldebestand. Auch eine Abbildung lässt sich zu jedem Artikel speichern. Die Anzeige dieser Informationen erfolgt auf der ersten Registerseite des Formulars aus Bild 1.

Zusätzlich können Sie zu jedem Artikel den Wareneingang und -ausgang, die Umbuchungen sowie Informationen zu den Inventuren anzeigen lassen. Diese Informationen zeigt das Formular auf der zweiten Registerseite an (siehe Bild 2).

Bild 1: Verwaltung der Stammdaten eines Artikels

Bild 2: Anzeige von Wareneingängen und -ausgängen

Bild 3: Bearbeiten von Wareneingängen

In dieser Version der Artikelverwaltung lassen sich Wareneingänge, -ausgänge und Umbuchungen mit entsprechenden Formularen eingeben.

Die Bearbeitung der Wareneingänge erfolgt nach dem Betätigen einer der Schaltflächen Bearbeiten oder Neuer Wareneingang in dem Formular aus Bild 3.

Warenausgänge sind in der Regel mit einer Bestellung verknüpft. Das ist auch in diesem Fall so: Warenausgänge, die nicht mit einer Bestellung zusammenhängen, müssen als Umbuchung gespeichert werden.

Bestellungen legen Sie durch Betätigen der Schaltfläche Zu den Bestellungen und anschließendes Eingeben der Bestellung im Formular aus Bild 4 an.

Die mit diesem Formular verbundene Eingabe von Liefer- und Rechnungsadressen wird in einem separaten Beitrag zum Thema “Bestellverwaltung” in einer der kommenden Ausgaben behandelt; die aktuelle Version dieses und der damit verknüpften Formulare wird unter Umständen noch die eine oder andere änderung über sich ergehen lassen müssen.

Die dritte Art der Bestandsänderung sind Umbuchungen. Auch hier ist das Artikelformular Ausgangspunkt zum Aufruf eines weiteren Formulars zum Bearbeiten der Bestandsänderungen (siehe Bild 5).

Das letzte Listenfeld auf der zweiten Registerseite des Artikelformulars enthält die Informationen über Inventuren. Die dort angezeigten Daten beziehen sich jeweils auf den aktuell im Formular angezeigten Artikel.

Bild 4: Eingabe einer Bestellung

Bild 5: Bearbeiten einer Umbuchung

Bild 6: Eintragen von Inventurdaten per Formular

Per Mausklick auf die Schaltfläche “Inventur starten” öffnen Sie das Formular aus Bild 6.

Das Formular zeigt das Datum der letzten Inventur und den Bestand zu diesem Zeitpunkt an. Für die aktuelle Inventur wird das Datum voreingestellt sowie der Bestand laut Datenbank angezeigt. Der Benutzer muss gegebenenfalls noch das Inventurdatum anpassen und den tatsächlichen Bestand dieses Artikels eintragen.

Das Feld Differenz zeigt den Unterschied zwischen tatsächlicher und berechneter Anzahl an. Nach Betätigen der Schaltfläche “Inventur speichern” trägt eine Routine die Differenz in Form eines neuen Umbuchungs-Datensatzes in die entsprechende Tabelle ein.

Der nachfolgend besprochene Teil des Datenmodells der Artikelverwaltung enthält elf Tabellen. Die beiliegende Version der Beispieldatenbank bietet noch einige Tabellen mehr, die aber mit der Bestellverwaltung zusammenhängen, die in einer der folgenden Ausgaben erläutert wird. Eine übersicht über das Datenmodell finden Sie in Bild 7.

Artikel

Die Tabelle tblArtikel enthält die Detailinformationen zu den einzelnen Artikeln. Die Tabelle beinhaltet drei Fremdschlüsselfelder für die Auswahl eines Herstellers aus der Tabelle tblHersteller, eine Einheit wie beispielsweise Kilogramm oder Flaschen aus der Tabelle tblEinheiten und eine Kategorie aus der Tabelle tblKategorien.

Außerdem speichert die Tabelle die Artikelnummer, die der jeweilige Hersteller für den Artikel vorhält, die Bezeichnung und eine kurze Beschreibung des Artikels, den Mehrwertsteuersatz und den Meldebestand.

Das ist der Lagerbestand, bei dessen Erreichen neue Ware geordert werden muss.

Und natürlich darf auch ein OLE-Feld zum Speichern einer Abbildung nicht fehlen; zusätzlich ist auch noch ein Feld für den Dateinamen der Abbildung vorgesehen.

Bild 7: Das Datenmodell der Artikelverwaltung

Kategorien

Die für jeden Artikel auszuwählende Kategorie stammt aus der Tabelle tblKategorien. Diese enthält lediglich die Felder KategorieID als Primärschlüsselfeld, die Bezeichnung der Kategorie und ein Fremdschlüsselfeld mit Bezug auf den Primärschlüssel derselben Tabelle. Dieser kann nützlich sein, wenn Sie mit mehreren Kategorieebenen arbeiten möchten. In der hier beschriebenen Fassung der Artikelverwaltung ist das allerdings nicht der Fall.

Lieferanten und Hersteller

Die Lieferanten und Hersteller teilen sich die Tabelle tblFirmen. Das ist einerseits sinnvoll, weil Hersteller und Lieferant eines Artikels ja durchaus identisch sein können. Davon abgesehen unterscheiden sich Lieferanten und Hersteller aber dadurch, dass es für jeden Artikel nur einen Hersteller, aber mehrere Lieferanten geben kann.

Deshalb wird der Hersteller des Artikels auch einfach über ein Fremdschlüsselfeld der Artikeltabelle ausgewählt, während die Festlegung des oder der Lieferanten über eine Verknüpfungstabelle erfolgt, die eine m:n-Beziehung zwischen den Tabellen tblArtikel und tblFirmen aufbaut.

Einheiten

Die Tabelle tblEinheiten dient als Lookuptabelle für das Fremdschlüsselfeld EinheitID der Artikeltabelle. Die Tabelle enthält neben dem Primärschlüsselfeld lediglich das Feld mit der Bezeichnung der Einheit.

Lagerbestand

Der Lagerbestand eines Artikels ist nur zu einem Zeitpunkt als Wert gespeichert – nämlich wenn soeben eine Inventur durchgeführt und noch keine änderung des Bestands des zu untersuchenden Artikels stattgefunden hat. In allen anderen Fällen ermittelt die Anwendung den Lagerbestand aus dem Bestand zum Zeitpunkt der letzten Inventur und allen seitdem erfolgten Bestandsänderungen.

Bestandsänderungen

Die Tabelle tblBestandsaenderungen speichert alle Bestandsänderungen, egal ob es sich um einen Wareneingang oder einen Warenausgang handelt. Die Tabelle enthält das Primärschlüsselfeld BestandsaenderungID, die ArtikelID des betroffenen Artikels, die gebuchte Menge und das Buchungsdatum der Bestandsänderung. Für die Durchführung von Inventuren ist es außerdem wichtig, bereits in einer früheren Inventur berücksichtigte Bestandsänderungen zu kennzeichnen, damit diese nicht erneut in die Berechnung des aktuellen Bestands einbezogen werden. Schließlich enthält das Feld Vorzeichen Informationen, ob es sich um einen Wareneingang oder -ausgang handelt. Das Feld beinhaltet entweder den Wert 1 oder -1 und wird bei der Inventur multiplikativ in die Berechnung des Bestandes miteinbezogen. In Bild 8 finden Sie den Aufbau der Tabelle und die Datentypen der einzelnen Felder.

Bild 8: Felder und Felddatentypen der Tabelle tblBestandsaenderungen

Detaildaten der Bestandsänderungen

Die Tabelle tblBestandsaenderungen ist über 1:1-Beziehungen mit den drei Tabellen tblWareneingang, tblWarenausgang und tblUmbuchungen verknüpft. Jede dieser Tabellen enthält Erweiterungsdaten zu Datensätzen der Tabelle tblBestandsaenderungen.

Hinweis

Im Beitrag 1:1-Beziehungen in der vorliegenden Ausgabe von Access im Unternehmen finden Sie weitere Informationen zum Aufbau dieser Beziehungen; der hier vorliegende Fall wird dort außerdem beispielhaft beschrieben.

Inventuren

Eine Inventur ist eine überprüfung des Lagerbestandes zu einem bestimmten Zeitpunkt. Dieser Lagerbestand ist der Ausgangspunkt für die Ermittlung des aktuellen Lagerbestandes zwischen zwei Inventuren.

Die Tabelle tblInventur speichert die Daten für jeden einzelnen bei der Inventur berücksichtigen Artikel. Dadurch können auch Teilinventuren durchgeführt werden. Die Tabelle enthält die Felder aus Bild 9.

Bild 9: Die Tabelle tblInventuren in der Entwurfsansicht

Da die Tabellen noch keine Daten enthalten, erstellen Sie die Formulare in der Reihenfolge, in der Sie anschließend direkt die jeweiligen Daten eingeben können.

Formular zum Bearbeiten von Firmen

Die Tabelle tblFirmen enthält Informationen zu den Unternehmen der Lieferanten oder Hersteller eines Produkts.

In den folgenden Schritten erstellen Sie das Formular aus Bild 10 zum Bearbeiten von Firmen:

  • Erstellen Sie ein neues Formular und zeigen Sie es in der Entwurfsansicht an.
  • Stellen Sie die Eigenschaft Datenherkunft auf die Tabelle tblFirmen ein.
  • Aktivieren Sie die Feldliste und ziehen Sie alle enthaltenen Felder in den Detailbereich des Formulars. Passen Sie deren Größe entsprechend den zu erwartenden Inhalten an.
  • Stellen Sie die Eigenschaft Beschriftung des Formulars auf Firma Detailansicht ein.
  • Fügen Sie eine Schaltfläche namens cmdOK zum Schließen des Formulars hinzu.
  • Damit die Schaltfläche das Formular auch schließt, erstellen Sie für die Ereigniseigenschaft Beim Klicken eine entsprechende Prozedur (s. Quellcode 1). (
  • Bild 10: Formular zum Bearbeiten von Firmendaten

    Private Sub cmdOK_Click()
        If IsNull(Me.OpenArgs) Then
            DoCmd.Close acForm, Me.Name
        Else
            DoCmd.RunCommand acCmdSaveRecord
            Me.Visible = False
        End If
    End Sub

    Quellcode 1

    Die Prozedur prüft, ob beim Aufruf des Formulars ein öffnungsparameter übergeben wurde. Falls ja, geht das Formular davon aus, dass die enthaltenen Daten beziehungsweise der angezeigte Datensatz noch von der aufrufenden Prozedur verarbeitet werden und diese nachher das Formular schließt.

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    den kompletten Artikel im PDF-Format mit Beispieldatenbank

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar