Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Anneka am Juli 16, 2015, 10:22:27

Titel: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: Anneka am Juli 16, 2015, 10:22:27
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?
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: MaggieMay am Juli 16, 2015, 10:25:53
Hi,

stelle das Formular als Startformular ein und binde es an eine Abfrage, in der das Datumsfeld nach dem aktuellen Datum (=Date()) gefiltert wird.
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: Anneka am Juli 17, 2015, 09:51:48
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
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: MaggieMay am Juli 17, 2015, 09:54:22
Ok, dann setze einen Filter beim Laden des Formulars oder springe auf den gesuchten Datensatz mit Me.Recordset.FindFirst + Kriterium.
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: Anneka am Juli 17, 2015, 10:19:32
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.

Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: Anneka am Juli 17, 2015, 10:22:14
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
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: MzKlMu am Juli 17, 2015, 10:31:52
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.
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: Anneka am Juli 17, 2015, 10:57:39
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
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: MaggieMay am Juli 17, 2015, 10:59:14
Ganz einfach so:
Private Sub Form_Load()
    Me.Recordset.FindFirst "[Startdatum] = Date()"
End Sub
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: Anneka am Juli 17, 2015, 11:18:27
Jaaaaa! Danke MaggieMay! Endlich funktioniert!
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: daedalus78 am April 19, 2020, 01:05:03
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

Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: DF6GL am April 19, 2020, 09:17:30
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?

Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: ebs17 am April 19, 2020, 09:22:40
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
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: Beaker s.a. am April 19, 2020, 12:05:22
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
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: daedalus78 am April 19, 2020, 12:11:08
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

Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: DF6GL am April 19, 2020, 14:31:11
Hallo,

täte es dies nicht auch?:

.
.
Me.Recordset.FindFirst "[Startdatum] >= Date()"
.
.

Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: daedalus78 am April 19, 2020, 19:21:30
Diesen Ansatz hätte ich versucht, geklappt hat er leider nicht. Ist das Größer-Zeichen beim Datum ev. zu unspezifisch wenn es mehr als ein Element gibt, das größer ist?
Gruß
Wolfgang
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: MzKlMu am April 19, 2020, 19:28:20
Hallo,
Zitatgeklappt hat er leider nicht.
Das ist einer der Antworten die bei den Helfenden den Blutdruck deutlich erhöhen.  ;D Das solltest Du Dir gleich abgeöhnen.
Bitte beschreibe genau was nicht gegangen ist, ggf. mit Fehlermeldung.

Außerdem ist es natürlich sinnvoll, den Code hier zu zeigen (von der 1. bis zur letzten Zeile) mit es nicht gegangen ist.
Wie sonst soll man da einen Fehler erkennen?
Der von Franz gezeigte Code sollte nämlich funktionieren.

Nur zur Sicherheit die Fragen:
- Der Datentyp des Feldes Startdatum ist Datum/Uhrzeit ?
- Enthält das Feld auch die Uhrzeit ?
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: daedalus78 am April 19, 2020, 21:09:22
Blutdruck wollen wir nicht... das ist ganz schlecht. Dafür ist meiner jetzt in der Höhe...
Ich habe beim Öffnen diesen Code hinterlegt:

Private Sub Form_Open(Cancel As Integer)
Me.Recordset.FindFirst "[Datum] >= Date()"
End Sub

Es hat zuvor keine Fehlermeldung gegeben und hat einfach den gewünschten Wert nicht angezeigt. Keine Ahnung warum, aber jetzt klappt das. Ich versteh jetzt gerade die Welt nicht mehr... :o
Doch, jetzt... "Cancel As Integer" hat gefehlt....  :P Ich habe das jetzt mal in einer alten Version der Datenbank ausprobiert. Wenn ich die Datenbank um alle anderen Codes bereinige, dann gibt es ohne diesen Zusatz gibt es jetzt auch eine Fehlermeldung. Vermutlich habe ich da einfach weiterprogrammiert, ein anderer Code hat dann die Operation abgebrochen. Anders kann ich mir das jetzt nicht erklären.

Die Fehlermeldung lautet:
Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck Beim Öffnen eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder eine Prozedur mit demselben Namen.
* Der Azsdruck gibt möglicherweise weder den Namen eine Makros noch den Namen einer benutzerdefinierten Funktion noch [Ereignisprozedur] zurück.
* Beim Auswerten einer Funktion, eines Ereignisses oder eines Makros tratmöglicherweise ein Fehler auf.


Nein, Zeit enthält das Feld nicht - Datum lang, ist die Einstellung.

Gruß Wolfgang
Titel: Re: Öffnen Formular mit bestimmten Datensatz, wo Feld = Datum
Beitrag von: ebs17 am April 19, 2020, 21:53:50
Me.Recordset.FindFirst "[Startdatum] >= Date()"
Man sollte aber beachten, dass der Code das tut, was er beschreibt. Das erste gefundene Datum muss nicht heute, morgen oder so sein, sondern kann in ferner Zukunft liegen, es sei denn, das Recordset liegt in der nötigen Sortierung vor. Das müsste man sicherstellen, nicht nur daran glauben.