Access-FAQ 2.9 "Montag einer Kalenderwoche"

21/03/2010 - 10:17 von Lupus Goebel | Report spam
Gute Morsche,

evtl. bin ich ja auch nur einfach nicht wach genug um die Formel richtig
umzuschreiben.

Damit wollte ich das Datum für eine Kalenderwoche ermitteln.

\\\
Function fctKWoche()
Dim i As Byte
For i = 50 To 55
Debug.Print i, fctKWMon(i) & " bis " & fctKWMon(i + 1) - 1, _
DatePart("ww", fctKWMon(i), vbMonday, vbFirstFourDays)
Next i
End Function

Public Function fctKWMon(ArgKW As Byte, Optional ArgJahr)
Dim M As Date

If IsMissing(ArgJahr) Then ArgJahr = Year(Date)
M = DateSerial(ArgJahr, 1, 1) + (ArgKW - 1) * 7
M = M + 1 - Weekday(M, vbMonday)

If Format(M, "ww", vbMonday, vbFirstFourDays) <> ArgKW Then M=M+7

If (ArgKW=1 Or ArgKWS) And Day(M) > 4 And Day(M) < 8 Then M=M-7

fctKWMon = M
End Function
///

Geklaut habe ich das unter: http://www.donkarl.com/?FAQ2.9
Ich bringe es wieder zurück wenn ich es nemmer brauch ;-)

Nun passiert folgendes, gibt man als KW eine Zahl über 52 ein, so wird
dennoch ein Datum ermittelt. Was ja bei einer KW 53 ab und zu stimmen
kann aber sicherlich nicht bei 54, 55 .

Wie veràndere ich die Formel so, das nur die Kalenderwochen angezeigt
werden, die es auch wirklich gibt?


Ziel: In einem Textfeld wird eingegeben, welche Kalenderwochen angezeigt
werden sollen. Dann benötige ich eine Prüfung ob es diese Kalenderwoche
denn überhaupt auch gibt. Unter Access 2007

P.S. fctKWoche ist nur eine Funktion zum Testen und zum Überprüfen, der
eigentliche Zweck ist ein anderer.

MfG - Lupus Goebel
Der Sumpf- Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de http://foto.lupusdw.de)
Urlaub macht man in Irland: http://www.eaglesnest-bb.com/
 

Lesen sie die antworten

#1 Matthias Körner
21/03/2010 - 11:28 | Warnen spam
Hallo Lupus,

"Lupus Goebel" schrieb im Newsbeitrag
news:
Gute Morsche,

evtl. bin ich ja auch nur einfach nicht wach genug um die Formel richtig
umzuschreiben.

Damit wollte ich das Datum für eine Kalenderwoche ermitteln.

\\\
Function fctKWoche()
Dim i As Byte
For i = 50 To 55
Debug.Print i, fctKWMon(i) & " bis " & fctKWMon(i + 1) - 1, _
DatePart("ww", fctKWMon(i), vbMonday, vbFirstFourDays)
Next i
End Function

Public Function fctKWMon(ArgKW As Byte, Optional ArgJahr)
Dim M As Date

If IsMissing(ArgJahr) Then ArgJahr = Year(Date)
M = DateSerial(ArgJahr, 1, 1) + (ArgKW - 1) * 7
M = M + 1 - Weekday(M, vbMonday)

If Format(M, "ww", vbMonday, vbFirstFourDays) <> ArgKW Then M=M+7

If (ArgKW=1 Or ArgKWS) And Day(M) > 4 And Day(M) < 8 Then M=M-7

fctKWMon = M
End Function
///

Geklaut habe ich das unter: http://www.donkarl.com/?FAQ2.9
Ich bringe es wieder zurück wenn ich es nemmer brauch ;-)

Nun passiert folgendes, gibt man als KW eine Zahl über 52 ein, so wird
dennoch ein Datum ermittelt. Was ja bei einer KW 53 ab und zu stimmen kann
aber sicherlich nicht bei 54, 55 .

Wie veràndere ich die Formel so, das nur die Kalenderwochen angezeigt
werden, die es auch wirklich gibt?


Ziel: In einem Textfeld wird eingegeben, welche Kalenderwochen angezeigt
werden sollen. Dann benötige ich eine Prüfung ob es diese Kalenderwoche
denn überhaupt auch gibt. Unter Access 2007

P.S. fctKWoche ist nur eine Funktion zum Testen und zum Überprüfen, der
eigentliche Zweck ist ein anderer.



vielleicht kommst Du damit weiter:
http://www.access-home.de/cms/?kat0&cms_id19

Gruß
Matthias

Ähnliche fragen