Woy wird bei Jahresübergang falsch angezeigt (LL12)

Hello,

ich habe eine Frage zur Kalenderwoche in LL12:
Wir möchten in Belegen die KW ausgeben, was auch innerhalb des Jahres funktioniert, nur wenn der Liefertermin im nächsten Jahr liegt, dann habe ich horende Lieferwochen.

Meine Abfrage sieht so aus:
Fstr$(Int(Woy (Date(Lieferdatum),2))-(Woy (Date(Datum),2)),"?&")

Wo ist der Fehler?

Danke und lG,
Chris

Hallo Chris,

vielen Dank für Ihren Beitrag.

Wir haben das von Ihnen beschriebene Verhalten versucht unter List & Label 19 nachzustellen - konnten jedoch keine Probleme in der Woy()-Funktion entdecken - die Wochennummern wurden bei jedem getesteten Datum korrekt zurückgeliefert.

Ist es korrekt, dass Sie versuchen herauszufinden wie viele Wochen noch zwischen dem aktuellen Datum und dem Lieferdatum liegen?

Möglicherweise sind Sie hierbei auf einen Fehler unter List & Label 12 gestoßen. Bitte haben Sie jedoch Verständnis dafür, dass wir Fehler in älteren Versionen von List & Label nicht mehr fixen können.

Sind Sie in der Lage das Verhalten auch unter List & Label 19 nachzuvollziehen?

Mit freundlichen Grüßen

Patrick Preuschoff
Technischer Support
combit GmbH

Hallo Herr Preuschoff,

danke für die Antwort.
Ja, wir wollen die Lieferwochen ausgeben.

LL12 ist in unsere Warenwirtschaft integriert und habe leider somit keine Möglichkeit das in LL19 zu testen.

Beste Grüße,
Chris

Hallo Chris,
das liegt wohl an deiner Formel:
Fstr$(Int(Woy (Date(Lieferdatum),2))-(Woy (Date(Datum),2)),"?&")

Du subtrahierst die KW des Datums von der KW des Lieferdatums.
Wenn die KW des Lieferdatum im neuen Jahr liegt, ist sie i.d.R. kleiner als die des Datums, somit liefert
Int(Woy (Date(Lieferdatum),2))-(Woy (Date(Datum),2))
einen negativen Wert.

Mit der FStr$-Funktion bin ich nicht so vertraut, wie es ausschaut, liefert “?&” den Absolutbetrag des Ergebnisses, also den Wert ohne Vorzeichen.

Wenn ich im Designer (LL19) folgenden Ausdruck eingebe
Fstr$(Int(Woy (Date(“10.01.2014”),2))-(Woy (Date(“10.12.2013”),2)),"?&")
kommt als Ergebnis
48
heraus.
Int(Woy (Date(“10.01.2014”),2))-(Woy (Date(“10.12.2013”),2))
liefert hierbei
-48

Da du aber ohnehin nicht die KW ausgeben willst, sondern nur “in wie vielen Wochen wird geliefert” rechne doch einfach
(Date(Lieferdatum) - Date(Datum)) / 7
=> (Date(Lieferdatum) - Date(Datum)) liefert dir die Anzahl der Tage zwischen den beiden Datumswerten.

Ob du das Ergebnis (Kommazahl) dann auf- oder abrundest, musst du entscheiden.

Gruß
Simon

Hallo Simon,

sorry für die späte Antwort und vielen Dank für dafür. Habe wohl etwas zu kompliziert gedacht :wink:

Aber noch eine andere Frage, wo nicht die Anzahl der Woche ausgegeben soll sondern die KW:
Wenn mein Lieferdatum wie aktuell auf dem 30.12.2014 liegt, dann ist das nach ISO die KW1/2015.
Die KW wird mit WoY auch richtig angezeigt, nur leider nicht das Jahr, weil es ja noch das Jahr 2014 ist. Somit habe ich KW01/2014 statt KW01/2015.

Gibt es dazu evt. auch eine Lösung?

LG,
Chris

Da würde ich mich erstmal ganz doof stellen:

Str$(Woy(Now()))+"/"+Cond(Woy(Now())=1 and Month(Now())=12, Str$(Year(Now())+1), Str$(Year(Now())))

Im Klartext - wenn KW=1 und Monat=12 dann nimm Jahr+1, sonst Jahr. Geht sicher auch eleganter, ich mag brute force .

G.