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