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 6/2006.

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

Zusammenfassung

Verwalten Sie Ihre Verträge mit der in diesem Beitrag vorgestellten Vertragsverwaltung.

Techniken

Tabellenentwurf, Abfragen, Formulare, Berichte, VBA

Voraussetzungen

Access ab Version 2000, gegebenenfalls Scanner

Beispieldatei

Vertragsverwaltung.mdb

Shortlink

422

Vertragsverwaltung

André Minhorst, Duisburg

Verträge verwalten - das ist was für größere Unternehmen, aber doch nicht für mich! Oder doch? Überlegen Sie einmal, wieviele Verträge Sie derzeit haben: Da kommt selbst ohne geschäftliche Verträge einiges zusammen: Mietverträge, Leasingverträge, Versicherungsverträge, Mitgliedschaften in Sportvereinen und viele mehr. Dazu vielleicht noch ein paar Wartungsverträge, Verträge mit Internet-Providern, ... – da wäre es doch gar nicht schlecht, sich mal einen vernünftigen Überblick zu verschaffen.

Funktionen der Lösung

Wenn Sie einmal durch Ihre Aktenordner stöbern, werden Sie eine Reihe von Verträgen finden, die eine Vertragsverwaltung rechtfertigen. Allein, um einen Überblick über Laufzeiten, Kündigungsfristen, Verlängerungszeiträume oder auch die Vertragsinhalte zu haben. Das wäre doch toll, wenn man schnell mal die eingescannte Version eines Vertrags hervorzaubern könnte oder dieses Jahr nicht die Frist zur Kündigung der Mitgliedschaft in einem Verein verstreichen lässt.

Datenmodell

Das Verwalten von Verträgen ist – zumindest, was das Datenmodell angeht – eine echte Herausforderung. Der Grund ist, dass Verträge sehr unterschiedliche Eigenschaften aufweisen können, was etwa Informationen wie Laufzeit und Kündigungsfristen angeht. Versuchen wir doch, ein passendes Datenmodell herzuleiten.

Verträge

Ein Vertrag ist jeweils eine Einheit, also benötigen Sie in jedem Fall eine Tabelle namens tblVertraege. Eindeutige Informationen sind eine Bezeichnung des Vertrags sowie eine Beschreibung des Inhalts. In einem weiteren Feld verweisen Sie auf einen Eintrag einer Tabelle namens tblVertragspartner. Dies macht Sinn, weil es durchaus mehrere Verträge mit dem gleichen Vertragspartner geben kann.

Wenn man den Originaltext oder einen Scan des Vertrags speichern oder den Verweis auf eine Datei angeben möchte, benötigt man unter Umständen schon eine eigene Tabelle, da ein Vertrag durchaus mehrere Dokumente enthalten kann. Eindeutig sind hingegen die Informationen zur Vertragslaufzeit – zumindest, wenn man davon ausgeht, dass alle gespeicherten Verträge diesbezüglich grundlegenden Regeln gehorchen:

  • Vertragsbeginn: Beginn der Gültigkeit des Vertrags
  • Laufzeit: Einfache Laufzeit des Vertrags
  • Kündigungsfrist: Zeitraum vor Ablauf des Vertrags, bis zu dem man diesen kündigen kann
  • Laufzeitverlängerung: Laufzeit, um die sich der Vertrag verlängert, wenn er nicht gekündigt wird.
  • Vertragsende: Gibt das Ende des Vertrags an und kennzeichnet gleichzeitig abgelaufene oder beendete Verträge.

Wie man die passenden Felder füllt, ist hingegen nicht so einfach: Deshalb und weil auch die Berechnung des nächstmöglichen Kündigungstermins nicht allzu trivial ist, finden Sie alle Informationen dazu in [1]. Dort klären wir Fragen wie „welche Einheit verwendet man etwa zur Berechnung der Laufzeit und wie gibt man die Kündigungsfrist an?“. Im Prinzip wäre es ein Leichtes, einfach ein Textfeld zu verwenden und dieses mit einem Ausdruck für die Laufzeit wie „3 Jahre“ oder „6 Monate“ zu füllen.

Genauso können Sie das Feld mit der Kündigungsfrist mit Texten wie „drei Monate zum Jahresende“ oder „30 Tage vor Ablauf“ bestücken. Das liest sich zwar alles ganz toll, aber wenn Sie wirklich von der Anwendung profitieren möchten, ist das nicht die Erste-Wahl-Lösung. Wenn es gelingt, die Informationen numerisch auszudrücken, könnte man etwa zu einem bestimmten Zeitpunkt alle Verträge ermitteln, deren Kündigungsfrist innerhalb des nächsten Monats verstreicht, und die entsprechenden Maßnahmen treffen.

