- og disse data bliver smidt ned i hhv. RS("dateofbirth"), RS("monthofbirth") og RS("yearofbirth") som tekst i en MS Access-database, hvordan beregner man så
1) alderen? 2) antallet af dage til næste fødselsdag?
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
1. Jeg har dette script som udregner alderen på en person i år-måneder-dage..:
<% sBirthdate = "04-01-1985" dato = sBirthdate years = Datediff ("yyyy",dato,date) dato = dateAdd("yyyy",years,dato) mounths = Datediff ("m",dato,date) if mounths < 0 then dato = dateAdd("yyyy",-1,dato) mounths = Datediff ("m",dato,date) years = years - 1 end if dato = dateAdd("m",mounths,dato) days = Datediff ("d",dato,date) if days < 0 then if mounths > 0 then mounths = mounths - 1 else years = years - 1 mounths = 11 end if dato = dateAdd("m",-1,dato) days = Datediff ("d",dato,date) end if dinStr = years & " år " & mounths & " måneder " & days & " dage"
Response.Write dinStr %>
2.
sBirthdate = "04-01-1985"¨ sBirthdate = day(sBirthdate) & "-" & month(sBirthdate) & "-" & Year(date) if month(sBirthdate) < month(date) OR (month(sBirthdate) = month(date) AND day(sBirthdate) <= day(date)) then sBirthdate = DateAdd("y",1,sBirthdate) end if
DageTilFD = DateDiff("d",date,sBirthdate)
3.
juleAften = "24-12-" & year(Date) if CDate(juleAften) < CDate(Date) then juleAften = DateAdd("y", 1, juleAften) end if DageTilJul = DateDiff("d", date, juleAften)
If months < 0 then dato1 = dateAdd("yyyy",-1,dato1) months = Datediff ("m",dato1,date) years = years - 1 End If
dato = dateAdd("m",months,dato1) days = Datediff ("d",dato1,date)
If days < 0 then If months > 0 then months = months - 1 Else years = years - 1 months = 11 End If dato = dateAdd("m",-1,dato1) days = Datediff ("d",dato1,date) End If
dinStr = years & " år " & months & " måneder " & days & " dage"
Hm, hvor gammel jeg er, bliver vist korrekt, men DageTilFD returnerer -72
Her er koden:
<% Dim Conn, RS Set Conn = CreateObject("ADODB.Connection") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("/mappe1/mindatabase.mdb")
Set RS = Conn.Execute("SELECT * FROM personalinfo WHERE username = '" & SQLEncode(Session("username")) & "'")
If RS.EOF Then Response.Redirect "default.asp?msg=Der+skete+en+fejl.+Log+venligst+ind+igen." End If
If months < 0 then dato1 = dateAdd("yyyy",-1,dato1) months = Datediff ("m",dato1,date) years = years - 1 End If
dato1 = dateAdd("m",months,dato1) days = Datediff ("d",dato1,date)
If days < 0 then If months > 0 then months = months - 1 Else years = years - 1 months = 11 End If dato1 = dateAdd("m",-1,dato1) days = Datediff ("d",dato1,date) End If
dinStr = years & " år " & months & " måneder " & days & " dage"
If month(sBirthdate1) < month(date) OR (month(sBirthdate1) = month(date) AND day(sBirthdate1) <= day(date)) then sBirthdate1 = DateAdd("y",1,sBirthdate1) End If
Og det er rigtigt nok, på sin måde: Der er gået 72 dage siden min fødselsdag den 28. august. Så skal scriptet bare modregne det, så det er de resterende dage/måneder til næste fødselsdag :o)
If month(sBirthdate1) < month(date) OR (month(sBirthdate1) = month(date) AND day(sBirthdate1) <= day(date)) then sBirthdate1 = DateAdd("y",1,sBirthdate1) End If
DageTilFD = DateDiff("d",date,sBirthdate1)
Ok til dette:
maaned = Int(SQLEncode(RS("monthofbirth"))) dag = Int(SQLEncode(RS("dateofbirth"))) sBirthdate1 = dag & "-" & maaned & "-" & Year(date)
If maaned < int(month(date)) OR (maaned = int(month(date)) AND dag <= int(day(date))) then sBirthdate1 = DateAdd("y",1,sBirthdate1) End If
If months < 0 then dato1 = dateAdd("yyyy",-1,dato1) months = Datediff ("m",dato1,date) years = years - 1 End If
dato1 = dateAdd("m",months,dato1) days = Datediff ("d",dato1,date)
If days < 0 then If months > 0 then months = months - 1 Else years = years - 1 months = 11 End If dato1 = dateAdd("m",-1,dato1) days = Datediff ("d",dato1,date) End If
dinStr = years & " år " & months & " måneder " & days & " dage"
If month(sBirthdate1) < month(date) OR (month(sBirthdate1) = month(date) AND day(sBirthdate1) <= day(date)) then sBirthdate1 = DateAdd("y",1,sBirthdate1) End If
DageTilFD = DateDiff("d",date,sBirthdate1)
maaned = Int(SQLEncode(RS("monthofbirth"))) dag = Int(SQLEncode(RS("dateofbirth"))) sBirthdate1 = dag & "-" & maaned & "-" & Year(date)
If maaned < int(month(date)) OR (maaned = int(month(date)) AND dag <= int(day(date))) then sBirthdate1 = DateAdd("y",1,sBirthdate1) End If
DageTilFD = DateDiff("d",date,sBirthdate1)
juleAften = "24-12-" & year(Date) If CDate(juleAften) < CDate(Date) then juleAften = DateAdd("y", 1, juleAften) End If DageTilJul = DateDiff("d", date, juleAften) %>
Jeg har lige et ekstra ønske til - skal vi sige 15 point?
Når en person har fødselsdag, vil det være meget fint, hvis der stod et stort TILLYKKE!, og når det er jul kunne der stå glædelig jul. Hvordan skal den grejes? Har du tid? :o)
CDate er en funktion som konvertere en streng til type date/time i et bestemt format. Hvis begge i if sætningen har samme format og type kan man sammelige dem ordenligt.
Hm, det giver ingen forskel, hvis jeg ændrer en profils fødselsdato til 9-11-2003, burde der stå "TILLYKKE MED FØDSELSDAGEN!", men den skriver stadig hvor mange dage til næste fødselsdag etc.:
<b>FØDSELSDAG:</b><br> <% If CDate(sBirthdate) = CDate(date) Then %> <b>TILLYKKE MED FØDSELSDAGEN!</b><br><br> <b>JUL:</b><br>Der er nu <b><%=DageTilJul%></b> dage til juleaften!<br><br> Husk at skrive din <a href="#" onFocus="this.blur()"><b>julegaveønskeliste</b></a> <% Else %> Du er nu:<br> - <b><%=years%></b> år<br> - <b><%=months%></b> måneder og<br> - <b><%=days%></b> dage gammel.<br><br> Der er <b><%=DageTilFD%></b> dage til din næste fødselsdag!<br><br>Har du husket at udfylde din <a href="#" onFocus="this.blur()"><b>ønskeliste</b></a> til din fødselsdag?<br><br> <% If CDate(juleAften) = CDate(date) Then %> Glædelig jul! <% Else %> <b>JUL:</b><br>Der er nu <b><%=DageTilJul%></b> dage til juleaften!<br><br> Husk at skrive din <a href="#" onFocus="this.blur()"><b>julegaveønskeliste</b></a> <% End If %> <% End If %>
hmm der var jeg vist for hurtig ;) Det skal kun være måned og dag man tjekke på og ikke år, eller ville den kun side man havde fødseldag hvor års tallet også passer...
Prøv at rette:
<% If CDate(sBirthdate) = CDate(date) Then %>
Til:
<% If Month(sBirthdate) = Month(date) AND Day(sBirthdate) = Day(date) Then %>
Synes godt om
Ny brugerNybegynder
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.