Zusammenfassung
Sie erstellen ein zur Artikelverwaltung passendes CRM-Tool, das Sie auch separat verwenden können. Das Tool dient zum Pflegen von Kundenkontakten inklusive Verweisen auf E-Mails und sonstige Dokumente.
Techniken
Datenmodellierung, Formulare, Unterformulare, VBA
Voraussetzungen
Access 2000 oder höher
Verwandte Beiträge: 273, 281, 294
André Minhorst, Duisburg
Wer seinen Kunden etwas verkaufen möchte, sollte diese gut pflegen. Und damit das gelingt, hält man nicht nur deren Kontaktdaten auf dem aktuellen Stand – auch die persönlichen Kontakte zum Kunden sind wichtig. Die vorliegende Erweiterung der Artikelverwaltung sorgt für beides – damit verwalten Sie je Kunde beliebig viele Liefer- und Rechnungsanschriften und haben die Korrespondenz im Griff.
Die hier beschriebene Lösung erweitert die Artikelverwaltung aus Ausgabe 2/2005 und 3/2005 um die Möglichkeit, Kunden und Kontakte zu verwalten.
Das Hauptelement ist das Formular frmKunden, das zur Verwaltung der Kundendaten einschließlich Rechnungs- und Lieferanschriften sowie Kundenkontakten dient. Es enthält folgende Funktionen:
Abb. 1 und Abb. 2 zeigen das Hauptformular mit den beiden Registerseiten zum Eingeben von Liefer- und Rechnungsadressen sowie Kontaktdaten.
Die meisten Tabellen des Datenmodells sind bereits in der Artikelverwaltung enthalten, auf der die Kunden- und Kontaktverwaltung aufsetzt. Das Datenmodell ist relativ flexibel ausgelegt, um je Kunde mehrere Liefer- und Rechnungsadressen zu speichern.
Bild 1: Hauptformular der Kundenverwaltung mit Liefer- und Rechnungsadressen…
Haupttabelle des Datenmodells ist die Tabelle tblKunden, welche Kundennummer, Name und die wichtigsten Kontaktdaten des Kunden enthält.
Die Liefer- und Rechnungsadressen befinden sich zum größten Teil in der Tabelle tblAdressen.
Liefer- und Rechnungsadressen enthalten unterschiedliche Informationen. Deshalb wurden diese Informationen in je eine weitere Tabelle ausgelagert, um die Tabelle tblAdressen nicht mit leeren Feldern zu überladen.
Bild 2: … und Verwaltung der Kontakte zu den jeweiligen Kunden.
Bild 3: Datenmodell des CRM-Tools
Die beiden Tabellen mit den speziellen Liefer- beziehungsweise Rechnungsinformationen enthalten beide ein Feld namens Standard. Mit diesem Feld lässt sich festlegen, welche Liefer- beziehungsweise Rechnungsadresse standardmäßig für den Kunden verwendet werden soll.
Neu im Datenmodell sind die beiden Tabellen tblKontakte und tblKontaktarten. Die Tabelle tblKontakte enthält Informationen über Telefonate und Meetings mit dem Kunden sowie Informationen über E-Mails, Briefe und Faxe an den Kunden.
Die Tabelle tblKontaktarten enthält die genannten Kommunikationsmöglichkeiten, die aus der verknüpften Tabelle tblKontakte per Fremdschlüsselfeld ausgewählt werden können.
Bild 4: Das komplette Kundenformular in der Detailansicht
Bild 5: Einfügen der Felder der Tabelle tblKunden
Das Kundenformular soll alle in den Tabellen des Datenmodells bereitgestellten Daten verwalten. Das scheint auf den ersten Blick ein wenig viel, aber mit einem zweiseitigen Register und drei Unterformularen wird das Formular schnell Herr der Daten (siehe Bild 4).
Das Hauptformular ist sehr einfach aufgebaut:
Seine Datenherkunft ist die Tabelle tblKunden und die darin enthaltenen Felder bilden auch schon den größten Teil der Steuerelemente des Formulars.
Die Felder ziehen Sie nach dem Festlegen der Datenherkunft einfach aus der Feldliste in das Formular und positionieren diese am oberen Rand (siehe Bild 5).
Anschließend fügen Sie ein Registersteuerelement ein und beschriften die beiden Reiter mit Adressdaten und Kundenkontakte.
Schnelle Kundenauswahl
Damit der Benutzer schnell zu einem anderen Kunden wechseln kann, ohne erst umständlich ein Suchformular oder ähnliches öffnen zu müssen, stellen Sie ihm ein Kombinationsfeld zur schnellen Auswahl eines Kunden zur Verfügung (siehe Bild 6).
Das Kombinationsfeld hat als Datensatzherkunft die folgende Abfrage:
Bild 6: Kombinationsfeld zur Schnellauswahl eines Kunden
SELECT tblKunden.KundeID, [Nachname] & ", " & [Vorname] AS Kunde FROM tblKundenORDER BY [Nachname] & ", " & [Vorname];
Damit das Formular nach der Auswahl eines der Einträge aktualisiert wird, legen Sie außerdem für die Ereigniseigenschaft Nach Aktualisierung die Prozedur aus Quellcode 1 an.
Quellcode 1: Anzeigen des im Kombinationsfeld ausgewählten Kunden
Private Sub cboKunden_AfterUpdate() Dim db As DAO.Database Dim rst As DAO.Recordset Set db = CurrentDb Set rst = Me.RecordsetClone rst.FindFirst "KundeID = " & Me.cboKunden If Not rst.NoMatch Then Me.Bookmark = rst.Bookmark End If End Sub
Bild 7: Datenherkunft des Unterformulars zur Anzeige der Lieferadressen
Nun geht es direkt an das Einbinden der Informationen aus den anderen Tabellen – den Start machen die Adressinformationen aus den drei Tabellen tblAdressen, tblLieferadressen und tblRechnungsadressen.
Datenherkunft des Unterformulars
Als Datenherkunft des ersten Unterformulars, das die Lieferadressen anzeigt, dient die Abfrage qryLieferadressenAdd (siehe Bild 7). Die Abfrage enthält alle Felder der beiden per 1:1-Beziehung verknüpften Tabellen tblAdressen und tblLieferadressen.
Aufbau des Unterformulars frmLieferadressen
Das Unterformular frmLieferadressen enthält die anzuzeigenden Felder wie in Bild 8 zu sehen. Außerdem sind die beiden Felder, über die die 1:1-Beziehung realisiert wird, zu erkennen.
Diese beiden Felder werden in der Formularansicht ausgeblendet, da sie nur der Herstellung der 1:1-Beziehung beim Anlegen neuer Lieferadressen dienen.
Die Abfrage zur Zusammenführung der verknüpften Tabellen stellt zwar alle Daten beider Tabellen wie gewünscht dar, allerdings wird, wenn man nur die Felder der Tabelle tblAdressen ausfüllt, nicht automatisch ein korrespondierender Datensatz in der Tabelle tblLieferadressen angelegt.
Die Abfrage zeigt allerdings Kombinationen aus Datensätzen der Tabellen tblAdressen und tblLieferanten an, bei denen der Wert des Feldes AdresseID gleich ist.
Um bereits beim Anlegen der Daten sicherzustellen, dass nicht nur der tblAdressen-Teil der 1:1-Beziehung angelegt wird, erstellen Sie eine kleine Ereignisprozedur, die vor Aktualisierung des Formulars ausgeführt wird (s. Quellcode 2).
Die Prozedur füllt lediglich das Feld AdresseID der Tabelle tblLieferadressen mit dem gleichen Wert, den das entsprechende Feld der Tabelle tblAdressen enthält.
Quellcode 2: Anlegen eines Datensatzes in einer per 1:1-Beziehung verknüpften Tabelle
Private Sub Form_BeforeUpdate(Cancel As Integer) Me!tblLieferadressen_AdresseID = Me!tblAdressen_AdresseID End Sub
Quellcode 3: Diese Routine sorgt für das Setzen einer neuen Standardadresse für einen Kunden.
Private Sub Standard_BeforeUpdate(Cancel As Integer) Dim db As DAO.Database If Me.Standard = True Then If MsgBox("Möchten Sie diese Adresse als Standard-Lieferadresse festlegen", _ vbYesNo + vbExclamation) = vbYes Then Set db = CurrentDb db.Execute "UPDATE tblLieferadressen AS t1 SET t1.Standard = False " _ & "WHERE t1.AdresseID <> " & Me.tblAdressen_AdresseID _ & " AND t1.AdresseID IN (SELECT t2.AdresseID FROM tblAdressen AS t2 " _ & "WHERE KundeID = " & Me.KundeID & ")" Set db = Nothing Else Me.Standard.Undo Cancel = True End If Else MsgBox "Sie können eine Adresse als Standardadresse deaktivieren, indem Sie eine " _ & "andere Adresse zur Standardadresse machen." Me.Standard.Undo Cancel = True End If End Sub
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo