Kunden per Bezeichnung verwalten

Beim Umgang mit Kundendaten benötigen Sie oft eine allgemeine Bezeichnung eines Kunden. Diese soll beispielsweise als überschrift im Formular zur Verwaltung der Stammdaten eines Kunden dargestellt werden oder als Wert zur Auswahl in einem Kombinationsfeld angeboten werden. Praktisch wäre es, diesen Ausdruck etwa in einem Abfragefeld in der Form <Firma> (<Nachname>, <Vorname>) oder ähnlich abzubilden. Das gelingt jedoch nicht so leicht, weil ein Kunde mal mit, mal ohne Firma kommt. Und was geschieht überhaupt, wenn zwei Kunden den gleichen Namen haben Diese und weitere Fragen beantwortet dieser Artikel.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1112_KundePerBezeichnung.mdb.

Kundenbezeichnung erwünscht

Ein Einsatzzweck für eine Kundenbezeichnung, die sich aus der Firma des Kunden und dem Namen des Ansprechpartners zusammensetze, wäre etwa die Darstellung in einem Kombinationsfeld zur Auswahl eines Kunden etwa in einem Bestellformular.

Normalerweise werden solche Kombinationsfelder immer mit der Kundentabelle als Datensatzherkunft und dem Nach- und dem Vornamen als anzuzeigendem Wert dargestellt.

Dabei fällt allerdings die Firmenbezeichnung weg. Wenn man die Firmenbezeichnung, die aber in der Regel nur bei einem Teil der Kunden vorliegt, hinzufügen möchte – etwa in der Form Minhorst, André (Redaktionsbüro Minhorst) oder Redaktionsbüro Minhorst (Minhorst, André), muss man einen Wenn-Ausdruck in der Abfrage verwenden.

Andersherum kann es auch sein, dass zu einem Kunden gar kein Ansprechpartner vorliegt, sondern nur der Firmenname. Gegebenenfalls möchten Sie auch die Kundennummer in den Ausdruck für ein Kombinationsfeld oder für die Titelzeile des Detailformulars integrieren.

Richtig unpraktisch wird es, wenn zwei Kunden den gleichen Namen haben. Dann können Sie, wenn nur Vorname und Nachname angezeigt werden, anhand des Eintrags im Kombinationsfeld nicht auf die Schnelle entscheiden, ob Sie auch den richtigen Kunden auswählen.

Und da in diesem Fall der Ausdruck dynamisch etwa durch Feld einer Abfrage ermittelt wird, lässt sich auch nichts an diesem Ausdruck ändern – es sei denn, Sie ändern die zugrunde liegenden Daten. Das ist wiederum unmöglich – es sei denn, Sie möchten die verschiedenen Michael Müllers in Ihrem Kundenstamm mit Müller1, Müller2 und Müller3 betiteln. Spätestens beim Erstellen von Schriftverkehr auf Basis dieser Daten kommt es zu Problemen.

Separates Bezeichnungsfeld

Die Tabelle tblKunden der Beispieldatenbank verfügt neben den üblichen Feldern über ein Feld namens Bezeichnung.

Dieses Feld soll eine eindeutige Bezeichnung eines jeden Kunden gewährleisten und wurde deshalb mit einem eindeutigen Index versehen – dies erreichen Sie beispielsweise durch das Einstellen der Eigenschaft Indiziert auf den Wert Ja (Ohne Duplikate). Bild 1 zeigt den Entwurf der Tabelle mit dem Feld Bezeichnung.

Kundentabelle mit Bezeichnungsfeld

Bild 1: Kundentabelle mit Bezeichnungsfeld

Bezeichnung automatisch anpassen

Zur Anzeige der Daten der Tabelle tblKunden erstellen Sie ein Formular namens frmKunden, dass die Tabelle tblKunden als Datenherkunft verwendet. Ziehen Sie alle Felder der Tabelle in den Detailbereich des Formularentwurfs und ordnen Sie die Felder nach Wunsch an – beispielsweise so wie in Bild 2.

Formular zur Anzeige der Kundendaten

Bild 2: Formular zur Anzeige der Kundendaten

Typischerweise liegen schon Kundendaten vor, für die Sie die Bezeichnung nachträglich hinzufügen müssen, für neue Datensätze soll die Bezeichnung beim Speichern des Datensatzes eingetragen werden.

Wie aber soll die Bezeichnung nun aussehen Dies ist letztlich egal, die paar Zeilen Code, welche die Bezeichnung zusammenstellen, können Sie leicht an die eigenen Bedürfnisse anpassen.

Wir entscheiden uns für das folgende Schema:

<KundeID> - <Firma> (<Nachname>, <Vorname>)

Für neue Datensätze soll die Bezeichnung zunächst beim Speichern des Datensatzes angelegt werden.

Damit noch nachträgliche änderungen notwendig sind, bringen wir die notwendigen Codezeilen in der Ereignisprozedur unter, die durch das Ereignis Vor Aktualisierung ausgelöst wird.

Legen Sie diese Prozedur zunächst an, indem Sie in die Entwurfsansicht des Formulars wechseln und im Eigenschaftsfenster für den Eintrag Vor Aktualisierung den Wert [Ereignisprozedur] auswählen. Danach klicken Sie auf die Schaltfläche mit den drei Punkten (…) und füllen die nun im VBA-Editor angezeigte Prozedur wie folgt:

Private Sub Form_BeforeUpdate(Cancel As Integer)
     Me!Bezeichnung = Me!KundeID & " - " _
         & Me!Firma & " (" & Me!Nachname & ", " _
         & Me!Vorname & ")"
End Sub

Wenn Sie nun einen neuen Datensatz anlegen und diesen speichern (entweder durch Verlassen des Datensatzes, durch Betätigen der Tastenkombination Strg + S oder durch einen Mausklick auf den Datensatzmarkierer), wird die Bezeichnung wie in Bild 3 angepasst. Die einzige Anweisung dieser Ereignisprozedur fügt den Inhalt einiger Felder und einige Zeichen wie das Minuszeichen und die öffnende und schließende Klammer zusammen.

Kunde mit angepasster Bezeichnung

Bild 3: Kunde mit angepasster Bezeichnung

Bestehende Daten mit Bezeichnung versehen

Wenn Sie bereits bestehende Kundendaten um eine Bezeichnung ergänzen wollen, verwenden Sie am einfachsten eine Aktualisierungsabfrage. Diese verwendet etwa den gleichen Ausdruck wie die VBA-Prozedur von oben und sieht wie in Bild 4 aus. Nach dem Ausführen der Abfrage erhalten Sie das Ergebnis aus Bild 5 – natürlich nur im Optimalfall, nämlich wenn alle Felder der Datensätze gefüllt sind (dazu später mehr).

Aktualisieren aller Bezeichnungen der Kundentabelle

Bild 4: Aktualisieren aller Bezeichnungen der Kundentabelle

Kunden mit Bezeichnung

Bild 5: Kunden mit Bezeichnung

Bezeichnung einsetzen

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

Schreibe einen Kommentar