Hallo zusammen,
Ich versuche gerade, über ein Listenfeld folgendes zu realisieren:
Wenn
Textfeld1 = Wert 1, 2, 3 oder 4 dann Datensatzherkunft Tabelle X
in allen anderen Fällen
Datensatzherkunft Tabelle Y
Ist sowas möglich?
Viele Grüße
McPorsche
Hallo,
Per VBA wäre es lösbar über das Ereignis 'Beim Anzeigen' des Formulars und 'Nach Aktualisierung' des Textfeldes.
im Prinzip ...
Select Case Me.DeinTextfeld
Case 1, 2, 3, 4
Me.DeinListenfeld.RowSource="SELECT * FROM TabelleX"
Case Else
Me.DeinListenfeld.RowSource="SELECT * FROM TabelleY"
End Select
Me.DeinListenfeld.Requery
Datenherkunftstyp für das Listenfeld muss dabei auf Tabelle/Abfrage eingestellt sein
Hallo database,
das hat in sofern schon mal funktioniert, dass ich keine Fehlermeldung bekomme.
Es wird jedoch in jedem Fall nur der Inhalt der ersten Tabelle ausgegeben. Und :Beim öffnen des Formulars ist das Listenfeld so lange leer, bis ich einmal ins Textfeld geklickt habe:
Private Sub refDienstID_AfterUpdate()
Select Case Me.refDienstID
Case 1, 2, 3, 4
Me.refKontrolldienstID.RowSource = "SELECT * FROM tbl_Turnus"
Case Else
Me.refKontrolldienstID.RowSource = "SELECT * FROM tbl_Kontrolldienst"
End Select
Me.refKontrolldienstID.Requery
End Sub
Private Sub refDienstID_BeforeUpdate()
Select Case Me.refDienstID
Case 1, 2, 3, 4
Me.refKontrolldienstID.RowSource = "SELECT * FROM tbl_Turnus"
Case Else
Me.refKontrolldienstID.RowSource = "SELECT * FROM tbl_Kontrolldienst"
End Select
Me.refKontrolldienstID.Requery
End Sub
Gruss,
McPorsche
Hallo,
das Ereignis 'BeforeUpdate' ist in dem Zusammenhang uninteressant, schmeiß das wieder weg.
ZitatBeim öffnen des Formulars ist das Listenfeld so lange leer, bis ich einmal ins Textfeld geklickt habe
....guckst du ... lösbar über das Ereignis
'Beim Anzeigen' des Formulars und
'Nach Aktualisierung' des Textfeldes.
Das Ereignis 'Beim Anzeigen' wird immer dann ausgelöst, wenn ein Datensatz gewechselt wird und auch beim ersten Öffnen eines Formulars.
Dadurch müsste beim Öffnen des Formulars das Listenfeld aus der Tabelle tbl_Kontrolldienst befüllt werden, das das Textfeld ja leer ist (Case Else)Das Ereignis 'Nach Aktualisierung' des Textfeldes nach einer Dateneingabe und Verlassen des Selbigen.
Hier findet der Wechsel der Datenherkunft des Listenfeldes statt sobald du mit TAB oder ENTER die Eingabe eines Wertes ins Textfeld abgeschlossen hast.Siehe Beispiel im Anhang.
[Anhang gelöscht durch Administrator]
Hallo,
und das Requery ist auch überflüssig. Die Zuweisung der RowSource löst auch ein Requery aus.
Hi,
Zitatdas Requery ist auch überflüssig
stimmt übrigens auch! :D ;D
Hi,
pflegeleichter wird es, wenn Du deine Routinen in eine eigene sub schreibst und diese sub dann von den oben genannten Ereignis-Proceduren aufrufst. Das hat den Vorteil, dass diese Zeilen nur einmal vorkommen und im "Pflegefall" nur eine Stelle korrigiert werden muss.
private Sub Text_aktualisieren
Select Case Me.DeinTextfeld
Case 1, 2, 3, 4
Me.DeinListenfeld.RowSource="SELECT * FROM TabelleX"
Case Else
Me.DeinListenfeld.RowSource="SELECT * FROM TabelleY"
End Select
Harald
Vielen Dank:
Es funktioniert... :)
Viele Grüße
McPorsche