/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Årsskifte dato problem
Fra : Ukendt


Dato : 02-12-06 10:08

Hej NG
Er disse 2 funktioner ikke løsningen på årsskifte(ugenr) problemematik i
Access...

Function finddato(ugenr, aar)
ugedag = 1
dato = ugedag & "-01-" & aar
dag1 = datepart("ww", dato, vbMonday, vbFirstFourDays)
while dag1 <> 1
ugedag = ugedag + 1
dato = ugedag & "-01-" & aar
dag1 = datepart("ww", dato, vbMonday, vbFirstFourDays)
wend
dato = clng(ugedag) & "-01-" & aar
dato = DateAdd("d", 7*(ugenr-1), dato)
finddato = dato
End Function


Function WOY (MyDate As Date) As Integer ' Week Of Year
WOY = Format(MyDate, "ww", vbMonday, vbFirstFourDays)
If WOY > 52 Then
If Format(MyDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then WOY = 1
End If
End Function

Jeg kan ikke helt gennemskue hvordan de skal forenes, for at virke - kan i
hjælpe...
Bjarne



 
 
Lars Hoffmann (02-12-2006)
Kommentar
Fra : Lars Hoffmann


Dato : 02-12-06 12:18


bsn wrote:
> Hej NG
> Er disse 2 funktioner ikke løsningen på årsskifte(ugenr) problemematik i
> Access...

Hvad er præcis årssskifte problematikken i Access?


Jens Gyldenkærne Cla~ (02-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-12-06 12:30

Lars Hoffmann skrev:

>> Er disse 2 funktioner ikke løsningen på årsskifte(ugenr)
>> problemematik i Access...

> Hvad er præcis årssskifte problematikken i Access?

Den her: <http://support.microsoft.com/kb/200299> (og fejlen ligger
ikke i Access, men i den vb/vbscript-funktion der leverer
ugenummeret).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ukendt (02-12-2006)
Kommentar
Fra : Ukendt


Dato : 02-12-06 12:44


"Lars Hoffmann" <lars@intercambiodvd.com> skrev

bsn wrote:
> Hej NG
> Er disse 2 funktioner ikke løsningen på årsskifte(ugenr) problemematik i
> Access...

Hvad er præcis årssskifte problematikken i Access?

Så vidt jeg har forstået, er det når der optræder 53 uger i året...
her er problemet beskrevet: http://support.microsoft.com/kb/200299
Bjarne



Jens Gyldenkærne Cla~ (02-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-12-06 12:34

bsn skrev:

> Er disse 2 funktioner ikke løsningen på årsskifte(ugenr)
> problemematik i Access...

WOY-funktionen løser problemet med forkerte ugenumre. Hvis du skal
bruge et beregnet ugenummer i en anden funktion (fx din finddato-
funktion), er det en god ide at bruge WOY-funktionen til at levere
det for at undgå fejl.


> Function finddato(ugenr, aar)

Hvad er formålet med finddato?

> ugedag = 1
> dato = ugedag & "-01-" & aar
> dag1 = datepart("ww", dato, vbMonday, vbFirstFourDays)

Note: Det er en dårlig ide at anvende globale eller ikke-erklærede
variable i en funktion. Husk at "dimme" (Dim ugedag, dato, dag1)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ukendt (02-12-2006)
Kommentar
Fra : Ukendt


Dato : 02-12-06 14:19


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
> WOY-funktionen løser problemet med forkerte ugenumre.

Jeg skal bare have vist det rigtige ugenr.
Kan du forklare funktionen...???

> Hvis du skal
> bruge et beregnet ugenummer i en anden funktion (fx din finddato-
> funktion), er det en god ide at bruge WOY-funktionen til at levere
> det for at undgå fejl.

Nej...

>
>> Function finddato(ugenr, aar)
>
> Hvad er formålet med finddato?

Den kan du godt se bort fra - det er ikke en funktion jeg bruger / har
brugt...

>
> Note: Det er en dårlig ide at anvende globale eller ikke-erklærede
> variable i en funktion. Husk at "dimme" (Dim ugedag, dato, dag1)

Skriver det bag øret...hvis jeg kan finde en plads...
Bjarne




Jens Gyldenkærne Cla~ (02-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-12-06 23:15

bsn skrev:

> Jeg skal bare have vist det rigtige ugenr.
> Kan du forklare funktionen...???

Jeg kan prøve.

Fejlen med ugenummeret går ud på at den sidste mandag i december i
visse situationer fejlagtigt får ugenummeret 53 i stedet for 1. Når
det sker, er det kun mandagen der er berørt. Ser man fx på
årsskiftet 2007-2008 (som er førstkommende scenario hvor fejlen
optræder), giver den indbyggede ugenummerfunktion følgende
resultat:

Date: 30-12-2007 Day: sø Week: 52
Date: 31-12-2007 Day: ma Week: 53
Date: 01-01-2008 Day: ti Week: 1

Uge 53 i 2007 består altså - ifølge vb/vbscript - af én dag, nemlig
mandag den 31. december. Det er bare ikke korrekt, da et ugenummer
altid er det samme fra starten af ugen (mandag efter vores
standarder) til slutningen af ugen. 2007 har kun 52 uger, og mandag
den 31. december 2007 hører derfor til uge 1 (i år 2008).

WOY-funktionen eliminerer fejlen ved at lave et ekstra tjek hvis
ugenummeret er 53 (If WOY > 52 Then). Ved at lægge 7 dage til
datoen og tjekke ugenummeret igen, er det muligt at se om fejlen
dukker op. Hvis en dato 7 dage efter MyDate ligger i uge 2, må
MyDate nødvendigvis ligge i uge 1 - og ikke i uge 53.

Det er forholdsvis få datoer der er berørt af fejlen - som nævnt er
det kun sidste mandag i december hvor fejlen kan optræde, og det er
langt fra i alle år at det sker. Udover førnævnte tilfælde optræder
fejlen i år 2019, 2031, 2035 og 2047 i de kommende 50 år. Går man
bagud i tiden har fejlen været aktuel i 2003, 1991, 1979, 1975 og
1963 de sidste 50 år.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ukendt (03-12-2006)
Kommentar
Fra : Ukendt


Dato : 03-12-06 01:15


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns988DEC7067794jcdmfdk@gyrosmod.cybercity.dk...
> bsn skrev:
>
>> Jeg skal bare have vist det rigtige ugenr.
>> Kan du forklare funktionen...???
>
> Jeg kan prøve.
>
> Fejlen med ugenummeret går ud på at den sidste mandag i december i
> visse situationer fejlagtigt får ugenummeret 53 i stedet for 1. Når
> det sker, er det kun mandagen der er berørt. Ser man fx på
> årsskiftet 2007-2008 (som er førstkommende scenario hvor fejlen
> optræder), giver den indbyggede ugenummerfunktion følgende
> resultat:
>
> Date: 30-12-2007 Day: sø Week: 52
> Date: 31-12-2007 Day: ma Week: 53
> Date: 01-01-2008 Day: ti Week: 1
>
> Uge 53 i 2007 består altså - ifølge vb/vbscript - af én dag, nemlig
> mandag den 31. december. Det er bare ikke korrekt, da et ugenummer
> altid er det samme fra starten af ugen (mandag efter vores
> standarder) til slutningen af ugen. 2007 har kun 52 uger, og mandag
> den 31. december 2007 hører derfor til uge 1 (i år 2008).
>
> WOY-funktionen eliminerer fejlen ved at lave et ekstra tjek hvis
> ugenummeret er 53 (If WOY > 52 Then). Ved at lægge 7 dage til
> datoen og tjekke ugenummeret igen, er det muligt at se om fejlen
> dukker op. Hvis en dato 7 dage efter MyDate ligger i uge 2, må
> MyDate nødvendigvis ligge i uge 1 - og ikke i uge 53.
>
> Det er forholdsvis få datoer der er berørt af fejlen - som nævnt er
> det kun sidste mandag i december hvor fejlen kan optræde, og det er
> langt fra i alle år at det sker. Udover førnævnte tilfælde optræder
> fejlen i år 2019, 2031, 2035 og 2047 i de kommende 50 år. Går man
> bagud i tiden har fejlen været aktuel i 2003, 1991, 1979, 1975 og
> 1963 de sidste 50 år.

Tak for meget uddybende forklaring...

Har løst det på denne måde - indsat i loop...

Dim WOY 'Check for fejlvisning af mandag uge 53...
WOY = DatePart("ww",datDato, vbMonday, vbFirstFourDays)
If WOY > 52 Then
If DatePart("ww",datDato + 7, vbMonday, vbFirstFourDays) = 2 Then WOY =
1
End If

Response.Write "<td align=center>" & "<b>" & Dag & " uge " & WOY & "</b>" &
"<br>" & "<input type=" & "text" & " readonly=" & "True" & " VALUE=" &
datDato & " name=" & "txtDato" & Tael & " size=" & "8" & ">" & "</td>"

Bjarne





Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste