Belegverwaltung

Christoph Spielmann, Düsseldorf

Fast jede monetäre Transaktion zieht heutzutage ein entsprechendes Stück Papier nach sich, sei es beim Kauf einer Digitalkamera oder beim Mittagessen bei Ihrem Lieblingsitaliener. Die hier vorgestellte Musterlösung stellt Ihnen eine Möglichkeit zur Verfügung, diese Belege zu verwalten und schnell wieder aufzufinden – falls beispielsweise die Digitalkamera einmal einen Defekt aufweist und Sie die Garantie in Anspruch nehmen möchten.

Hinweis

Die Musterlösung zu diesem Beitrag heißt Belegverwaltung00.mdb und funktioniert mit Access 2000 und höher. Sie finden die Datenbank und die benötigte Schriftart Barcode.ttf auf der Heft-CD oder im Internet unter http://www.access-im-unternehmen.de (Shortlink 279).

Die hier vorgestellte Lösung verfolgt das Prinzip „Chaos mit Ordnung“. Jedes Dokument erhält eine eindeutige Nummer und wird danach auf einen Stapel gelegt. Die einzelnen Dokumente sind innerhalb des Stapels also in der Reihe des Eingangs abgelegt. Um nun schnell ein bestimmtes Dokument auffinden zu können, werden die einzelnen Dokumente mit einer Datenbank verwaltet, deren Aufbau Sie in diesem Artikel kennen lernen werden.

Die Datenstruktur der vorgestellten Lösung besteht aus den vier Tabellen tblBelege, tblKategorien, tblAdressen und tblSeiten. Die Tabelle tblBelege speichert die einzelnen Dokumente. Sie enthält die Felder aus Tab. 1.

Falls Sie Besitzer eines Scanners sind, können Sie das komplette Dokument als Anlage in dem Feld Anlage als OLE-Objekt hinterlegen.

Feldname

Beschreibung

BelegNr

AutoWert-Primärschlüssel

AdresseNr

Long Integer-Fremdschlüssel zur Tabelle tblAdressen

KategorieNr

Long Integer-Fremdschlüssel zur Tabelle tblAdressen

Anlagedatum

Datum, an dem der Datensatz angelegt wurde

Belegdatum

Datum des Belegs (zum Beispiel das Rechnungsdatum)

Kurzbezeichnung

Kurze Beschreibung zum Beleg (etwa „Digitalkamera“)

Beschreibung

Ausführliche Beschreibung, falls erforderlich

Seitenanzahl

Anzahl der Seiten

IstSteuerrelevant

Information darüber, ob der Beleg steuerlich geltend gemacht werden soll/muss

Anlage

Dokument als OLE-Objekt

Endbetrag

Endbetrag des Belegs

MwStSatz

Zugrunde liegender Mehrwertsteuersatz

Tab. 1: Felder der Tabelle tblBelege

Um auch den Empfänger und den Absender eines Belegs hinterlegen zu können und nicht jedes Mal die Adresse erfassen zu müssen, stellt die Tabelle tblAdressen die Informationen über Name, Straße, PLZ, Ort und Telefon zur Verfügung. Um auch den Empfänger und den Absender eines Belegs hinterlegen zu können und nicht jedes Mal die Adresse erfassen zu müssen, stellt die Tabelle tblAdressen die Informationen über Name, Straße, PLZ, Ort und Telefon zur Verfügung.

Ordnung in die einzelnen Dokumente bringt die Tabelle tblKategorien, die lediglich die zwei Felder KategorieNr und Kategorie enthält. Durch die Verknüpfung zur Tabelle tblBelege kann jedes Dokument auf einen virtuellen Stapel wie beispielsweise „Handy-Abrechnung“, „Bewirtung“ oder „Kreditkartenabrechnung“ gelegt werden. Die Verknüpfung der Tabellen entnehmen Sie Abb. 1.

Abb. 1: Das ER-Diagramm

