Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Claudia1 am Juni 28, 2021, 12:59:16

Titel: Zum aktuellen Datum springen
Beitrag von: Claudia1 am Juni 28, 2021, 12:59:16
Hallo zusammen,

ich bin eine völlige Anfängerin in Access und versuche mich gerade durchzukämpfen :-)

Ich starte ein Formular und in der ersten Spalte stehen Arbeitstage (01.01.2021 bis 31.12.2030).
Der Spaltenname lt. "Datum". Das Format ist dd.mm.yyyy (also bspw. 28.06.2021).
Da die Liste sehr lang ist, würde ich gerne beim Start in die Zeile des aktuellen Datums springen, so dass
ich nicht scrollen muss.

Ich habe diesen VBA Code gefunden:
Me.Recordset.FindFirst "Datum= Date()"
Aber das funktioniert nicht. Kann mir jemand helfen?

Danke und Grüße
Claudia
Titel: Re: Zum aktuellen Datum springen
Beitrag von: Beaker s.a. am Juni 28, 2021, 13:03:50
Hallo Claudia,
ZitatAber das funktioniert nicht.
So, so ...
Und wie äussert sich das?

Me.Recordset.FindFirst "Datum = " & Date()
gruss ekkehard


P.S.: zur Vertiefung (https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/ampersand-operator)
Titel: Re: Zum aktuellen Datum springen
Beitrag von: Claudia1 am Juni 28, 2021, 13:17:07
Hallo Beaker,

Danke für die schnelle Antwort.

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

Der Code erzeugt einen Laufzeitfehler 3077. "Synthaxfehler in Zahl in Ausdruck."
Wo kann der Fehler liegen?
Titel: Re: Zum aktuellen Datum springen
Beitrag von: Maxel am Juni 28, 2021, 13:20:21
Du musst den vorgeschlagenen Code auch richtig abschreiben/kopieren.

Es sollte auch so gehen:
Me.Recordset.FindFirst "Datum= Date"
Titel: Re: Zum aktuellen Datum springen
Beitrag von: DF6GL am Juni 28, 2021, 19:19:17
Hallo,


stochern im Nebel und teils unzutreffende Vorschläge.

Zitat... in der ersten Spalte stehen Arbeitstage (01.01.2021 bis 31.12.2030).

Das sind keine Arbeitstage, das sind Datumsangaben. Und die müssen den Datentyp "Datum/Uhrzeit" haben, wenn man damit in der DB richtig umgehen will.

Unter der Voraussetzung, dass das Tabellenfeld "Datum" ( btw:  schlecht gewählter Name!) den Datentyp "Datum/Uhrzeit" besitzt (Formatierung spielt keine Rolle) und auch keinen Zeitanteil enthält, ist solches anzuwenden:


Me.Recordset.FindFirst "Datum = Date()"    (dies wurde anfänglich schon versucht, deshalb tippe ich auf einen Zeitanteil im Feld "Datum".)

oder
Me.Recordset.FindFirst "Datum = " & Format (Date,"\#yyyy-mm-dd\#")


Wenn ein Zeitanteil vorhanden ist, muss dieser berücksichtigt  werden:


Me.Recordset.FindFirst "Datum >= Date()  and Datum < Date()+1"



Die Klammern bei Date() sind zwingend in einem SQL-Statement, in VBA dagegen sind sie nicht erforderlich.