Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2003.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Getränkeverwaltung mit Access

Klaus Giesen Wuppertal

Jeder Mensch muss regelmäßig Flüssigkeit zu sich nehmen. Ist das nicht gewährleistet, nehmen sein Wohlbefinden und damit auch seine Arbeitsleistung deutlich ab. Je nach Größe eines Unternehmens stehen den Mitarbeitern unterschiedliche Getränkequellen zur Verfügung. In vielen Fällen handelt es sich dabei um eine selbst organisierte Getränkeausgabe, bei der Getränke von Mitarbeitern eingekauft und an Kollegen verkauft werden. Die Frage, wer nun wie viele Getränke welcher Sorte getrunken und damit auch zu bezahlen hat, ist rein organisatorischer Natur - und sicher ein Fall für eine Access-Musterlösung, wie der vorliegende Beitrag zeigen wird.

Anforderungen an eine
Getränkeverwaltung

Die im Rahmen des vorliegenden Beitrags vorgestellte Musterlösung dient der Verwaltung von beliebig vielen Getränkesorten.

Die Hauptproblematik liegt darin, den Bestand auf knapp werdende Getränke zu überwachen, um rechtzeitig aufzufüllen.

Die meisten Getränke können eins zu eins weitergegeben werden - z. B. in Flaschen- oder Dosenform. Hier ist die Überwachung kein Problem.

Andere Getränke wie z. B. Kaffee oder Tee müssen erst zubereitet und in Portionen ausgegeben werden. Zusätzlich variiert die Anzahl der Portionen je Packungseinheit, was die Kalkulation erschwert - z. B. durch eine sich ändernde Menge Kaffeepulver je Tasse.

Erfassung ausgegebener Getränke

Alle ausgegebenen Getränke werden unter Angabe von Empfänger, Anzahl und Preis in der Datenbank gespeichert. Das geschieht in einem übersichtlichen Formular inklusive Berechnung des aktuell offenen Betrages.

Rechnungsstellung

Die Rechnungsstellung kann zu jeder Zeit für beliebige Mitarbeiter erfolgen.

In Rechnung gestellte Getränke werden entsprechend markiert und nicht mehr angezeigt.

Da eine solche Getränkeausgabe in der Regel in überschaubarem Rahmen unter Kollegen erfolgt, wird von der sofortigen Bezahlung offener Rechnungen ausgegangen.

Dementsprechend beinhaltet die Anwendung keine Funktionalität zur Verbuchung von Zahlungseingängen usw.

Ergänzung der Getränkevorräte

Um der Problematik des variierenden Kaffeeverbrauchs gerecht zu werden, benötigt die Anwendung bei den entsprechenden Getränkesorten die Angabe eines Umrechnungsfaktors.

Dieser Faktor gibt an, wie viele Einheiten man je Bestandseinheit des Ausgangsprodukts erhält.

Kaffee

Da Kaffee in unterschiedlichen Packungsgrößen erhältlich ist, setzt die Anwendung eine denkbar kleine Bestandseinheit an: ein Gramm. Als Umrechnungsfaktor verwendet die Anwendung z. B. den Wert 0,1, was bedeutet: aus einem Gramm Kaffeepulver wird 1/10 Tasse Kaffee - also werden 10g je Tasse benötigt.

Abb. 1: Die Tabelle tblPersonal in der Entwurfsansicht

Andere Getränke

Getränke wie Cola, Fanta, Mineralwasser usw. haben fest definierte Bestandseinheiten, die genau einer ausgegebenen Einheit entsprechen: eine Flasche, eine Dose usw.

Bestandsüberwachung

Damit ist die Problematik der Bestandsüberwachung geklärt. Mit festen Umrechnungsfaktoren zwischen gekauften Einheiten und ausgegebenen Portionen kann aufgrund der als verkauft gebuchten Getränke relativ zuverlässig auf notwendige Bestandsergänzungen aufmerksam gemacht werden. Dazu ist lediglich noch die Angabe von Grenzwerten für die einzelnen Getränke nötig.

Damit ist die regelmäßige Versorgung der Mitarbeiter mit Getränken gesichert. Wie wichtig das ist, erfahren Sie spätestens, wenn Sie einen Programmierer einen Tag auf Kaffeeentzug setzen ...

Voreinstellungen