Als Einheit für die Laufzeit scheint „Monat“ angemessen; Bruchteile davon kommen in Laufzeiten wohl eher selten vor. Bei den Kündigungsfristen wird es komplizierter: Neben zeitlich befristeten Verträgen, die eine bestimmte Zeit vor Ablauf der Kündigungsfrist gekündigt werden können, gibt es auch Verträge wie etwa Mitgliedschaften, die man irgendwann beginnt und beispielsweise bis drei Monate vor Ablauf eines Kalenderjahres oder bis einen Monat vor Ablauf des Quartals kündigen kann.

Die Tabelle tblVertraege sieht nun wie in Abb. 1 aus. Die beiden weiteren bisher vorgestellten Tabellen tblKuendigungszeitpunkte und tblVertragspartner sowie die übrigen Tabellen finden Sie im Datenmodell in Abb. 2.

pic001.tif

Abb. 1: Die Tabelle tblVertraege in der Entwurfsansicht

pic002.tif

Abb. 2: Datenmodell der Vertragsverwaltung

Dort gibt es auch noch die Tabelle tblDokumente. Die Tabelle dient dem Speichern der Verträge selbst - unabhängig vom Format. Die Tabelle hat ein Fremdschlüsselfeld namens VertragID für die Zuordnung des Datensatzes zu einem Vertrag sowie ein OLE-Feld zum Speichern einer Datei in beliebigem Format - Bilddatei mit einem Scan, PDF, Word und andere sind möglich.

Desweiteren soll ein Index über die in den Verträgen enthaltenen Wörter erstellt werden – dazu benötigen Sie zwei weitere Tabellen: Die erste enthält die Wörter, wobei es wichtig ist, dass Sie das Feld Wort mit einem eindeutigen Index versehen. Die zweite Tabelle verknüpft die Wörter mit den Dokumenten und realisiert damit eine m:n-Beziehung zwischen den passenden Tabellen.

Die Verknüpfungstabelle enthält neben den beiden Fremdschlüsselfeldern DokumentID und WortID noch ein Feld zum Speichern der Seite des Dokuments, in dem ein Wort gefunden wurde. Damit ein Wort nur einmal pro Dokument und Seite indiziert wird, legen Sie einen zusammengesetzten Primärschlüssel über alle drei Felder fest.

Laufzeiten und Kündigungsfristen in Abfragen

Mit den in den Feldern der Tabelle tblVertraege gespeicherten Daten haben Sie die Grundlage geschaffen, Verträge mit ablaufenden Kündigungsfristen zu ermitteln.

Dazu verwenden Sie eine Abfrage auf Basis der Tabelle tblVertraege, die die Funktion KuendigungszeitpunktErmitteln verwendet. Das Aussehen der Abfrage (aus Platzgründen können hier nicht alle Felder abgebildet werden) finden Sie in Abb. 3. Das rechte Feld hat den folgenden Inhalt:

pic003.tif

Abb. 3: Die Abfrage enthält alle Felder der Tabelle tblVertraege und zusätzlich ein Feld zur Berechnung des nächstmöglichen Kündigungstermins für einen Vertrag.

Kuendigungszeitpunkt: KuendigungszeitpunktErmitteln([Vertragsbeginn];[Laufzeit];[KuendigungszeitpunktID];[Kuendigungsfrist];[Laufzeitverlaengerung];[GekuendigtAm];[Vertragsende])

Die Funktion KuendigungszeitpunktErmitteln (s. Listing 1) ist eine Wrapper-Funktion, die zunächst prüft, ob überhaupt ein Kündigungstermin berechnet werden muss (das ist nicht der Fall, falls schon ein Kündigungstermin vorliegt oder der Vertrag bereits beendet ist).

Listing 1: Wrapper-Funktion zum Aufruf der Funktion zum Berechnen des nächsten Kündigungszeitpunkts

