Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: derNeue87 am Mai 09, 2022, 08:44:15

Titel: Einträge in einer Datenbank in einem bestimmten Zeitraum zählen
Beitrag von: derNeue87 am Mai 09, 2022, 08:44:15
Hallo und guten Morgen,
ich bin neu hier, da ich Hilfe bei einem kleinen Projekt brauche, bei dem ich nicht weiterkomme.

Ich habe eine Spalte in einer DB des Typs Datum/Zeit. Hier möchte ich nun alle Einträge eines bestimmten Zeitraums zählen. Leider bekomme ich dies mit DCount nicht so wirklich hin. Wie muss das aussehen, wenn ich die Anzahl der Einträge beispielsweise zwischen 09.05.2022 08:00:00 und 09.05.2022 09:00:00 angezeigt haben möchte?

Schon mal Danke im Voraus.
Titel: Re: Einträge in einer Datenbank in einem bestimmten Zeitraum zählen
Beitrag von: DF6GL am Mai 09, 2022, 10:30:36
Hallo,


z. B.:



Dim datVon as Date
Dim datBis as Date
Dim Anz as Long

datVon = #05/09/2022 08:00:00#
datBis = #05/09/2022 09:00:00#

Anz = DCount("*","tblUnbekannteTabelle","UnbekanntesDatumsFeld between " & datVon & " And " & datBis)
Titel: Re: Einträge in einer Datenbank in einem bestimmten Zeitraum zählen
Beitrag von: derNeue87 am Mai 09, 2022, 12:14:22
Hallo DF6GL,
schon mal Danke, aber leider führt dies zu einem Fehler bei mir:
Laufzeitfehler '3075' Syntaxfehler (fehlender Operator in Abfrageausdruck 'Datum_Zeit between 09.05.2022 08:00:00 And 09.05.2022 09:00:00'.

Der Code lautet:
Private Sub Form_Timer()
Dim ZeitStart As Date
Dim ZeitEnde As Date
Dim aktuellesDatum As Date
Dim aktuelleZeit As Date
Dim anz As Long
aktuellesDatum = Date
aktuelleZeit = Format(Now, "hh:mm:ss")
Me!txt_datum = aktuellesDatum
ZeitStart = #5/9/2022 8:00:00 AM#
ZeitEnde = #5/9/2022 9:00:00 AM#
anz = DCount("DMC", "Tab_Teile", "Datum_Zeit between " & ZeitStart & " And " & ZeitEnde)
Me!txt_anz = anz
Me.Requery
Me.Repaint
End Sub
Titel: Re: Einträge in einer Datenbank in einem bestimmten Zeitraum zählen
Beitrag von: DF6GL am Mai 09, 2022, 12:41:44
Hallo,


Private Sub Form_Timer()
Dim strZeitStart As String
Dim strZeitEnde As String
'''Dim aktuellesDatum As Date
'''Dim aktuelleZeit As Date



'''aktuellesDatum = Date
'''aktuelleZeit = Format(Now(), "hh:mm:ss")

Me!txt_datum = Date    '''aktuellesDatum

strZeitStart = "#05/09/2022 08:00:00#"
strZeitEnde = "#05/09/2022 09:00:00#"


Me!txt_anz = DCount("*", "Tab_Teile", "Datum_Zeit between " & strZeitStart & " And " & strZeitEnde)




'''Me.Requery
'''Me.Repaint

End Sub
Titel: Re: Einträge in einer Datenbank in einem bestimmten Zeitraum zählen
Beitrag von: MzKlMu am Mai 09, 2022, 12:44:07
Hallo,
im Code gibt es noch überflüssige Variablen. Außerdem wendet man so niemals einen Formatbefehl an.
Formatiert wird ausschließlich in Formularen und Berichten. Mit Format erzeugt man auch Text und der ist hier ungeeignet. Die Zeit lässt sich auch direkt zuweisen.
Private Sub Form_Timer()
Dim ZeitStart As Date
Dim ZeitEnde As Date
Dim aktuelleZeit As Date
aktuelleZeit = Time
Me.txt_datum = Date
ZeitStart = #5/9/2022 8:00:00 AM#
ZeitEnde = #5/9/2022 9:00:00 AM#
Me.txt_anz = DCount("*", "Tab_Teile", "Datum_Zeit between " & ZeitStart & " And " & ZeitEnde)
Me.Requery
Me.Repaint
End Sub
Zum Zählen würde ich den * verwenden.
Ansonsten kann ich jetzt keinen Fehler erkennen.
Die Verwendung des Formulartimers (Form_Timer) ist mir auch ein Rätsel, wozu steht das im Timerereignis ?

PS:
Bitte keine vollständigen Beiträge zitieren und 2x schon gar nicht. In direkter Antwort ist meist kein Zitat notwendig.
Und lösche im Code überflüssige Leerzeilen, dann wird das kürzer und übersichtlicher.
Titel: Re: Einträge in einer Datenbank in einem bestimmten Zeitraum zählen
Beitrag von: PhilS am Mai 09, 2022, 12:52:46
So wie sie in dem Code hier verwendet werden, müssen die Variablen ZeitStart und ZeitEnde Strings sein und auch die Begrenzer enthalten.
Siehe: 6.8 Datum an SQL-String übergeben (https://www.donkarl.com?FAQ6.8)
Titel: Re: Einträge in einer Datenbank in einem bestimmten Zeitraum zählen
Beitrag von: derNeue87 am Mai 09, 2022, 13:49:46
Danke an Alle.
Als string hat es nun funktioniert.