Um die spätere Erstellung von Formularen zu vereinfachen, sind die beiden Felder AdresseNr und KategorieNr der Tabelle tblBelege als Nachschlagefelder definiert. Hierzu gehen Sie wie folgt vor:

  • öffnen Sie die Tabelle tblBelege in der Entwurfsansicht und positionieren Sie die Einfügemarke auf das Feld AdresseNr.
  • Wechseln Sie unterhalb der Tabelle zum Register Nachschlagen.
  • Wählen Sie unter Steuerelement anzeigen die Einstellung Kombinationsfeld aus.
  • Geben Sie unter Datensatzherkunft die folgende Abfrage an: SELECT Name, AdresseNr FROM tblAdressen ORDER BY Name;
  • ändern Sie die Eigenschaften Gebundene Spalte und Spaltenanzahl auf den Wert 2.
  • Geben Sie als Spaltenbreite den Wert 5cm;0cm ein. (
  • Auf die gleiche Weise definieren Sie für das Feld KategorieNr ein Nachschlagefeld. Verwenden Sie in diesem Fall jedoch die folgende Abfrage:

    SELECT Kategorie, KategorieNr FROM tblKategorien ORDER BY Kategorie;

    Speichern Sie anschließend die fertige Tabelle.

    Ein wesentlicher Bestandteil der hier vorgestellten Lösung ist, dass alle Dokumente mit einer eindeutigen Nummer versehen werden. Um die Nummer nicht von Hand auf das Dokument schreiben zu müssen, soll diese Aufgabe von Ihrem Drucker erledigt werden. Hierzu werden die Belege einfach in den Papiereinzug gelegt und der Drucker versieht diese mit der Nummer.

    Damit die Nummer immer sichtbar ist, wird sie in jeder Ecke und zudem noch invertiert ausgegeben. Zusätzlich zu der Nummer soll ein Barcode mit ausgegeben werden. Falls Sie also einen Barcode-Scanner haben sollten, können Sie einzelne Dokumente sehr schnell durch einfaches Scannen des Barcodes zuordnen.

    Den Ausdruck der Nummer und des Barcodes erledigt ein Berichts namens rptIndex. Der Bericht enthält im Seitenkopf und im Seitenfuß jeweils links und rechts zwei Text-Steuerelemente zur Ausgabe der Nummer und des Barcodes (s. Abb. 2).

    Falls Sie einen mehrseitigen Beleg haben, sollte die Nummer auf jeder Seite ausgegeben werden und idealerweise noch mit einer fortlaufenden Seitennummer versehen werden. Um diese zu realisieren, ist der Bericht an die Tabelle tblSeiten geknüpft. Diese Tabelle enthält nur eine einzelne Spalte namens SeiteNr. Damit für jeden Datensatz in der Tabelle tblSeiten eine Berichtsseite gedruckt wird, ist die Eigenschaft Neue Seite des Detailbereichs auf Vor Bereich eingestellt. Um nun eine bestimmte Anzahl Seiten zu drucken, muss die Tabelle tblSeiten zunächst mit der erforderlichen Anzahl Datensätze gefüllt werden. Dies erledigt die VBA-Prozedur SeitenErstellen (s. Quellcode 1).

    Abb. 2: Der Bericht rptIndex in der Entwurfsansicht.

    Die Prozedur erwartet als Parameter die Anzahl der gewünschten Seiten. Sie prüft zunächst, ob die Tabelle bereits mindestens die angegebene Anzahl an Datensätzen enthält. Sollte dies nicht der Fall sein, fügt sie die fehlenden Seiten hinzu. Der Bericht wird später mit einem Filterkriterium wie beispielsweise

    SeiteNr <= 10
    Sub SeitenErstellen(Anzahl As Integer)
        Dim i As Integer
        Dim MyRecordset As New ADODB.Recordset
        Dim AnzahlExistierendeSeiten As Long
        AnzahlExistierendeSeiten = DCount("SeiteNr", _        "tblSeiten")
        If AnzahlExistierendeSeiten < Anzahl Then
            With MyRecordset
                .ActiveConnection = _                CurrentProject.Connection
                .LockType = adLockOptimistic
                .CursorLocation = adUseClient
                .Source = "tblSeiten"
                .Open
                For i = 1 To _                Anzahl - AnzahlExistierendeSeiten
                    .AddNew
                    !SeiteNr = AnzahlExistierendeSeiten + i
                    .Update
                Next i
            End With
        End If
    End Sub

    Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
    Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
    Zur Bestellung ...
    Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
    Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

    Schreibe einen Kommentar