Avatar billede phi-del Nybegynder
09. maj 2006 - 12:43 Der er 18 kommentarer

Beregning af dato fra nr

Hej til alle.

hvordan er du nu man beregner dato fra '19000101'
dvs nr 0 = er første uge i 19000101
hvordan kan jeg så finde ud hvilke ugenr denne uge har ?

det må være noget med
Datepart(now,......


nogen der kan komme med et bud ?
Avatar billede phi-del Nybegynder
09. maj 2006 - 12:46 #1
a =  DatePart(\"ww\", now, 2, 3) så får jeg ugenr i år men skal bruge siden 19000101
Avatar billede ldanielsen Nybegynder
09. maj 2006 - 12:58 #2
Fix(Datediff("d", Cdate("19000101"), Now()) / 7)

måske?
Avatar billede phi-del Nybegynder
09. maj 2006 - 13:06 #3
type mismatch
a= Fix(Datediff("d", Cdate("19000101"), Now()) / 7)

denne linie kan fortælle hvilke uge vi er i feks..
a =  DatePart(\"ww\", now, 2, 3)
men at regne det til hvormange uger der er gået !???
Avatar billede geagleeye Nybegynder
09. maj 2006 - 13:27 #4
Er der ikke andre forslag ?
Avatar billede ldanielsen Nybegynder
09. maj 2006 - 13:29 #5
Det var datokonverteringen der gav fejl, men nu er den testet:

Dim strDato As String, dtmStartDato As Date

strDato = "19000101"

dtmStartDato = DateSerial(CInt(Left(strDato, 4)), CInt(Mid(strDato, 5, 2)), CInt(Mid(strDato, 7, 2)))
MsgBox (Fix(DateDiff("d", dtmStartDato, Now()) / 7))
Avatar billede geagleeye Nybegynder
09. maj 2006 - 13:32 #6
hmmm...ser ud til at fungere men forstå ikke hvad der sker i koden :(
hvad laver disse :
dtmStartDato  =
DateSerial=     
CInt=     
Left=
CInt= Mid=
DateDiff =
Avatar billede geagleeye Nybegynder
09. maj 2006 - 13:33 #7
og hvad nu hvis jeg har en  ugenr som skal laves om til normal dato ?
dvs omvendt at det der kode... ? :(
Avatar billede ldanielsen Nybegynder
09. maj 2006 - 13:49 #8
det jeg gør er at jeg tager antallet af dage og dividerer det med 7, så her jeg antallet af uger:

Datediff("d", dtmStartDato, Now()) / 7

Men det kan jo være et decimaltal, fordi det kan være 5574.345 uger derfor runder jeg ned:

Fix(Datediff("d", dtmStartDato, Now()) / 7)

dtmStartDato skal være 1. jan 1900, men da du starter med en streng: "19000101" skal den konverteres til en dato, og det gør jeg sådan:

'Variabler til mellemregningerne
Dim strDato As String, dtmStartDato As Date

'sætter strDato til "19000101":
strDato = "19000101"

'omregner til dato med DateSerial(1900, 1, 1)
dtmStartDato = DateSerial(CInt(Left(strDato, 4)), CInt(Mid(strDato, 5, 2)), CInt(Mid(strDato, 7, 2)))

Det omvendte kan du gøre sådan:

Dim intAntalUger
intAntalUger = 500
dtmStartDato = DateAdd("d", -intAntalUger * 7, Now())
MsgBox (dtmStartDato)
Avatar billede ldanielsen Nybegynder
09. maj 2006 - 13:52 #9
CInt(Left(strDato, 4))
Det betyder "fra venstre (Left) 4 tegn af strDato, Lavet om til et tal (CInt)"
Det giver 1900

CInt(Mid(strDato, 5, 2))
Det betyder "Midt (Mid) i strengen strDato, fra 5 og to tegn frem, lavet om til et tal (CInt)"

Forstår du det?
Avatar billede geagleeye Nybegynder
09. maj 2006 - 14:03 #10
jo det meste forstår jeg, men har kigget i min kode nu og har fundet ud af at der skal par ændringer til før jeg kan bruge det....det er lidt kompleks fordi
jeg nogen gange kan kun sende en værdi som hedder år "2005" så skal jeg havde vide uge nr for det år og nogle gange kan der også forkomme et uge nr for det år
dvs hvilke nr har uge 2 i 2005 i forhold til 19001.
jeg har prøvet at erstatte now med 2005 men det holder ikke rigtigt....

også skal jeg også finde en måde at lave det hele om til det modsatte.... :(

men du skal have tussind tak for hjælpen.... det har givet noget at arbejde med..
Avatar billede ldanielsen Nybegynder
09. maj 2006 - 14:04 #11
Svar
Avatar billede geagleeye Nybegynder
09. maj 2006 - 14:06 #12
ren interface mæssige..
har brugeren 4 bokse at indtaste data i
1: indtast fraår
2: indtast frauge
1: indtast tilår
2: indtast tiluge

så skal jeg finde de to uge nr dvs hvis har valgt
2005 uge 15  til 2005 - 25
så skal jeg bruge ugenr 5422 til 2342 ....

men problemmet er at de ikke altid vælger nogen gange er det bare år :(
Avatar billede geagleeye Nybegynder
09. maj 2006 - 14:06 #13
takker for hjælpen :)
Avatar billede ldanielsen Nybegynder
09. maj 2006 - 14:11 #14
Sig mig en gang, har du to profiler?

De må man ikke: http://www.eksperten.dk/regler.phtml

Grunden er at alt for mange ville gøre det for at samle flere point. MAn får jo 5 p om dagen.
Avatar billede ldanielsen Nybegynder
09. maj 2006 - 14:12 #15
Både geagleeye og phi-del har masser af point, så det er vel ikke derfor :o)
Avatar billede geagleeye Nybegynder
09. maj 2006 - 14:18 #16
ding.....skal lukke den straks...
Avatar billede ldanielsen Nybegynder
09. maj 2006 - 14:24 #17
Er dette så det man kalder selvhjælp? :o)

http://www.eksperten.dk/spm/686281
Avatar billede geagleeye Nybegynder
09. maj 2006 - 14:51 #18
min bror har brugt kontoen da han legede med programmering..
men den er lukket nu....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester