Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Carl am Februar 09, 2021, 21:00:16

Titel: record source mit Listenfeld
Beitrag von: Carl am Februar 09, 2021, 21:00:16
Ich versuche das Problem mal zu beschreiben.

Ein HF mit einem UFO(Endlosformular). Im HF befindet sich ein Listenfeld A, mit dem das UFO gefiltert wird.

Listenfeld A hat so ca. 50 Einträge und die sind zu unübersichtlich. Um dem Anwender das Filtern zu erleichtern, würde ich gern das Listenfeld A selbst filtern.

Ich habe von Klaus von 2010 einen ähnlichen Vorschlag gefunden, verstehe ihn aber nicht.

Private Sub ListenfeldA_AfterUpdate()
    Select Case Me!ListenfeldB
      Case "1"       
        Me!ListenfeldA.RowSource = "Tabelle1"
      Case "2"
        Me!ListenfeldA.RowSource = "Tabelle2"
    End Select
End Sub

Ich möchte in ListenfeldA die Datensatzherkunft ändern, aber die kommt doch nicht aus einer Tabelle?  Das ist vielmehr so ein String: ListenfeldA Datensatzherkunft: SELECT [abfBereiche3].[ID], [abfBereiche3].[Bereich], [abfBereiche3].[BereichErklaerungKurz] FROM abfBereiche3 ORDER BY [Bereich];


Hinweis: In der abfBereiche3 befindet sich ein Feld mit Werten (1-4), die ListenfeldB zum Filtern von ListenfeldA verwenden soll.

Frage: soll ich da 4 Abfragen machen und nur diese ändern?
Frage: empfehlen sich hier nicht 4 Buttons, die die Datensatzherkunft im Listenfeld ändern?

Carl
Titel: Re: record source mit Listenfeld
Beitrag von: DF6GL am Februar 10, 2021, 13:46:55
Hallo,



Zitataber die kommt doch nicht aus einer Tabelle?  Das ist vielmehr so ein String


Aber sicher doch. Es handelt sich hier um einen SQL-String, der gleichbedeutend mit einer Abfrage ist, die denselben SQL-String enthält.  (Abfrageentwurf/SQL-Ansicht).

Wenn Du das ListenfeldA vor-filtern willst, benötigst Du ein Textfeld, in das das Filterkriterium für die Filterung eingetragen wird, bzw. das Kriterium muss irgendwo anders herkommen. Im u. st. Beispiel wird nach "Bereich" (DatenTyp TEXT angenommen) gefiltert.


Private Sub txtMeinSuchTextFeld_AfterUpdate()
   
        Me!ListenfeldA.RowSource = "SELECT ID, Bereich, BereichErklaerungKurz FROM abfBereiche3  " & _
                                   " Where Bereich Like '" & Me!txtMeinSuchTextFeld & "*'  ORDER BY Bereich"

End Sub


Oder wenn sich das Listenfeld nach jeder Eingabe eines Zeichens im SuchTextFeld aktualisieren soll:


Private Sub txtMeinSuchTextFeld_Change()
   
        Me!ListenfeldA.RowSource = "SELECT ID, Bereich, BereichErklaerungKurz FROM abfBereiche3  " & _
                                   " Where Bereich Like '" & Me!txtMeinSuchTextFeld.Text & "*'  ORDER BY Bereich"

End Sub
Titel: Re: record source mit Listenfeld
Beitrag von: Carl am Februar 10, 2021, 15:33:39
Super, vielen Dank.

Die Schaltfläche habe ich hinbekommen. Ich versuche jetzt mal noch ein Suchfeld, wie Du es vorgeschlagen hast.

Carl
Titel: Re: record source mit Listenfeld
Beitrag von: Carl am Februar 13, 2021, 18:57:33
Ich versuche per Gültigkeitsregel in einem Textfeld nur folgende Zeichen zuzulassen:


Fehlermeldungen erhalte ich bei
Nicht Wie "*[!0-9,a-z,-,:,&]*"
Nicht Wie "*[!0-9a-z -:&]*"

Wie muss die Gültigkeitsregel richtig heißen?

VG Carl