Beitrag aus SmartTools Access Weekly
Adresse per Kombinationsfeld im Formular auswählen und übertragen
Access 365 2021 2019 2016 2013 2010
FRAGE Aus einer Tabelle "Kunden" in meiner Access-Datenbank soll eine ausgewählte Kundenadresse in eine andere Tabelle mit dem Namen "Rechnungen" übertragen werden. Ich habe dazu im entsprechenden Rechnungsformular ein Kombinationsfeld erstellt und kann auch den Kundennamen auswählen. Wie aber bekomme ich nun die entsprechenden Feldinhalte Firma, Straße Postleitzahl und Ort in das Rechnungsformular?
H. Krieger
ANTWORT Dem Kombinationsfeld muss zunächst eine Abfrage zugrunde liegen, die alle benötigten Felder liefert, also z.B. Anrede, Vorname, Nachname, Straße, PLZOrt und so weiter. Dazu können Sie unter "Datensatzherkunft" z.B. eine SQL-Abfrage eintragen, die gleich nach Nachname sortiert:
select Anrede, Vorname, Nachname, Strasse,
PLZOrt from Adressen order by Nachname;
Unter "Spaltenanzahl" tragen Sie dann ein, wie viele Felder geliefert werden und unter "Spaltenbreite" geben Sie an, wie breit die einzelnen Felder angezeigt werden sollen, wobei "0cm" ein Feld ausblendet und die Angaben per Semikolon getrennt werden. "2cm;3cm;3cm;0cm;5cm" steht z.B. für fünf Spalten Anrede, Vorname, Nachname, Strasse und PLZOrt, von denen die vierte Spalte "Strasse" ausgeblendet wird.
Wenn eine Auswahl getroffen wurde, wird die Ereignisprozedur "Nach Aktualisierung" aufgerufen. Über "Kombinationsfeld.Column(x)" können Sie dann auf die einzelnen Felder zugreifen und den Inhalt in Textfelder im Formular übertragen. Jedes Feld der Abfrage entspricht einer Spalte im Kombinationsfeld, nummeriert von "0" bis "Anzahl Spalten -1". Die VBA-Routine könnte dann z.B. so aussehen:
'1. Feld aus Abfrage= Anrede
Me.Anrede = Kombinationsfeld.Column(0)
'2. Feld aus Abfrage= Vorname
Me.Vorname = Kombinationsfeld.Column(1)
'3. Feld aus Abfrage= Nachname
Me.Nachname = Kombinationsfeld.Column(2)
'4. Feld aus Abfrage= Strasse
Me.Strasse = Kombinationsfeld.Column(3)
'5. Feld aus Abfrage= PLZ und Ort
Me.PLZOrt = Kombinationsfeld.Column(4)