PDA

Vollständige Version anzeigen : KW sortieren


Pusteblume
09.05.2011, 10:13
Hallo zusammen,

habe eine Frage: und zwar möchte ich in meiner Abfrage die Kalenderwoche herausbekommen. Dies habe ich mit folgender Funktion gelöst:
KW: Format([Datum];"ww";2;2)
Wenn ich die Abfrage nun in Excel importiere und eine Pivottabelle erstelle, zeigt er mir die KWs in folgender Reihenfolge:
1
10
11
12
2
3

Kann man die Funktion in der Abfrage erweitern, dass immer eine 0 vor der KW steht, wenn diese einstellig ist? Oder habt ihr eine andere Idee, damit die Kalenderwochen richtig geordnet sind?

LG Pusteblume

gpswanderer
09.05.2011, 10:15
Hallo,
so sollte das passen:
KW: Format(Format([Datum];"ww";2;2);"00")

Josef P.
09.05.2011, 10:20
Hallo!

Format erzeugt einen Text => Textsortierung.

Du könntest als Alternative zur Format-Funktion die DatePart-Funktion probieren.
KW: datepart("ww";[Datum];2;2)

mfg
Josef

Pusteblume
09.05.2011, 12:32
Datepart habe ich versucht, brachte aber nicht das gewünschte ergebnis. mit KW: Format(Format([Datum];"ww";2;2);"00") hats das gewünschte ergebnis gebracht :)

hätte noch eine weitere frage: und zwar gebe ich in das formular werte ein. als felddatentyp ist hierbei zahl und double gewählt. Wenn ich dort jedoch keine werte eingebe, zeigt er mir automatisch als wert 0 an. wie kann ich das unterlassen, dass da quasi nur ein wert steht, wenn ich was eingebe und das feld ansonsten leer ist?

Scorefun
09.05.2011, 12:49
Dann steht wahrscheinlich in den Feldeigenschaften der Tabelle als Standartwert =0

Oder in den Feldeigenschaften im Formular (was bei der Neuanlage automatische von den tabelleneigenschaften übernommen wird)

Pusteblume
09.05.2011, 12:53
Jo, das wars. Doch so einfach. Vielen Dank!!

Lanz Rudolf
09.05.2011, 18:25
Hallo
nur so als Tip bei mir sieht die Kalenderwoche immer so aus:
ww/jjjj
Kalenderwoche nach DIN 1355
nach TommyK
In dieser Funktion werden
Jahreswechsel richtig
berechnet.
Folgende Argumente müssen
übergeben werden:
XDatum=formatiertes Datum
(sonst gibt die Funktion ""
zurück)
boolModus
True=Format "ww/jjjj",
False=Format "ww"

Function Kalenderwoche(XDatum As Variant, fModus As Boolean) As Variant
Dim x As Variant
Dim y As Variant
Dim z As Variant
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