dr.cornwallis
Goto Top

Access 2010 Kriteruim Uhrzeit für mehrere Tage

Liebe Gemeinde,

ich habe folgende Datensätze in einem Table, jeder Datensatz beinhaltet:

einen Wochentag (Montag Dienstag Mittwoch etc.....)
und eine Uhrzeit..(05:00:00)

Mit diesen Daten wird ein Datenblatt erstellt bzw. gedruckt(mit einer Query, dann Report)

Das Problem ist dass ich die Datenblätter vom aktuellen Wochentag ab 06:00 bis zum nächsten Tag bis 06:00 filtern muss.
Dh. es soll Datensätze von heute zb. 10:00 und von morgen zb 03:00 beinhalten, morgen(Mittwoch) 10:00 hingegen nicht..

Bei den Wochentagen habe ich bereits das Kriterium "zwischen Wochentag(Datum()) und Wochentag(Datum()+1)" eingegeben, funktioniert auch, aber wie kann ich dann die Uhrzeit richtig filtern?


Info zur DB:

Die Datenbank soll ein Fahrplan werden, die Routen sind für die jeweiligen Wochentage fixiert, diese ändern sich nicht.
Drückt man im Frontend nun den Button "Fahrplan drucken", so soll der Report mit den Datensätzen von heute ab 06:00 bis morgen 06:00 generiert werden.

Danke für eure Hilfe!

Gruß

Dr.

Content-ID: 323679

Url: https://administrator.de/contentid/323679

Ausgedruckt am: 25.11.2024 um 00:11 Uhr

Biber
Lösung Biber 13.12.2016 um 17:03:35 Uhr
Goto Top
Moin Dr.Cornwallis,

ich hab das jetzt so verstanden, dass du gar kein echtes Datum/Uhrzeitfeld in deiner "Table" hast, sondern

einen Wochentag (Montag Dienstag Mittwoch etc.....)
--> ein Textfeld mit den Strings "Montag", "Dienstag" usw???
und eine Uhrzeit..(05:00:00)
--> das ist aber ein Feld vom Access-Datentyp "Datum/Uhrzeit", hoffe ich. Oder auch nur ein Text?

Ich habe keine Ahnung was oder wieso es bei dir heute funktioniert mit einem Kriterium "zwischen Wochentag(Datum()) und Wochentag(Datum()+1)"

In meiner Welt müsste Access das am heutigen Tag übersetzen in "zwischen Text 'Dienstag' und Text 'Mittwoch'"...
Rein alphanumerisch wären in dem Bereich aber auch Texte wie "Donnerstag" und "Freitag" enthalten.

Jedenfalls... wenn du sagst, es funktioniert heute so, dann nehme ich es mal so hin.

Von der Logik her musst du bei Berücksichtigung der Uhrzeit aber die "zwischen"-Syntax ändern in die zwei Bedingungen
  • Wochentag=Wochentag(Datum()) UND Uhrzeit >= #06:00#
  • Wochentag=Wochentag(Datum()+1) UND Uhrzeit < #06:00#

...und diese beiden Bedingungen in der WHERE-Clause so verknüpfen
...
WHERE ( ( bedingung1 ) OR (bedingung2) )

Die Uhrzeitprüfung kannst du auch auf ein paar andere Arten formulieren, wenn dir diese Eingeberei mit Rauten (#05:00#) zu kryptisch ist.
Eine Variante ging über "wenn die Stunde kleiner 6 ist", also über DatTeil()/DatePart(uhrzeitfeld, "h"), eine andere über "Format(uhrzeitfeld, 'hh:nn') >= '06:00' "

Aber ich würde wirklich lieber erstmal die Feldnamen und Datentypen deiner Table wissen, bevor ich da ein SQL formuliere.

Grüße
Biber
Dr.Cornwallis
Dr.Cornwallis 13.12.2016 um 17:50:57 Uhr
Goto Top
Hi Biber,

ich hab das so gemacht:

1. Table: tbl_Wochentage
Dort sind die Wochentage als Strings eingetragen(nehme mal an das geht auch eleganter), eine 2. Spalte daneben mit vbWochentags Werten(1-7).
Über ein Formular werden dann die Werte zusammengesetzt und in einen weiteren Table geschrieben(tbl_hauptdaten) das Textfeld im Formular schreibt die eingetragene Zeit in den Table. Die Wochentage werden über ein Kombifeld ausgewählt(es sind noch mehrere Kombifelder im Formular aber diese spielen für das Problem keine Rolle).

Aus diesem Table habe ich eine Abfrage erstellt, wo dann die Kriterien für Uhrzeit und Wochentag hinterlegt sind.

Das Uhrzeit Feld in der Tabelle hat den Datentyp "Datum/Uhrzeit".

Gruß

Dr.
Dr.Cornwallis
Dr.Cornwallis 14.12.2016 um 07:37:16 Uhr
Goto Top
Moin Biber,

vielen Dank für deine Hilfe, funktioniert perfekt mit den beiden WHERE Klauseln!

Gruß

Dr.