Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Carl am Januar 25, 2018, 13:53:29

Titel: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Carl am Januar 25, 2018, 13:53:29
Ich habe mal eine Frage zum Filtern.

(1) In der db funktioniert alles. Es geht um eine Verbesserung eines Formulars.
(2) HF mit UFOendlos
(3) Im HF habe ich ein Listenfeld, das die Datensätze im UFO wie folgt filtert:


     With Me!frmTeilnehmerzuordnungUFO2.Form
         .Filter = "massnahmeDurchgang = " & Me!Kombinationsfeld82 & ""
         .FilterOn = True
     End With


Jetzt sollen
(a) zusätzlich zu den gefilterten DS im UFO alle DS angezeigt werden, die im Feld [massnahmeDurchgang] den Zahlenwert 58 haben. Also Filter beibehalten und zusätzlich alle mit rein nehmen wo massnahmeDurchgang=58

(b) diese DS mit massnahmeDurchgang=58 immer am Ende, d.h. nach dem letzten gefilterten DS, der nicht 58 hat

Geht sowas?

Carl


Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Joss am Januar 25, 2018, 14:08:16
Hallo Carl,

zu a:
.Filter = "massnahmeDurchgang = " & Me!Kombinationsfeld82 & _
           " Or massnahmeDurchgang = 58"


zu b:
Da wirst du ein zusätzliches Ja/Nein-Feld einfügen müssen, über das du die Sortierung ändern kannst.

Gruß
Josef
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Lachtaube am Januar 25, 2018, 14:12:20
Wer sich SQL-Grundkenntnisse erworben hat, würde solch banale Fragen kaum stellen. Du bist ist doch nicht mehr ganz neu in der Materie - oder?
Private Sub Kombinationsfeld82_AfterUpdate()
   With Me!frmTeilnehmerzuordnungUFO2.Form
      .Filter = "massnahmeDurchgang = " & Me.Kombinationsfeld82 & " OR " & _
                "massnahmeDurchgang = 58"
      .FilterOn = True
      .OrderBy = "massnahmeDurchgang = 58 DESC"
      .OrderByOn = True
   End With
End Sub
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Carl am Januar 25, 2018, 15:27:23
Ja, aber es ist nicht einfach.

er meckert an:


.OrderBy = "massnahmeDurchgang = 58 DESC"


auch
.OrderBy = "massnahmeDurchgang = " 58 DESC


geht nicht. Access fragt nach dem Parameterwert für "massnahmeDurchgang = 58".

Wie muss es richtig heißen? Danke für Deine Geduld.

Carl
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Carl am Januar 25, 2018, 15:39:09
Zitat von: Joss am Januar 25, 2018, 14:08:16
Hallo Carl,

zu b:
Da wirst du ein zusätzliches Ja/Nein-Feld einfügen müssen, über das du die Sortierung ändern kannst.

Hallo Josef,

kannst Du mir mal den Code zeigen, wenn ich ein extra Feld [janein58] hätte? Ich glaube nämlich, so ein Feld wäre auch für andere Zwecke nützlich. Vielleicht sollte ich es in der Abfrage berechnen lassen?

Carl
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Lachtaube am Januar 25, 2018, 15:51:47
Versuche es mit .OrderBy = "[massnahmeDurchgang] = 58 DESC"
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Joss am Januar 25, 2018, 16:01:29
.OrderBy = "massnahmeDurchgang DESC"


Ob das den gewünschten Erfolg bringt?

Gruß
Josef
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Joss am Januar 25, 2018, 16:18:36
Hallo Carl,

ZitatmassnahmeDurchgang=58 immer am Ende

• füge ein Ja/Nein-Feld (vielleicht mit dem Namen "Sortierfeld"?) in die Tabelle ein, die dem UF zugrunde liegt.
• Dann setzt du im Datensatz 58 einen Haken,
• ziehst das Sortierfeld mit in die Abfrage,
• und sortierst es absteigend.
Dadurch steht es immer am Ende der Liste.

Außer ich habe dich falsch verstanden?

Gruß
Josef
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Carl am Januar 25, 2018, 19:58:05
Doch, genau richtig verstanden. Ich habe jetzt den Code von Lachtaube flott gekriegt. Dadurch erscheinen zuerst die DS mit dem gewählten Maßnahmedurchgang und darunter die mit dem immer gleichen Maßnahmedurchgang Nr. 58.


   With Me!frmTeilnehmerzuordnungUFO2.Form
      .Filter = "massnahmeDurchgang = " & Me.Kombinationsfeld82 & " OR " & _
                "massnahmeDurchgang = 58"
            .FilterOn = True
      .OrderBy = "[massnahmeDurchgang] = 58 DESC"
      .OrderByOn = True
   End With


Und jetzt werden aber die Einträge mit dem gewählten Maßnahmedurchgang nicht mehr alphabetisch angezeigt.

Muss man dazu wohl doch die Variante mit dem zweiten Sortierfeld und der Abfrage wählen?

Carl
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Lachtaube am Januar 26, 2018, 06:49:49
Weitere Sortierangaben kannst Du anhängen (Ausdruck gehört in eine Zeile):
.OrderBy = "[massnahmeDurchgang] = 58 DESC, FeldnameNachDemAlphabetischSortiertWerdenSoll"
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Carl am Januar 26, 2018, 09:11:16
Ah vielen Dank!

Ich habe jetzt versucht, das Ganze auf eine Öffnungsprozedur anzuwenden, die auch die DMax-Funktion enthält. Leider funktioniert der String von unten da nicht mehr:


Private Sub Form_Load()
   With Me.frmTeilnehmerzuordnungUFO2.Form
      .Filter = "massnahmeDurchgang = " & DMax("ID", "abfmassnahmedurchgaenge") OR " & _
                "[massnahmeDurchgang] = 58 DESC"
      .FilterOn = True
   End With
End Sub


Ziel ist, dass im UFO zuerst die DS mit der maximal höchsten ID in [massnahmeDurchgang] angezeigt werden und danach die mit der 58.

Was bedeutet denn das Zeichen & mit dem Unterstrich? "& _"?

Und spielen die Zeilenumbrüche eine Rolle oder ist das nur eine optische Unterscheidung für Menschen?

Carl
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Lachtaube am Januar 26, 2018, 09:37:39
Siehe Gewusst wie: Umbrechen und Zusammenfassen von Anweisungen in Code (Visual Basic) (https://docs.microsoft.com/de-de/dotnet/visual-basic/programming-guide/program-structure/how-to-break-and-combine-statements-in-code)
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: PhilS am Januar 26, 2018, 11:38:54
Zitat von: Carl am Januar 26, 2018, 09:11:16
Was bedeutet denn das Zeichen & mit dem Unterstrich? "& _"?

Und spielen die Zeilenumbrüche eine Rolle oder ist das nur eine optische Unterscheidung für Menschen?
Ich glaube mein VBA-SQL-String-Tutorial (http://codekabinett.com/rdumps.php?Lang=1&targetDoc=vba-sql-string-tutorial) wäre eine gute Lektüre für dich.
Titel: Re: einem Filter ein zusätzliches Argument hinzufügen
Beitrag von: Joss am Januar 26, 2018, 12:28:01
Hallo Carl,

ZitatIch habe jetzt versucht, das Ganze auf eine Öffnungsprozedur anzuwenden, die auch die DMax-Funktion enthält. Leider funktioniert der String von unten da nicht mehr:
... "[massnahmeDurchgang] = 58 DESC"

DESC gehört nicht in den Filter.
... "[massnahmeDurchgang] = 58"

Gruß
Josef