Access 2007 Abfrage: aktuellen Datensatz filtern

Hallo!

Wer kann mir einen Tipp bei folgender Frage geben?

Zunächst ein paar Eckdaten:
Ich habe eine Adressdatenbank mit

  • einer Tabelle „Adressbuch“
  • einer Abfrage, in der die Daten des Adressbuchs bearbeitet werden
  • einem Formular „Adressbuch“, das auf der entsprechenden Abfrage aufbaut.

In meinem Formular habe ich ein Kombinationsfeld und ich möchte gerne, dass mir dort z.B. folgende Werte angeboten werden:

  • Titel + Nachname
  • Titel + Vorname + Nachname
  • Vorname + Nachname
  • Nachname

Dabei soll sich diese Auswahl natürlich nur nach dem aktuell ausgewählten Datensatz richten.

Wie stelle ich das am elegantesten an? Mein eigener Lösungsvorschlag wäre, eine UNION-Abfrage zu bilden, in der die oben genannten Abfragen gebündelt werden, allerdings habe ich dann das Problem, dass dort die Namen aller Personen in der Adressdatenbank auftauchen. Ich frage mich, ob es dann womöglich einen Befehl gibt, die UNION-Abfrage so zu filtern, dass nur der aktuelle Datensatz berücksichtigt wird?

Für Hinweise danke ich im Voraus!

  • Titel + Nachname
  • Titel + Vorname + Nachname
  • Vorname + Nachname
  • Nachname

Dabei soll sich diese Auswahl natürlich nur nach dem aktuell
ausgewählten Datensatz richten.

Vielleicht klingt das unverständlich. Angenommen ich habe eine Person in der Datenbank „Dr. Willy Mustermann“, dann möchte ich, dass in dem Kombinationsfeld ausschließlich folgende Werte angegeben werden:

  • Dr. Mustermann
  • Dr. Willy Mustermann
  • Willy Mustermann
  • Mustermann

Hallo,

  • Titel + Nachname
  • Titel + Vorname + Nachname
  • Vorname + Nachname
  • Nachname

Dabei soll sich diese Auswahl natürlich nur nach dem aktuell
ausgewählten Datensatz richten.

Vielleicht klingt das unverständlich.

Ja, in der Tat. Alles IST missverständlich…

Angenommen ich habe eine
Person in der Datenbank „Dr. Willy Mustermann“, dann möchte
ich, dass in dem Kombinationsfeld ausschließlich folgende
Werte angegeben werden:

  • Dr. Mustermann
  • Dr. Willy Mustermann
  • Willy Mustermann
  • Mustermann

Ich kann mir keinen richtigen Reim daraus machen, was Du erreichen willst…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

OK, und WAS ist missverständlich?

Erneuter Versuch, jetzt einen Schritt einfacher:

Ich möchte gerne ein Kombinationsfeld in meinem Formular haben, in dem die Werte anderer Felder zur Auswahl gestellt werden.

Normalerweise gehe ich in der Entwurfansicht auf das entsprechende Kombinationsfeld, dort rufe ich die Datensatzherkunft auf und definiere, dass ein anderes Feld der Datenbank als Grundlage für das Kombinationsfeld dienen soll. Wenn mehrere Felder gebündelt werden sollen, dann machen ich eine UNION-Abfrage.

Beispiel:
Das Kombinationsfeld heißt „Bevorzugte Anrede für die Person:“ und nun möchte ich, dass mir das Feld den „Nachnamen“ und den „Vornamen“ der Person zur Auswahl anbietet (und hinterher auch komplexere Varianten mit Titel usw.). Selbstverständlich soll das Kombinationfeld nur Werte ausspucken, die sich auf den aktuellen Datensatz beziehen und alle anderen Datensätze unberücksichtigt lassen.

Also wenn der Kontakt „Dr. Willy Mustermann“ heißt, dann soll mir das Kombinationsfeld („Bevorzugte Anrede“) alle möglichen Kombinationen aus Titel, Vornamen und Nachnamen anbieten.

Vielleicht gibt es ja einen ganz anderen Lösungsansatz.

Hallo,

Also wenn der Kontakt „Dr. Willy Mustermann“ heißt, dann soll mir das Kombinationsfeld („Bevorzugte Anrede“) alle möglichen Kombinationen aus Titel, Vornamen und Nachnamen anbieten.

Vielleicht gibt es ja einen ganz anderen Lösungsansatz.

Ja, das ist die eigentliche Lösung…

