nillMedlem sedan okt. 2001387 inlägg Har förstått att min kod som ska berätta hur många månader och dagar det är till någon fyller inte alls är bra. Här kommer det ska vara med först:
If (RecSet("born") \<\> "") Then
ReplaceStr = Replace(RecSet("born"), " ", "")
Fyller = right(left(ReplaceStr, 6), 4)
Ratt = isNumeric(Fyller)
End If
If (Len(Fyller) = 4) And (Ratt = True) Then
Fyller har nu ett värde t.ex. 0206.
min kod fungerade så innan att den gjorde om det till 2002-02-06. och tog datediff("m" och "d". men det blir heltokigt. Stämde ju till viss del men sen måste man ju ta differensen av månader och dagar mm och det vet jag inte hur man gör.
Så om någon kunde hjälpa mig med lite kod skulle jag vara tacksam :)
LarsGMedlem sedan dec. 200012 464 inlägg Hur ser värdena i recset("born") ut?
------------------
essentitia preter non sans multiplicandum
nillMedlem sedan okt. 2001387 inlägg det är lite olika beroende på vad de skrivit in.
men det är tänkt att if-satsen ska sortera ut det där de står t.ex. 830206-2323 där de sex första är de enda viktiga här.
EclipseMedlem sedan juli 20003 825 inlägg Jag tycker parantesen ser lite konstig ut...
If (RecSet("born") <> "") Then
Mitt förslag:
If RecSet("born") <> "" Then
Eller är det min okunskap som spökar!? :-)
@ndersMedlem sedan juni 200032 969 inlägg Parentesen får vara där, det spelar mindre roll. :)
Mvh,
------------------
Don't panic!
nillMedlem sedan okt. 2001387 inlägg spelar ingen roll... () var till för att det ska se snyggare ut/vara lättare att läsa :)
LarsGMedlem sedan dec. 200012 464 inlägg dob = left(recset("born"),6)
if isNumeric(dob) then
m = mid(dob,2,2)
d = mid(dob,4,2)
y = year(date)
birthday = cdate(y & "-" & m & "-" & d)
days = datediff("d",birthday,date)
if days < 0 then
'fyller nästa år
days = datediff("d",birthday,dateadd("yyyy",1,date))
end if
response.write days & " dagar kvar"
end if
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 06 dec 2001]
nillMedlem sedan okt. 2001387 inlägg det där fungerade inte alls :/
men jag lärde mig lite.
Jag kan också få ut antalet dagar, fast nu jag vill ha det i månader och dagar. inte bara dagar.
det är det som krånglar till det
LarsGMedlem sedan dec. 200012 464 inlägg Nej, det var ett riktigt bottennapp.
dim dob,m,d,y,birthday,days,months
dob = left(recset("born"),6)
'
'dob förutsätts vara i
' formatet yymmdd
'
if isNumeric(dob) then
d = mid(dob,5,2)
m = mid(dob,3,2)
y = cstr(year(date))
birthday = y & "-" & m & "-" & d
if isdate(birthday) then
birthday = cdate(birthday)
days = datediff("d",date,birthday)
if days < 0 then
birthday = dateadd("yyyy",1,birthday)
end if
months = datediff("m",date,birthday)
days = datediff("d",dateadd("m",months,date),birthday)
if datediff("d",birthday,dateadd("m",months,date)) > 0 then months = months - 1
days = datediff("d",dateadd("m",months,date),birthday)
end if
response.write months & " månader och " & days & " dagar kvar"
end if
------------------
essentitia preter non sans multiplicandum
nillMedlem sedan okt. 2001387 inlägg jo den koden var inte helt fel. Men lite. Om dagens datum är MER än datumet när personen fyller år blir det tokigt. Typ istället för 1 månad och 29 dagar blir det 1 månad och -1 dag.
och sen så förstår jag inte dessa rader:
Dagar = Datediff("d",Dateadd("m",Months,Date),Birthday
If Datediff("d",birthday,dateadd("m", Months, Date)) > 0 Then Months = Months - 1
Om du kunde förklara lite hur de funkar. Dateadd innne i datediffen alltså... :)
LarsGMedlem sedan dec. 200012 464 inlägg Jaha, jag tyckte jag testade ut det fallet, men men ..
Jo, datediff med månader avrundar väl värdet så att om det är 50 dagar så får man 2 månader. Tanken var att om jag lägger på antalet månader och det värdet är större än födelsedatumet så innebär det att man har fått en avrundning uppåt och i så fall tar jag bort en månad.
Det verkar dock som om det blir något problem precis i skarven. Det hänger säkert ihop med att månader har olika längd. Jag har ingen direkt lösning.
------------------
essentitia preter non sans multiplicandum