Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum

Begonnen von Anneka, Juli 16, 2015, 10:22:27

⏪ vorheriges - nächstes ⏩

Anneka

Hallo
Ich möchte beim Starten vom DB ein Formular öffnen mit bestimmten Datensatz.
Der Formular hat ein Datumfeld. Am besten wenn der Datensatz heraussucht wird, mit heutigem Datum (Funktion jetzt() ). Wenn das nicht geht, dann ein ausgewähltes Datum z.B. 01.08.2015.
Wie geht das?

MaggieMay

Hi,

stelle das Formular als Startformular ein und binde es an eine Abfrage, in der das Datumsfeld nach dem aktuellen Datum (=Date()) gefiltert wird.
Freundliche Grüße
MaggieMay

Anneka

Danke MaggieMay, nur wenn ich das mache, bekomme ich Datensatz nur mit dem heutigen Datum.
Ich will aber die Möglichkeit haben, weiter zu blättern (Tag davor, Tag danach etc.) ,aber das klappt nicht, wegen dem Filter

MaggieMay

Ok, dann setze einen Filter beim Laden des Formulars oder springe auf den gesuchten Datensatz mit Me.Recordset.FindFirst + Kriterium.
Freundliche Grüße
MaggieMay

Anneka

Ok, dann setze einen Filter beim Laden des Formulars oder springe auf den gesuchten Datensatz mit Me.Recordset.FindFirst + Kriterium

Mit dem Kriterium habe ich mehrmals versucht, aber ich kriege das mit aktuellem Datum nicht hin.
Das ist gut, wenn man Textfeld hat, aber mit Datumfeld finde ich leider nichts.


Anneka

Beim Filter auch im Formular zeigt er mir nur den Datensatz "heute". Ich will mit heute beginnen, aber weiter blättern können zu den weiteren Datensätzen

MzKlMu

Hallo,
Du darfst nicht filtern, sondern Du musst suchen. Wie von MaggieMay in #3 bereits vorgeschlagen. Zeige bitte mal den vollständigen aktuelle verwendeten Code.
Auch den im Laden Ereignis und das Kriterium.

Das solltest Du immer gleich machen und nicht erst auf Rückfrage.
Gruß Klaus

Anneka

Private Sub Form_Load()
Me.Recordset.FindFirst "[Startdatum] = Datum()" & Format(Me!Startdatum, "yyyy-mm-dd") & "#"
End Sub

Wo als Datum () will ich das heutige Datum

MaggieMay

Ganz einfach so:
Private Sub Form_Load()
    Me.Recordset.FindFirst "[Startdatum] = Date()"
End Sub
Freundliche Grüße
MaggieMay

Anneka


daedalus78

Hallo! Ich bin neu im Forum und habe als blutiger Access-Anfänger bisher alle herausforderungen mit der Suche lösen können. Vielen Dank allen Helferinnen und Helfern!
Nun habe ich eine Frage zu dieser Funktion, die ganz hervorragend funktioniert.
Zitat von: MaggieMay am Juli 17, 2015, 10:59:14
Ganz einfach so:
Private Sub Form_Load()
    Me.Recordset.FindFirst "[Startdatum] = Date()"
End Sub

Ich habe in der Datenbank nicht für jedes Datum einen Eintrag. Wenn also für heute keine Eintrag existiert, dann springt das Formular auf den datumsmäßig ersten Datensatz. Probiert hätte ich es mit
Me.Recordset.FindFirst "[Startdatum] >= Date()" aber das klappt nicht...
Ich wäre sehr dankbar, wenn Ihr mir hier helfen könnt - ich seh die Lösung derzeit nicht und mit IF - THEN hab ich mich völlig in die Ecke manövriert.
Herzlichen Gruß
Wolfgang


DF6GL

Hallo,


Was ist denn nun deine Frage, bzw. das Problem?


ZitatWenn also für heute keine Eintrag existiert, dann springt das Formular auf den datumsmäßig ersten Datensatz


Das heißt, er bleibt auf dem ersten DS stehen, weil kein passender DS gefunden wird.

Welcher Datensatz soll denn in diesem Fall herangezogen werden?


ebs17

Auf welches Datum willst Du denn fokussieren?

Falls jenes, das im Kriterium angegeben ist (hier das heutige Datum), nicht gefunden wird, springt der Datensatzzeiger auf den ersten Datensatz des Recordsets, so wie Du es erlebst.

Für eine kurz gesprungene Alternative (morgen, wenn nicht heute) könnte man folgendes anwenden:
Private Sub Form_Load()
    With Me.Recordset
        .FindFirst "[Startdatum] = Date()"
        If .NoMatch Then .FindFirst "[Startdatum] = Date() + 1"
    End With
End Sub
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

Oder, falls es grössere Lücken geben sollte

Private Sub Form_Load()
    Dim z As Integer
    With Me.Recordset
        .FindFirst "[Startdatum] = Date()"
        If .NoMatch Then
            z = 1
            Do While .NoMatch
                FindFirst "[Startdatum] = Date() + " & z
                z = z + 1
            Loop
        End If
    End With
End Sub

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

daedalus78

#14
Herzlichen Dank für die hilfreichenden Auskünfte. Ihr habt mir den rechten Weg gewiesen - auch wenn ich zugegeben den Kern meines Anliegens nicht ausformuliert habe. Ich gelobe Besserung!
Ja, es ging mir tatsächlich darum, wenn für den heutigen Tag kein Eintrag vorhanden ist, auf den morgigen Eintrag zu springen.
Tatsächlich reicht das für mich, da lediglich eine Lücke von einem Tag vorkommen kann.

Vielen herzlichen Dank allen Helferinnen und Helfern!
Wolfgang

Edit: Habe jetzt doch die "große" Lösung umgesetzt

Private Sub Form_Load()
    Dim z As Integer
    With Me.Recordset
        .FindFirst "[Startdatum] = Date()"
        If .NoMatch Then
            z = 1
            Do While .NoMatch
                .FindFirst "[Startdatum] = Date() + " & z
                z = z + 1
            Loop
        End If
    End With
End Sub