http://www.tksoft-online.de

ALLE |0-9 |A |B |C |D |E |F |G |H |I |J |K |L |M |N |O |P |Q |R |S |T |U |V |W |X |Y |Z

Themen MS-Access Bsp. DB's Bsp. Downloads Datum und Zeit

Suche nach Schlagwort : MS-Access, VBA, Kalenderwoche, DIN1355


Berechnung von Kalenderwochen (DIN 1355) PDF Drucken E-Mail
Benutzer Bewertung: / 2
SchlechtSehr gut 
 

Geschrieben von TommyK, am 03-01-2008 23:00

Views : 8424    

Favoriten : Keine

Veröffentlicht in : MS-Access Bsp. DB's, Bsp. Downloads Datum und Zeit

Schlüsselworte : MS-Access, VBA, Kalenderwoche, DIN1355

Problemstellung:

immer wieder ein Thema ist im Forum der Umgang mit Kalenderwochen.
Ermittlung der Kalenderwoche für Datum nach DIN 1355 und Ermittlung eines Datums und
Wochentages aus einer Kalenderwoche.

Voraussetzungen:

Das Bsp ist unter A97,A00, AXP, A03 lauffähig, unter A07 wurde es nicht getestet.

Funktionsweise:

Die Errechnung der Kalenderwoche (KW) aus einem Datum geht ja noch.

Wobei die pure Formatierung eines Datums in die KW auch Fehler bei Berechnung von
Jahreswechseln beinhaltet.
Syntax:

Dim varKW As Variant
 
    varKW = Format("DeinDatum", "ww", vbMonday)
 
    
'oder
 
    varKW = Format("DeinDatum", "ww/yyyy", vbMonday)


Genauere Ergebnisse erhält man dann schon mit speziellen Funktionen:

Function Kalenderwoche(XDatum As Variant, fModus As BooleanAs String
Dim 
x, y, z
    Kalenderwoche = ""
If Not IsDate(XDatum) Then Kalenderwoche = "": Exit Function
    XDatum = CDate
(XDatum)
    x = Year(XDatum)
    z = Format(XDatum, "ww", vbMonday, vbFirstFourDays)
    y = Int((XDatum - DateSerial(Year(XDatum), 1, 1) + _
        ((WeekDay(DateSerial(Year(XDatum), 1, 1)) + 1) 
Mod 
7) - 3) / 7) + 1
 
    
If y = 0 Then
        z = Format(DateSerial(x - 1, 12, 31), "ww", vbMonday, vbFirstFourDays)
        
If z >= 52 Then 
x = x - 1
    
ElseIf y > 52 And (WeekDay(DateSerial(x, 12, 31)) - 1) Mod 7 <= 3 Then
        If 
Format(XDatum + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then z = 1
        
If z = 1 Then 
x = x + 1
    
End If
    If fModus = True Then
        Kalenderwoche = Right("00" & z, 2) & "/" & Right("0000" & x, 4)
    
Else
        Kalenderwoche = Right("00" & z, 2)
    
End If
End Function

 

In dieser Funktion werden Jahreswechsel richtig berechnet.
Folgende Argumente müssen übergeben werden:

XDatum= ein formatiertes Datum (sonst gibt die Funktion "" zurück)
boolModus True =Format "ww/jjjj", False =Format "ww"

Syntax:

Dim Testdatum as Date
Dim strKW as String
Testdatum = #12/31/2002#   ' Test mit 31.12.2002
strKW = Kalenderwoche(Testdatum, True)


Jetzt kommen wir aber zur rekursiven Berechnung, sprich ein Datum aus einer KW zu ermitteln.
Drei Argumente werden benötigt, die KW, das Jahr und den Wochentag.
Die Funktion "GetDateFromWeek" gibt dann das Datum zurück.
Listing s. Bsp-DB

Argumente:

nWeek = KW z.B 50
nDayOfWeek = Wochentag z.B. 1=Montag
nYear =Jahr z.B. 2003

Jetzt kann man noch alle Tage der gewählen KW in einem Listenfeld anzeigen lassen. (s. Bsp-DB)
Das Füllen des Listenfeldes soll hier aber jetzt nicht näher beschrieben werden,
da dies ein extra Thema ergibt.


Image Downloaddetails der Bsp-DB

 

Letztes Update : 02-04-2008 09:56

Favoriten Drucken Als E-mail versenden Ähnliche Artikel

Benutzerkommentare  RSS feed Kommentar
 

Durschnittliche Benutzerbewertung

   (0 Stimmen)

 

Angezeigt werden 1 von 1 Kommentar(en)

1. 18-01-2010 13:14

Funktion gibt bei mir falsche KW aus.
Hallo, 
 
super Danke für den Tipp, doch irgendwas mache ich falsch. 
 
Bei 
Debug.Print Kalenderwoche(2010-01-18, False) gibt keine Ausgabe, sollte aber KW 03 sein. 
 
Die Funktion habe ich als Modul eingefügt. 
 
Ich brauche nur die KW, also False. 
 
Vielen Dank im Voraus. 
 
MAG
Gast
Mag

Angezeigt werden 1 von 1 Kommentar(en)

Füge deinen Kommentar hinzu



mXcomment 1.0.6 © 2007-2010 - visualclinic.fr
License Creative Commons - Some rights reserved
Keine Beiträge bisher.

Diskutiere...
< Zurück

Google Site Search

Google
Web TKSoft-Online
Google PageRank modul - Camelpark SEO centrum

Login

Latest Forum Posts

Last Comments

Einlesen von Dateien in eine...
DLL Fehler?
Hallo Swear, das ist keine...
11.02.10 15:37 Mehr...
von TommyK

Einlesen von Dateien in eine...
dll Probleme
Echt gute Programmsequenz. Ich hab nur...
11.02.10 10:40 Mehr...
von Swear

Berechnung von Kalenderwochen...
Falsche KW
Hallo MAG, schreibe: Dann erhälst...
18.01.10 17:10 Mehr...
von TommyK

Berechnung von Kalenderwochen...
Funktion gibt bei mir falsche KW aus.
Hallo, super Danke für den Tipp,...
18.01.10 13:14 Mehr...
von Mag

Passwort Generator
Oh Mann...
Danke Tommy, manchmal scheint man...
08.12.09 06:25 Mehr...
von Uwe

Download Statistik

1 Kategorien:33 1 Files:186 1 Downloads:142129 1 Traffic:
JoomlaWatch Stats 1.2.8_05-dev by Matej Koval