Als Grundlage für Berechnungen benötigt die Datenbank bestimmte Voreinstellungen, die zudem flexibel sein sollen. Dabei geht es um folgende Angaben:

  • Anzahl der Tassen pro Gramm Kaffee
  • Eingabe der Grenzwerte für die Hinweismeldung, dass eine Bestandsergänzung notwendig ist.
  • Hinweis

    Sie finden die Beispieldatenbanken zu dieser Musterlösung auf der Heft-CD für Access 97 (Getränke97.mdb) und Access 2000 (Getränke2000.mdb). (

    Das Datenmodell

    Das Datenmodell der Musterlösung besteht aus den vier Tabellen tblPersonal, tblGetraenkeVerbrauch, tblGetraenkeTyp und tblBestandsErgaenzung. In den folgenden Abschnitten lernen Sie die Tabellen kennen und erhalten Erläuterungen und Hinweise zu wichtigen Besonderheiten.

    Die Tabelle tblPersonal

    Die Tabelle tblPersonal enthält die Stammdaten der Mitarbeiter mit Kontaktinformationen (s. Abb. 1).

    Die Tabelle
    tblGetraenkeVerbrauch

    Die Tabelle tblGetraenkeVerbrauch (s. Abb. 2) dient zur Erfassung der ausgegebenen Getränke und einiger Zusatzinformationen wie Empfänger, Anzahl und Datum.

    Die Felder TypID und PersonalID dienen als Verknüpfungsfelder zu den Tabellen tblGetraenketyp und tblPersonal.

    Zur Vereinfachung der späteren Eingabe der entsprechenden Informationen werden beide Felder als Kombinationsfelder ausgeführt.

    Nehmen Sie die folgenden Einstellungen im Register Nachschlagen in den Feldeigenschaften des jeweiligen Feldes vor: Als Datensatzherkunft für das Feld TypID dient die Tabelle tblGetraenketyp. Stellen Sie außerdem die Eigenschaften Spaltenanzahl und Spaltenbreite auf die Werte 2 und 0cm;4cm ein, damit nur die zweite Spalte angezeigt wird.

    Abb. 2: Die Tabelle tblGetraenkeVerbrauch in der Entwurfsansicht

    Abb. 3: Die Tabelle tblGetraenkeTyp in der Entwurfsansicht

    Als Datenherkunft für das Feld PersonalID dient die Abfrage qryFullname:

    SELECT tblPersonal.PersonalID, [Nachname] & ", " & [Vorname] AS Fullname FROM tblPersonal;

    Die Eigenschaften Spaltenanzahl und Spaltenbreite erhalten die Werte 2 und 0cm;8cm.

    Durch diese Änderungen stehen die beiden Felder bei der Verwendung in Formularen ohne weitere Maßnahmen direkt als Kombinationsfelder zur Verfügung.

    Neben diesen beiden Verknüpfungsfeldern sind noch Felder für das Datum der Ausgabe und die Menge der ausgegebenen Einheiten vorhanden.

    Das Feld Einheiten ermöglicht sowohl die Verbuchung von Getränken als auch die Berechnung der vom Käufer zu zahlenden Summe. Es besitzt den Standardwert 1, da immer mindestens ein Getränk ausgegeben wird.

    Das Feld Datum ist zur bequemen Eingabe mit der Funktion Datum() als Standardwert versehen. Diese Funktion trägt für jeden Datensatz das aktuelle Datum in das Feld Datum ein.

    Wichtig für die Funktionalität der Musterlösung ist noch das boolesche Feld Bezahlt, für das der Standardwert Nein eingestellt ist.

    Mit Hilfe des Feldes Bezahlt kann sichergestellt werden, dass verbrauchte Getränke nur einmal bezahlt werden.

    Beim Ausdruck der Rechnung wird dieses Feld für abgerechnete Getränke auf den Wert True bzw. Ja gesetzt.

    Die beiden Felder Einzelpreis und Umrechnungsfaktor haben eine besondere Bedeutung:

    Feldname

    Beschreibung

    TypPreis

    Der Verkaufspreis pro ausgegebener Einheit in Euro.

    TypMindestbestand

    Zahlenwert, der die Mindestvorratsmenge für einen Getränketyp festlegt.

    TypUmrechnungsfaktor

    Ermöglicht die Ermittlung von Einheiten (Portionen) bei Halbfertigartikeln wie beispielsweise Kaffee. Limonade dagegen ist ein Fertigartikel und deshalb ist hier der Umrechnungsfaktor gleich 1.

    Tab. 1: Felder der Tabelle tblGetraenkeTyp mit Erläuterungen

    Da sich während der Verwendung einer solchen Musterlösung durchaus Veränderungen bezüglich des Preises oder der Menge von ausgegebenen Portionen je Bestandseinheit ergeben können, müssen diese mit den ausgegebenen Getränken gespeichert werden. Anderenfalls können z. B. folgende Probleme auftreten:

  • Ein neuer Preis für ein Getränk wirkt sich auf bereits ausgegebene Getränke aus.
  • Durch eine Änderung des Umrechnungsfaktors (z. B. durch die Anschaffung neuer Kaffeetassen mit anderer Füllmenge) ändert sich die verbrauchte Menge der Bestandseinheiten rückwirkend für alle ausgegebenen Getränke.
  • Die Tabelle tblGetraenkeTyp

    Abb. 4: Die Tabelle tblBestandsErgänzung in der Entwurfsansicht

    Abb. 5: Das Dialogfenster Beziehungen

    Die Tabelle tblGetraenkeTyp (s. Abb. 3) enthält die Stammdaten zu den einzelnen Getränketypen wie Kaffee, Limonade, Wasser usw.

    In Tab. 1 finden Sie eine nähere Beschreibung zu den wichtigsten Feldern der Tabelle tblGetraenkeTyp.

    Die Tabelle
    tblBestandsergaenzung

    Die Tabelle tblBestandsergaenzung speichert die zugekauften Getränke (s. Abb. 4). Sie ist also quasi die Warenannahme und stellt somit das Gegenstück zur Tabelle tblGetraenkeverbrauch dar.

    Die Beziehungen zwischen den
    Tabellen

    Nach der Erstellung der Tabellen legen Sie deren Beziehungen zueinander im Dialogfenster Beziehungen fest. Die Musterlösung enthält zwei 1:n-Beziehungen, bei denen sich die Tabelle tblGetraenkeVerbrauch jeweils auf der n-Seite der Beziehung befindet (s. Abb. 5).

    Legen Sie für beide Beziehungen referentielle Integrität fest. Aktivieren Sie auf keinen Fall die Löschweitergabe für eine der beiden Beziehungen. Anderenfalls führt das Löschen z. B. eines Datensatzes der Tabelle tblPersonal zum Entfernen der entsprechenden Datensätze der Tabelle tblGetraenkeVerbrauch - was zu einer Verfälschung der Bestandsermittlung führen würde.

    Die Formulare der
    Beispieldatenbank

    Die Getränkeverwaltung enthält insgesamt sechs Formulare, die Sie in den folgenden Abschnitten näher kennen lernen werden.

    Abb. 6: Das Formular frmHauptmenue

    Das Hauptmenü

    Das Formular frmHauptmenue ist die Schaltzentrale der Anwendung. Sie hat fünf Schaltflächen, von denen vier dem Aufrufen der weiteren Formulare dienen und eines dem Beenden der Anwendung (s. Abb. 6).

    Wichtige Formulareigenschaften

    Damit das Hauptformular nur über die entsprechende Schaltfläche zu schließen ist, stellen Sie einige Eigenschaften gemäß Tab. 2 ein.

    Hinweis

    Die Einstellung der Eigenschaften Bildlaufleisten, Datensatzmarkierer, Navigationsschaltflächen und Trennlinien werden - wie bei allen Formularen mit statischem Inhalt - natürlich auf Nein gesetzt. (

    Eigenschaft

    Einstellung

    Rahmenart

    Dialog

    Mit Systemfeldmenü

    Nein

    MinMax Schaltflächen

    Nein

    Schließen Schaltfläche

    Nein

    Tab. 2: Eigenschaftseinstellungen für das Formular frmHauptmenue

    Praxis-Tipp

    Trotz fehlender Schließen-Schaltfläche können Sie das Formular frmHauptmenue jederzeit mit der Tastenkombination Strg + F4 schließen. (

    Das Formular frmPersonal

    Abb. 7: Das Formular frmPersonal

    Das Formular frmPersonal (s. Abb. 7) enthält die Informationen zu den Mitarbeitern und ein Unterformular zur Anzeige der an den jeweiligen Mitarbeiter ausgegebenen und noch nicht abgerechneten Getränke. Es enthält außerdem ein Feld zur Anzeige des Gesamtpreises der im Unterformular angezeigten ausgegebenen Getränke.

    Der folgende Ausdruck verweist auf das entsprechende Feld des Unterformulars:

    =frmGetraenkeverbrauch_Sub.Formular!Gesamtsumme

    Private Sub Form_Current()

        Forms!frmPersonal!btnDruck.Enabled = _
            IIf(Me.RecordsetClone.RecordCount > 0, _
            True, False)

    End Sub

    Quellcode 3

    Im Formularfuß befinden sich zwei Schaltflächen. Die Schaltfläche btnClose schließt das Formular frmPersonal und macht das Formular frmHauptmenue wieder sichtbar. Die dafür verantwortliche Ereignisprozedur finden Sie in Quellcode 1.

    Das Schließen des Formulars löst die Prozedur aus Quellcode 2 aus, die wiederum das Formular frmHauptmenue wieder sichtbar macht.

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.