tidsberegning

Tags:    visual-basic

<< < 12 > >>
Hej

Jeg er MEGET ny ud i Visual Basic og er ved, at udvikle et "program" til noget katalogskrivning. I min "entryform" skal der bl.a være to textboxe.. En til input af "fødselsdato" og en til input af "udstillingsdato" og derfra skal så beregnes alder i år, måneder og uger. Kan ikke finde ud af det ;-( Er der nogen som kan hjælpe? Da jeg er meget ny i programmering, må det gerne være beskrevet for "dummies"

Hilsen Laila



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Næ du har sku ret, havde ikke regnet efter.
Du må snakke med Bill om hvorfor det ikke virker!
Dan haben wir andren metoden:

Denne funktion gir dette resultat med dit eksembel:
1 år, 11 måneder og 1 uger

Function Diff(Date1 As Date, Date2 As Date) As String
Dim Yar As Long
Dim Mdr As Long
Dim Wek As Long
Dim Tmp As Variant

Tmp = Split(Date1, "-")
Yar = Fix(DateDiff("m", Date1, Date2, vbMonday) / 12)
Tmp(2) = Tmp(2) + Yar
Mdr = Fix(DateDiff("m", Date1, Date2, vbMonday) Mod 12)
If Tmp(1) + Mdr > 12 Then Tmp(2) = Tmp(2) + 1
Tmp(1) = (Tmp(1) + Mdr) Mod 12
Wek = DateDiff("w", CDate(Join(Tmp, "-")), Date2, vbMonday)

Diff = Yar & " år, " & Mdr & " måneder og " & Wek & " uger"

End Function



Brug DateDiff. Se i help for koden til Interval.
DateDiff("yyyy", cDate("02-05-1964"), cDate("28-03-2006")) giver 42.
Du ku derfor bruge:
Alder=DateDiff("yyyy", cDate(Text1.Text)), cDate(Text2.Text))



Brug DateDiff. Se i help for koden til Interval.
DateDiff("yyyy", cDate("02-05-1964"), cDate("28-03-2006")) giver 42.
Du ku derfor bruge:
Alder=DateDiff("yyyy", cDate(Text1.Text)), cDate(Text2.Text))


Jo tak den har jeg regnet ud, men jeg har brug for et svar der fortæller år OG måneder OG uger :-)





Rolig nu:
Format(cDate("28-03-2006") - cDate("28-03-1964"), "dd-mm-yyyy") giver 30-12-1941. Altså 30 dage 12 måneder og 41 år (altså hvis du lige trækker 1900 fra årstallet)




Oooh sorry. Den prøver jeg lige vender frygteligt tilbage :-) På forhånd tak.



Den virker ikke. Kommer med "Invalid procedure call or argument". Et andet problem er, at det ikke skal være i år, måneder og dage, men i år, måneder og uger.



Hvad så med den her: Format(cDate("28-03-2006") - cDate("28-03-1964"), "w-mm-yy"). Den gir: "3-12-41"

Dim Tmp as Variant
Tmp=Split(Format(cDate("28-03-2006") - cDate("28-03-1964"), "w-mm-yy"),"-")

'I Tmp(0) står uger
'I Tmp(1) står måneder
'I Tmp(2) står år






Jeg har indtil nu kun brugt VB til at opdatere en database og jeg er ikke inde i ret meget andet. Jeg skal bruge ovestående kode i en form hvor brugeren bl.a skal indtaste "fødselsdato" og "udstillingsdato" i 2 textboxe. Forskellen på disse 2 datoer skal så give alderen i en label, men jeg kan simpelthen ikke finde ud af hvordan jeg skal gøre det med ovenstående kode. Jeg har prøvet hele dagen (og noget af natten). Udførlig hjælp vil virkelig blive værdsat og måske spare mig for noget hårfarve.

På forhånd tak.



Udskift de faste datoer med dine textboxe, og design din tekst til din label ala det her:

'Opret en variabel som kan indeholde år,mdr,uger
Dim Tmp as Variant

'Format trækker de to datoer fra hinanden
'Resultatet formateres med "w-mm-yy"
'Split deler resultatet op i et array som lægges i Tmp
'Tmp(0) = Uger, Tmp(1) = Mdr, Tmp(2) = År
Tmp=Split(Format(cDate(Text1.text) - cDate(Text2.Text), "w-mm-yy"),"-")

'Formater din tekst til din Label og brug værdierne fra Tmp
Label1.Caption = "Du er " & Tmp(2) & " år, " & Tmp(1) & " måneder, og " & Tmp(0) & " uger gammel"





Endelig fik jeg det til at virke, men desværre kommer der "regnefejl" :-( F.eks giver "08-07-2006" - "01-08-2004" 1 år 12 måneer og 6 uger og det duer jo ikke. Sikkert fordi jeg ikke finde ud af det med de arrays eller noget, men tak for hjælpen.



<< < 12 > >>
t