Public Function KuendigungszeitpunktErmitteln(dateVertragsstart As Date, intLaufzeit As Integer, _
lngKuendigungszeitpunkt As eKuendigungszeitpunkt, intKuendigungsfrist As Integer, _
intLaufzeitverlaengerung As Integer, varGekuendigtAm As Variant, varVertragsende As Variant)

     If IsNull(varGekuendigtAm) And IsNull(varVertragsende) Then

         KuendigungszeitpunktErmitteln = NaechstenKuendigungszeitpunktErmitteln(Date, dateVertragsstart, _
intLaufzeit, lngKuendigungszeitpunkt, intKuendigungsfrist, intLaufzeitverlaengerung)

     End If

End Function

Formular zur Anzeige von Vertragsdaten

Das Hauptformular und gleichzeitig die Steuerzentrale der Anwendung ist das Formular frmVertraege. Es enthält sowohl alle für die Anzeige von Vertragsdaten notwendigen Steuerelemente als auch Schaltflächen zum Aufrufen der Funktionen und weiteren Formulare (s. Abb. 4). Der Kopfbereich zeigt jeweils die Vertragsbezeichnung und die Vertragsnummer an, darunter findet man die gleichen Daten erneut und zusätzlich weitere Vertragsdaten.

pic004.tif

Abb. 4: Das Hauptformular der Anwendung ist gleichzeitig die Schaltzentrale.

Die Daten des Vertragspartners des aktuell angezeigten Vertrags zeigt das Formular nicht an, sondern lediglich die Bezeichnung des Vertragspartners. Mit einem Klick auf die Schaltfläche mit den drei Punkten (...) kann man allerdings einen weiteren Dialog öffnen. Dieser zeigt die detaillierten Daten des Vertragspartners an und ermöglicht ihre Bearbeitung. Darüber hinaus können Sie damit auch neue Vertragspartner anlegen. Wichtig ist, dass beim Klick auf die Schaltfläche OK der aktuell im Detailformular ausgewählte Datensatz als Vertragspartner im Formular frmVertraege festgelegt wird. Abb. 5 zeigt das Formular frmVertragspartner in der Formularansicht.

pic005.tif

Abb. 5: Mit diesem Formular verwalten Sie die Daten des jeweiligen Vertragspartners.

Laufzeitdaten

Im Bereich Laufzeitdaten finden Sie unter anderem die Informationen wieder, die unter [1] ausführlich erläutert werden.

Vertragsdokumente verwalten

Fehlt noch der unterste, nicht minder wichtige Bereich: Das auffälligste Element ist das Unterformular, das Informationen zu den Vertragsdokumenten in digitalem Format enthält; in diesem Fall die Bezeichnung des Dokuments sowie den Pfad zur passenden Datei. Rechts daneben finden sich acht Schaltflächen mit folgenden Funktionen:

  • Neu aus Dateisystem: Öffnet einen Dateiauswahl-Dialog zur Auswahl einer Datei, deren Dateiname inklusive Pfad anschließend als Dokument-Datensatz gespeichert wird.
  • Parameter einstellen: Öffnet einen Dialog, mit dem sich Scanner-Einstellungen bearbeiten lassen.
  • Scanner auswählen: Öffnet einen Dialog mit einer Liste aller WIA-fähigen Scanner (diese Version der Vertragsverwaltung arbeitet mit der WIA-Schnittstelle, die ältere Scanner gegebenenfalls nicht unterstützen).
  • Neu von Scanner: Liest ein Dokument vom Scanner ein und speichert es in einer TIFF-Datei, deren Dateinamen der Benutzer vorher festlegen muss.
  • Weitere Seite scannen: Fügt einem bestehenden eingescannten Dokument im TIFF-Format eine weitere Seite hinzu.
  • Dokument anzeigen: Zeigt das Dokument in der passenden Anwendung an.
  • Indizieren: Indiziert den Text von TIFF-Dokumenten.
  • Text anzeigen: Zeigt den Text eines Dokuments an – vorausgesetzt, dieses wurde bereits indiziert.

Vertragsdokumente aus dem Dateisystem hinzufügen

Die Schaltfläche Neu aus Dateisystem öffnet einen Dialog zum Hinzufügen eines Dateipfads zu einem neuen Dokumentdatensatz im Unterformular sfmDokumente des Hauptformulars. Die passende Ereignisprozedur verwendet die Funktion OpenFileName, um den Dialog anzuzeigen. Eine Beschreibung dieser Funktion finden Sie in [2]. Das Anlegen des neuen Datensatzes erfolgt durch Setzen des Fokus auf das Unterformular und DoCmd.GotoRecord mit dem Parameter Record:=acRecNew.

Vertragsdokumente anzeigen

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.