 | 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'! |
| | | | |
Belege mit Barcodes verwalten
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.
HinweisDie 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.ac cess-im-unternehmen.de (Shortlink 279). (
Funktionsweise der Lösung
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
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.
Dokumente nummerieren
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
|