Wenn die Adressdaten Ihrer Kunden in einer expliziten Form mit Liefer- und Rechnungsadresse vorliegen, ist deren Handhabung recht einfach. Sie möchten eine Rechnung verschicken Verwenden Sie die Rechnungsadresse! Der Kunde hat ein Produkt bestellt Senden Sie es an die Lieferadresse! Fehlt nur noch ein Formular, mit dem Sie die vorliegenden Daten komfortabel pflegen und gegebenenfalls abgleichen können. Dieser Beitrag liefert das nötige Rüstzeug für ein solches Formular.
Umgang mit expliziten Adressen im Formular
Weiter oben haben wir erwähnt, dass die einfachste Variante diejenige ist, bei der Lieferadresse und Rechnungsadresse immer gefüllt sind. Dies sollte sowieso der Fall sein, wenn es sich dabei um verschiedene Adressen handelt, aber auch, wenn die Adressen gleich sind. In diesem Fall wird die eingegebene Adresse einfach in die noch leere Adresse übertragen.
Das Formular aus soll bei markiertem Kontrollkästchen chkLieferGleichRechnung gewährleisten, dass änderungen an der Lieferadresse auf die Rechnungsadresse übertragen werden und dass die Daten der Rechnungsadresse nicht direkt geändert werden können.
Außerdem soll man für Kunden, für die nur eine Lieferadresse, aber keine Rechnungsadresse vorliegt, die Lieferadresse durch Aktivieren der Option Lieferadresse entspricht Rechnungsadresse in die Rechnungsadresse kopieren können.
Schließlich fehlt noch das Pendant zu dieser Funktion, das die Rechnungsadresse über die Lieferadresse schreibt: Dies erledigt ein Klick auf die Schaltfläche Rechnungsadresse als Lieferadresse übernehmen. Das Ergebnis soll wie in Bild 1 aussehen.
Bild 1: Formular zur Bearbeitung von Rechnungs- und Lieferadressen
Erstellen des Formulars
Das Formular soll den Namen frmKunden erhalten, daher legen Sie dieses zunächst als Formular in der Entwurfsansicht an und speichern es unter diesem Namen. Fügen Sie dann die Tabelle tblKunden als Datenherkunft hinzu (s. Bild 2). Diese Tabelle wird im Detail im Beitrag Liefer-, Rechnungs- und sonstige Adressen (www.access-im-unternehmen.de/813) beschrieben.
Bild 3: Das Formular frmKunden in der Entwurfsansicht
Die Daten dieser Tabelle ordnen Sie beispielsweise wie in Bild 3 im Formularentwurf an. Dabei landen die Adressen für Lieferung und Rechnung jeweils in einem eigenen Bereich, allein die Kundennummer und das Feld LieferGleichRechnung werden außerhalb der in Rahmen-Steuerelementen eingefassten Adressdaten dargestellt.
Bild 2: Datenherkunft des Formulars
Damit Sie später unterscheiden können, ob Sie per VBA auf die Steuerelemente oder die als Steuerelementinhalt angegebenen Felder der Datenherkunft zugreifen, versehen wir die Steuerelementnamen mit entsprechenden Präfixen (etwa txtFirma statt Firma).
Das Kontrollkästchen chkLieferGleichRechnung: Es ist an das Feld LieferGleichRechnung gebunden und gibt an, ob Liefer- und Rechnungsadresse gleich sind.
Zusätzlich enthält das Formular zwei Schaltflächen, die sich zwischen den beiden Bereichen für Liefer- und Rechnungsadresse befinden. Die Schaltflächen heißen cmdLieferInRechnung und cmdRechnungInLiefer und dienen dazu, die komplette Lieferadresse als Rechnungsadresse zu übernehmen und umgekehrt.
Aktionen beim Anzeigen eines Kunden
Wenn das Formular den ersten Kundendatensatz nach dem Öffnen anzeigt oder der Benutzer mithilfe der Navigationsschaltflächen den Datensatz wechselt, muss das Formular prüfen, welchen Wert das Feld LieferGleichRechnung enthält, und die Steuerelemente entsprechend aktivieren beziehungsweise deaktivieren. Das Wechseln des Datensatzes löst das Ereignis Beim Anzeigen aus, für das wir die folgende Ereignisprozedur hinterlegen:
Private Sub Form_Current() RechnungssteuerelementeAktivieren End Sub
Diese ruft lediglich eine weitere Prozedur namens RechnungssteuerelementeAktivieren auf, die wie in Listing 1 aussieht. Die Prozedur speichert den Wert des Feldes LieferGleichRechnung in der Variablen bolRechnungsadresseSperren und weist den darin enthaltenen Wert der Eigenschaft aller Steuerelemente zu, die sich auf die Rechnungsadresse beziehen.
Listing 1: Formularsteuerelemente aktivieren/deaktivieren
Private Sub RechnungssteuerelementeAktivieren() Dim bolRechnungsadresseSperren As Boolean bolRechnungsadresseSperren = Not Me!chkLieferGleichRechnung Me!cboAnredeID_Rechnung.Enabled = bolRechnungsadresseSperren Me!txtEMail_Rechnung.Enabled = bolRechnungsadresseSperren Me!txtFirma_Rechnung.Enabled = bolRechnungsadresseSperren Me!txtLand_Rechnung.Enabled = bolRechnungsadresseSperren Me!txtNachname_Rechnung.Enabled = bolRechnungsadresseSperren Me!txtOrt_Rechnung.Enabled = bolRechnungsadresseSperren Me!txtPLZ_Rechnung.Enabled = bolRechnungsadresseSperren Me!txtStrasse_Rechnung.Enabled = bolRechnungsadresseSperren Me!txtVorname_Rechnung.Enabled = bolRechnungsadresseSperren Me!cmdLieferInRechnung.Enabled = bolRechnungsadresseSperren Me!cmdRechnungInLiefer.Enabled = bolRechnungsadresseSperren End Sub