Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Ausdrucksgenerator: Wenn-Dann Funktion?

Begonnen von McPorsche, Juli 09, 2013, 12:21:20

⏪ vorheriges - nächstes ⏩

McPorsche

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


database

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

McPorsche

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



database

#3
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]

MzKlMu

Hallo,
und das Requery ist auch überflüssig. Die Zuweisung der RowSource löst auch ein Requery aus.
Gruß Klaus

database

Hi,

Zitatdas Requery ist auch überflüssig

stimmt übrigens auch!  :D ;D

bahasu

#6
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
Servus

McPorsche

Vielen Dank:

Es funktioniert...  :)

Viele Grüße
McPorsche