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 Bild 1.
Bild 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:
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 (siehe Bild 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).
Bild 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