Supportnet / Forum / Datenbanken
Mit kombinationsfeld textfeld füllen
Frage
Hi leute,
ich möchte in einem Textfeld Daten anzeigen, die ich über ein Kombinationsfeld auswähle.
In meinem Addressbuch wähle cih eien Frima und dann soll durch diese Auswahl das Textfeld Straße gefüllt werden.
Kann mir aber jemand verraten wie das funktioniert?
Danke im vorraus
tusca
Antwort 1 von Teddy7
Hi tusca !
Ich habe sowas mal mit einem Unterformular gelöst.
Als Datenbasis für das Kombinationsfeld habe ich eine Abfrage über die benötigten Felder (mit Gruppierung, damit jeder mögliche Wert nur 1x auftaucht). Auf die gleiche Abfrage habe ich das Unterformular bezogen. Verknüpfung zwischen Haupt- und Unterformular nicht vergessen !
Wenn ich dann im Kombinationsfeld einen Wert auswähle, dann erscheint automatisch im Unterformular der zugehörige Wert des 2. Datenfeldes.
(Also eines Datenfeldes, das ich nicht im Kombinationsfeld sehen will).
Ich hoffe, ich habe das nicht zu kompliziert erklärt - es ist eigentlich relativ einfach.
Gruß
Teddy
Ich habe sowas mal mit einem Unterformular gelöst.
Als Datenbasis für das Kombinationsfeld habe ich eine Abfrage über die benötigten Felder (mit Gruppierung, damit jeder mögliche Wert nur 1x auftaucht). Auf die gleiche Abfrage habe ich das Unterformular bezogen. Verknüpfung zwischen Haupt- und Unterformular nicht vergessen !
Wenn ich dann im Kombinationsfeld einen Wert auswähle, dann erscheint automatisch im Unterformular der zugehörige Wert des 2. Datenfeldes.
(Also eines Datenfeldes, das ich nicht im Kombinationsfeld sehen will).
Ich hoffe, ich habe das nicht zu kompliziert erklärt - es ist eigentlich relativ einfach.
Gruß
Teddy
Antwort 2 von tusca
THX Teddy,
für den Tipp, hab das ganze inzwischen doch hinbekommen. Habe einen Filter angelegt, den die Datensätze der Tabelle durchläuft und somit wird nur der betroffene gefilterte Datensatz angezeigt. Sieht dann so aus:
Private Sub Firma_Change()
Me.Filter = "UnNe_ID = " & Me.Firma
Me.FilterOn = True
End Sub
Funktgioniert schnell und ist einfach.
Hab deinen Rat auch versucht, hat auch funktioniert. Bin aber hierbei geblieben, da die Tabelle nicht verändert werden kann da sonst fehlerhafte Beziehhungen entstehen.
Nochmals danke.
Grüße
Tusca
für den Tipp, hab das ganze inzwischen doch hinbekommen. Habe einen Filter angelegt, den die Datensätze der Tabelle durchläuft und somit wird nur der betroffene gefilterte Datensatz angezeigt. Sieht dann so aus:
Private Sub Firma_Change()
Me.Filter = "UnNe_ID = " & Me.Firma
Me.FilterOn = True
End Sub
Funktgioniert schnell und ist einfach.
Hab deinen Rat auch versucht, hat auch funktioniert. Bin aber hierbei geblieben, da die Tabelle nicht verändert werden kann da sonst fehlerhafte Beziehhungen entstehen.
Nochmals danke.
Grüße
Tusca
Antwort 3 von PotzBlitz
Hallo tusca,
wenn möglich, solltest du den Einsatz des Filters vermeiden, denn das ist einerseits mit Kanonen auf Spatzen geschossen, andererseits kann es unter Umständen zu Nebenwirkungen kommen, die nicht erwünscht sind.
Ich schlage dir folgende Alternative vor:
Erstelle eine Abfrage mit drei Feldern.
1. Primärschlüssel der Tabelle
2. Name der Firma
3. Strasse
Diese Abfrage hinterlegst du dem Kombinationsfeld und stellst folgende Eingenschaften des Kombinationsfeldes ein:
Datensatzherkunft = <Name der Abfrage>
Spaltenanzahl = 3
Spaltenbreiten = 0cm;3cm;0cm
Gebundene Spalte = 1
Diese Einstellungen sorgen dafür, dass dem Kombinationsfeld drei Spalten hinterlegt sind, wobei die erste und letzte Spalte wg. 0cm Breite unsichtbar sind (Primärschlüssel u. Strasse). Die gebundene Spalte 1 (Primärschlüssel) ist in den meisten Fällen ideal zur Weiterverarbeitung der ausgewählten Firma.
Jetzt ist nur noch eine Codezeile notwendig. Sie soll bei der Auswahl der Firma die Strasse aus der dritten Spalte des Kombinationsfelds auslesen und in das Textfeld schreiben. Dazu brauchen wir das Ereignis NachAktualisierung des Kombinationsfelds
-------------------------------
Private Sub Kombinationsfeld1_AfterUpdate()
′Die Spaltenzählung eines Kombinationsfeldes beginnt bei 0,
′die dritte Spalte wird somit über (2) aufgerufen
Me.Text1 = Me.Kombinationsfeld1.Column(2)
End Sub
-------------------------------
Dieses Beispiel führt zum gleichen Resultat, ist einfach zu handhaben und wirkt sich nicht wie der Filter auf das gesamte Formular aus. Auch sind keine Unterformulare nötig.
Gruss
PotzBlitz
wenn möglich, solltest du den Einsatz des Filters vermeiden, denn das ist einerseits mit Kanonen auf Spatzen geschossen, andererseits kann es unter Umständen zu Nebenwirkungen kommen, die nicht erwünscht sind.
Ich schlage dir folgende Alternative vor:
Erstelle eine Abfrage mit drei Feldern.
1. Primärschlüssel der Tabelle
2. Name der Firma
3. Strasse
Diese Abfrage hinterlegst du dem Kombinationsfeld und stellst folgende Eingenschaften des Kombinationsfeldes ein:
Datensatzherkunft = <Name der Abfrage>
Spaltenanzahl = 3
Spaltenbreiten = 0cm;3cm;0cm
Gebundene Spalte = 1
Diese Einstellungen sorgen dafür, dass dem Kombinationsfeld drei Spalten hinterlegt sind, wobei die erste und letzte Spalte wg. 0cm Breite unsichtbar sind (Primärschlüssel u. Strasse). Die gebundene Spalte 1 (Primärschlüssel) ist in den meisten Fällen ideal zur Weiterverarbeitung der ausgewählten Firma.
Jetzt ist nur noch eine Codezeile notwendig. Sie soll bei der Auswahl der Firma die Strasse aus der dritten Spalte des Kombinationsfelds auslesen und in das Textfeld schreiben. Dazu brauchen wir das Ereignis NachAktualisierung des Kombinationsfelds
-------------------------------
Private Sub Kombinationsfeld1_AfterUpdate()
′Die Spaltenzählung eines Kombinationsfeldes beginnt bei 0,
′die dritte Spalte wird somit über (2) aufgerufen
Me.Text1 = Me.Kombinationsfeld1.Column(2)
End Sub
-------------------------------
Dieses Beispiel führt zum gleichen Resultat, ist einfach zu handhaben und wirkt sich nicht wie der Filter auf das gesamte Formular aus. Auch sind keine Unterformulare nötig.
Gruss
PotzBlitz
Antwort 4 von tusca
thx PotzBlitz
funktioniert einwandfrei, war zwar etwas aufwendig die einzelnen Textfelder alle anzusprechen, aber es läuft.
gruß
tusca
funktioniert einwandfrei, war zwar etwas aufwendig die einzelnen Textfelder alle anzusprechen, aber es läuft.
gruß
tusca