Hallo, ich habe jetzt wahrscheinlich ein etwas einfacheres Problem. ;D
Also ich würde gerne per Button einen formularbasierten Filter öffnen und direkt alle Daten angezeigt bekommen, die Daten in einem Datumsfeld haben und diese automatisch sortieren lassen.
Der Filter öffnet sich schon per Knopfdruck, nur leider komme ich bei dem Rest nicht weiter.
Für Hilfen wäre ich sehr dankbar.
Lg
Hallo,
vielleicht kannst du mit den Codes im folgenden Beitrag was anfangen?
http://www.access-o-mania.de/forum/index.php?topic=8746.0 (http://www.access-o-mania.de/forum/index.php?topic=8746.0)
Greets
Das geht schon in die richtige Richtung, aber da wird ja nur ausgelesen wie die Formulare aktuell sortiert sind.
Um das auf meine Bedingungen umzuschreiben, fehlt mir da einiges an Fachwissen.
Für weitere Hilfen wäre ich also dankbar.
Hallo,
wenn die Sortierung auszulesen ist sollte sie auch zu setzen sein.
Versuch mal nach den Befehlen für die Filterung:
Für Absteigende Sortierung:
Me.OrderBy = "[NamederSpalte] DESC"
Me.OrderByOn = True
und für Aufsteigend:
Me.OrderBy = "[NamederSpalte]"
Me.OrderByOn = True
Damit sollte es lösbar sein
Peter
Ich muss leider zugeben, dass ich das Problem immer noch nicht lösen konnte.
Leider habe ich da gleich mehrere Probleme.
1. ist die Sortierung immer absteigend. Ich habe schon versucht ASC zu verwenden, aber das funktionierte auch nicht.
2. Wird das Suchkriterium der vorherigen Suche gespeichert. Alle anderen Felder müssten also gelöscht werden. (Me.Filter = "" funktioniert nicht)
3. Werden so glaube ich keine Datensätze ausgeschlossen. Ich will ja nur Datensätze angezeigt bekommen, die Einträge in einem bestimmten Feld haben.
Im Moment sieht das ganze so aus.
Private Sub Befehl118_Click()
Dim fstr As String
On Error GoTo Err_Befehl118_Click
DoCmd.RunCommand acCmdFilterByForm
Exit_Befehl118_Click:
Exit Sub
Err_Befehl118_Click:
MsgBox Err.Description
Resume Exit_Befehl118_Click
'-----------------------------------
' Formular Sortieren
'-----------------------------------
If Me.FilterOn Then
If Not IsNull(Me.Filter) Then
fstr = Me.Filter
If Len(fstr) > 0 Then
Me.OrderBy = "[Nächster Termin]ASC"
Me.OrderByOn = True
End If
End If
End If
End Sub
Grüße und einen schönen Start in die Woche
Hallo,
Wenn du den Code hinter deinm Button tatsächlich so stehen hast wie du ihn hier 'reinkopiert hast, kann das m.E. nicht laufen!
Die Sortierung setzt du da ja in der Fehlerbehandlung!
Nimm die Sortierung raus:
Me.OrderByOn = vbNullString
Me.OrderByOn = False
Den 'alten' Filter löschst du am Besten mit
Me.Filter = vbNullString
und dann nimmst du die Filterung raus mit:
Me.FilterOn = False
und erst DANACH setzt du den neuen Filter und gleich anschließend die Sortierung
Me.Filter = "DeinFilterKriterium" 'entspricht einer gültigen WHERE Klausel ohne Schlüsselwort WHERE
Me.FilterOn = true
'-----------------------------------
' Formular Sortieren
'-----------------------------------
Dim fstr As String
If Me.FilterOn Then
If Not IsNull(Me.Filter) Then
fstr = Me.Filter
If Len(fstr) > 0 Then
Me.OrderBy = "[Nächster Termin]" 'DESC optional
Me.OrderByOn = True
End If
End If
End If
...und danach folgt erst die Fehlerbehandlung
Das sollte eigentlich schon so funktionieren ??? :-\
Grüße
Ich enttäusche dich ja nur sehr ungerne, aber 2 Probleme habe ich noch.
'Sortierung entfernen
Me.OrderByOn = vbNullString "Laufzeitfehler 5" Ungültiger Prozessaufruf oder ungültiges Argument
'Neuen Filter setzen
Me.Filter = "nächster Termin" "Laufzeitfehler 2448" Sie können diesem Objekt keinen Wert zuweisen
Bei dem setzen des Filters würde ich gerne so etwas machen wie Me.Filter = "nächster Termin len >0"
War wohl doch nichts mit dem einfacheren Problem. ???
Hallo,
es muss so heißen:
Me.OrderBy = vbNullString
Me.OrderByOn = False
Nach was willst Du denn filtern?
Me.Filter = "nächster Termin len >0"
ist unverständlich.
Wenn Du alle DS anzeigen willst, bei denen im Feld (Spalte) [nächster Termin] (Leerzeichen vermeiden!, mindestens aber Eckklammern benutzen!!) etwas eingetragen ist, dann eher so:
Me.Filter = "[nächster Termin] is not null"
Me.FilterOn=True
Genau, ich will alle Datensätze angezeigt bekommen, bei denen im Feld "Nächster Termin" ein Wert eingetragen ist.
Leider bekomme ich immer noch die Fehlermeldung. "Laufzeitfehler 2448" Sie können diesem Objekt keinen Wert zuweisen
und das an 4 Stellen, wenn ich jeweils die vorherigen Zeilen entferne.
'Sortierung entfernen
Me.OrderBy = vbNullString
Me.OrderByOn = False
'alten Filter löschen
Me.Filter = vbNullString
'Filterung rausnehmen
Me.FilterOn = False
'Neuen Filter setzen
Me.Filter = "[nächster Termin] is not null"
Me.FilterOn = True
Hallo,
lad die DB mal hoch, vorher komprimiert und gezippt...
Willst du dir das wirklich antun? ;D
Die Datenbank bin ich gerade komplett am überarbeiten.
Da kommen 2 Tabellen mehr rein. Das mit der Firmentabelle ist grausam, aber das ist ein
anderes Problem.
Viel Spass damit, danke schön und nicht zuviel lachen.
obwohl lachen ist ja gesund.
lg
[Anhang gelöscht durch Administrator]
Hallo,
na, es ist eher zum Weinen... :'( ;D
Ich habe nur den thema-bezogenen Code angesehen, der so funktioniert:
Private Sub Befehl118_Click()
DoCmd.RunCommand acCmdRemoveFilterSort
Me.Filter = "[nächster Termin] is not null" 'entspricht einer gültigen WHERE Klausel ohne Schlüsselwort WHERE
Me.FilterOn = True
Me.OrderBy = "[Nächster Termin]" 'DESC --> ABSTEIGEND
Me.OrderByOn = True
End Sub
Das ursächliche Problem zur Fehlermeldung war, dass im "formularbasierten Filter" -Modus des Forms die OrderBy- und Filter- Eigenschaften nicht gesetzt werden können (was ja doppelt gemoppelt wäre...)
Hallo,
@DF6GL
es muss so heißen:
Me.OrderBy = vbNullString
Me.OrderByOn = False
...man(n) soll beim schreiben nicht am Kopf stehen ... oder doch die Reihenfolge überprüfen wenn man die Argumente vorsortiert ;D >:( ;D
mein Fehler *grrrr*
Na so lange keine grauen Haare wachsen, sind es keine bleibenden Schäden. :D
Na das funktioniert schon sehr gut.
Ein kleiner Schönheitsfleck gibt es noch.
Wenn ich erst den automatischen Filter verwende, und danach den manuellen, steht im Feld "nächster Termin" noch "ist nicht null".
Aber Heute packe ich nur noch einige Kartons. Bin im Vorumzugsstress oder so. :-\
Vielen Dank euch beiden für die Hilfe.
Du kennst jetzt die Datenbank und wirst wissen das ich bald wieder nach Hilfe schreie. ;D
Schönen Abend noch.
Hallo,
ZitatNa so lange keine grauen Haare wachsen
tja das hättest du mir früher sagen sollen --- jetzt hab ich das Zeugs schon ein paar Jahre und werds nimmer los :'(
:D :D :D