Neuigkeiten:

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

Mobiles Hauptmenü

Abfragekriterien =Datum()+1 / +2 / +3

Begonnen von dobby110, April 03, 2023, 10:27:03

⏪ vorheriges - nächstes ⏩

dobby110

Hallo zusammen,

ich hoffe mir kann jemand weiterhelfen. Und zwar habe ich aktuell ein kleines Problem mit meinen Abfragen.

Und zwar habe ich drei Abfragen gebastelt, welche mir die Datensätze mit Datum + 1 / Datum + 2 und Datum + 3 anzeigen sollen. Allerdings möchte ich das Abfrageergebnis auf Wochentage beschränken und nutze aktuell die folgenden "Codes"

Für die Abfrage Datum +1:
Wenn(Wochentag(Datum()+1;2)<6;Datum()+1;Datum()+3-Wochentag(Datum()+1;2))Funktioniert von Montag bis Donnerstag gut, Freitags bekomme ich ein falsches Ergebnis

Für die Abfrage Datum +2:
Wenn(Wochentag(Datum()+2;2)<6;Datum()+2;Wenn(Wochentag(Datum()+2;2)=6;Datum()+4;Datum()+3))

Für die Abfrage Datum +3:
Wenn(Wochentag(Datum()+3;2)<6;Datum()+3;Wenn(Wochentag(Datum()+3;2)=7;Datum()+5;Datum()+4))Den Code hatte ich Donnerstags angepasst, weil ich ein falsches Ergebnis erhalten hatte. Dann hat es wieder funktioniert und Freitags war das Ergebnis erneut falsch.

Kann mir jemand sagen wie ich die Abfrage anpassen muss, um an allen Tagen ein richtiges Ergebnis zu erhalten?



Beaker s.a.

Musst du ab Montag zählen, nicht schon ab Sonntag; - FirstDayOfWeek.
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)

MzKlMu

Hallo
die beste Lösung wäre eine Kalendertabelle die alle Tage eines ausreichenden Zeitraums (können 20 Jahre und mehr sein) umfasst.
In diese Tabelle kommt auch ein Feld für die Wochentagsnummer.
Feiertage könnte man da auch noch integrieren.
Eine einfache Abfrage mit <6 und >= Datum() sowie TOP 3 zeigt nur die nächsten 3 Arbeitstage.
Gruß Klaus

dobby110

Zitat von: Beaker s.a. am April 03, 2023, 11:18:58Musst du ab Montag zählen, nicht schon ab Sonntag; - FirstDayOfWeek.

Danke, mein Verständnis ist, dass sich die Formel auf den Montag bezogen hat.
Wenn(Wochentag(Datum()+1;2)<6Der Rückgabetyp 2 bedeutet, dass Montag als 1 und Sonntag als 7 gezählt werden. Also eigentlich genau wie gewünscht.
Oder liegt an dieser Stelle den Fehler?

Habe jetzt auch mal versucht, "<6" durch "<=5" zu ersetzen. Wobei das vermutlich keinen Unterschied macht.
Ob das zum richtigen Ergebnis führt, sehe ich aber erst am Donnerstag und Freitag. Für heute würde es passen.

Beaker s.a.

?WeekDay(Date,vbSunday)
 2 '= Montag; Freitag = 6, kann nicht < sein
?WeekDay(Date,vbMonday)
 1 '= Montag; Freitag = 5, ist < 6
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)

MzKlMu

Hallo,
@Ekehard
die 2 in der Formel ist die VBA Konstante für vbMonday. In Abfragen (SQL) wird vbMonday nicht erkennt, da muss die 2 genommen werden.

Über die Logik habe ich aber nicht weiter nachgedacht, da ich die Kalendertabelle bevorzugen würde.

@dobby110
Kannst Du mal etwas zu den 3 Datumswerten sagen, sollen die in Feldern gespeichert werden ?
Was haben die 3 Datumsfelder für eine Bedeutung.
Gruß Klaus

dobby110

im Grunde handelt es sich nur um eine 3-Tage-Vorschau. Die Vorgänge werden immer auf ein Wiedervorlage-Datum gelegt und die Kollegen haben sich gewünscht, eine kleine Vorschau einzubauen.

Dazu habe ich drei Abfragen (Datum +1 / +2 / +3) generiert. Die Anzeige erfolgt dann in einem Formular, in dem ich  drei Unterformulare eingebaut habe. In jedem Unterformular werden die einzelnen Abfrageergebnise angezeigt. Kann mal ein Screenshot anfügen, wie das aussieht. Heute funktioniert es, aber sobald ein Wochenende "im Weg steht" bekomme ich ein falsches Ergebnis.

Im Grunde will ich einfach nur erreichen, dass die Vorschau wie gewünscht funktioniert, so dass die Kollegen auf einen Blick sehen können, was die nächsten drei Tage ansteht.



ebs17

Zitat... im Grunde handelt es sich nur um eine 3-Tage-Vorschau. Die Vorgänge werden immer auf ein Wiedervorlage-Datum gelegt
Da darf man wohl unterstellen, dass solche Wiedervorlagen nicht auf Tage des Wochenendes gelegt wurden, womit Wochenenden nicht zwingend nachfolgend aussortiert werden müssen.

Wenn man unterstellt, dass ein Unterformular mit Sortierung nach Wiedervorlage genügt, kann man sich über TOP 3 die nächsten drei Tage holen:
Dim sFilter As String
sFilter = "WV IN (SELECT TOP 3 X.WV FROM (SELECT DISTINCT WV FROM tblVorgang) AS X WHERE X.WV > Date() ORDER BY X.WV)"
Mit freundlichem Glück Auf!

Eberhard

dobby110

Vielen Dank für die Hilfe.
Ich versuche es zunächst mit diesem angepassten "Code"

Wenn(Wochentag(Datum();2)<=2;Datum()+3;Wenn(Wochentag(Datum();2<=5;Datum()+5;Wenn(Wochentag(Datum();2)=6;Datum()+4;Datum()+3)))
Wenn das nicht funktioniert, werde ich den Ansatz mit der Kalendertabelle verfolgen.

ebs17

Bei den schwerwiegenden Überlegungen und Versuchen solltest Du vielleicht unmittelbar einfließen lassen, ob womöglich neben Wochenenden auch Feiertage in der Anzeige auszuschließen wären.
Mit freundlichem Glück Auf!

Eberhard