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
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
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
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
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
Versuche es mit .OrderBy = "[massnahmeDurchgang] = 58 DESC"
.OrderBy = "massnahmeDurchgang DESC"
Ob das den gewünschten Erfolg bringt?
Gruß
Josef
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
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
Weitere Sortierangaben kannst Du anhängen (Ausdruck gehört in eine Zeile):
.OrderBy = "[massnahmeDurchgang] = 58 DESC, FeldnameNachDemAlphabetischSortiertWerdenSoll"
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
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)
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.
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