Voraussetzung ist die Verwendung unterschiedlicher Felder für jeweils Anrede, Titel, Vorname und Nachname.

Sub Form_Current()

Dim strWL as String

strWL = trim ("" & Me!Anrede & " " & Me!Titel & " " & Me!Vorname & " " & Me!Nachname) & „;“

strWL = strWL & trim ("" & Me!Titel & " " & Me!Vorname & " " & Me!Nachname) & „;“

strWL = strWL & trim ("" & Me!Anrede & " " & Me!Vorname & " " & Me!Nachname) & „;“

strWL = strWL & trim ("" & Me!Anrede & " " & Me!Titel & " " & Me!Nachname) & „;“

strWL = strWL & trim ("" & Me!Anrede & " " & Me!Nachname) & „;“

’ evtl. weitere Kombinationen

Me!cmbAnschrift.RowsourceType = „Value list“
Me!cmbAnschrift.Rowsource = strWL

End Sub

Grüße
Franz

Hallo,

also ich würde die Werteliste des Kombifeldes nutzen.
Diese kannst du per VBA entsprechend des Datensatzes füllen.

Beispiel:

Private Sub Form\_Current()
Dim a1, a2

a1 = Me.Nachname
a2 = Me.Vorname & " " & Me.Nachname

Me.MeinKombiFeld.RowSource = a1 & ";" & a2 

End Sub

Grüße aus Rostock
Wolfgang
(Netwolf)

Vielen Dank für die Antwort!

Private Sub Form_Current()
Dim a1, a2

a1 = Me.Nachname
a2 = Me.Vorname & " " & Me.Nachname

Me.MeinKombiFeld.RowSource = a1 & „;“ & a2

End Sub

Wie schlage ich die Verbindung zwischen dem Kombinationsfeld und dem VBA-Code? Wenn ich auf Eigenschaften des Kombinationsfeldes gehe, dann kann ich bei „Herkunftstyp“ den Unterpunkt „Wertliste“ aktivieren. Wie komme ich von dort aus zu der Eingabemöglichkeit für den o.g. Code?

Gruß
Dominik

Vielen Dank!

Sub Form_Current()

Dim strWL as String

strWL = trim ("" & Me!Anrede & " " & Me!Titel & " " &
Me!Vorname & " " & Me!Nachname) & „;“

strWL = strWL & trim ("" & Me!Titel & " " & Me!Vorname & " "
& Me!Nachname) & „;“

strWL = strWL & trim ("" & Me!Anrede & " " & Me!Vorname & " "
& Me!Nachname) & „;“

strWL = strWL & trim ("" & Me!Anrede & " " & Me!Titel & " " &
Me!Nachname) & „;“

strWL = strWL & trim ("" & Me!Anrede & " " & Me!Nachname) &
„;“

’ evtl. weitere Kombinationen

Me!cmbAnschrift.RowsourceType = „Value list“
Me!cmbAnschrift.Rowsource = strWL

End Sub

Auch hier ergibt sich für mich nur noch die Frage (vgl. Antwort von Wolfgang (Netwolf)), wie ich vom Kombinationsfeld zum VBA-Code komme? Wenn ich auf Eigenschaften des Kombinationsfeldes gehe, dann kann ich bei „Herkunftstyp“ den Unterpunkt „Wertliste“ oder „Tabelle/Abfrage“ wählen. Wie komme ich von dort aus zu der Eingabemöglichkeit für den o.g. Code?

Vielen Dank schon einmal im Voraus!

Dominik

Wenn ich auf Eigenschaften des
Kombinationsfeldes gehe, dann kann ich bei „Herkunftstyp“ den
Unterpunkt „Wertliste“ aktivieren.

das ist so richtig

Wie komme ich von dort aus zu der Eingabemöglichkeit für den o.g. Code?

der Code gehört in das Ereignis „beim Anzeigen“ des Formulars

  • Formular in der Entwurfsansicht öffnen
  • oben links (da wo die Lineale zusammenlaufen) ist ein Quadrat
  • Doppelklick auf das Quadrat
  • es öffnen sich die Eigenschaften für das Formular
  • Reiter [Ereignisse]
  • Doppelklick auf das Wort „Beim Anzeigen“
  • in der Zeile erscheint: [Ereignisprozedur]
  • am Ende auf die drei Punkte […] klicken
  • nun bist du an der richtigen Stelle des VBA-Editors

Grüße aus Rostock
Wolfgang
(Netwolf)