Jag har sökt och hittat en del funktioner på webforum hur man kan ta fram födelsedagar ur ett datum/tid -fält.
Men naturligtvis har jag kört fast på två punkter.
sql = "select * from kunder where month(fodelseDatum) = month(now()) and day(fodelseDatum) = day(now())"
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
Do Until RecSet.EOF
alder = RecSet("FodelseDatum")
response.write RecSet("Fornamn") & " " & RecSet("Efternamn") & " som fyller " & DateDiff("y",alder,date())/365.2375 & " år idag <br>"
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
1. Hur skall man skriva för att få fram födelsedagarna de närmaste sju dagarna?
2. Hur tusan avrundar jag?? Har testat på olika sätt utan att lyckas. Det blir ju nu t.ex 25,23435873 år
Ovanstående hara funkat perfekt fram till idag.
Nu visas födelsedagar från 1/6 ända fram till den 22/7.
Jag antar att det kan ha något med månadsskiftet att göra men är det någon som vet hur jag skall lösa det?
Bara rent upp och ner ur mitt just nu trötta huvud ... räcker det inte bara att skriva typ
"SELECT * FROM Kunder WHERE FodelseDatum BETWEEN " & Date() & " AND " & DateAdd("d", 7, Date) & " ORDER BY FodelseDatum ASC"
Nej tyvärr. Då visar den att inga födelsedagar finns den närmsta tiden. (Men de finns i databasen)
Har fått följande sql-sats i sql-forumet.
sql = "SELECT * FROM kunder WHERE DateSerial(Year(Date()), Month(fodelseDatum), Day(fodelseDatum))" & _
"BETWEEN Date() AND DateAdd('d', 7, Date()) ORDER BY Month(fodelseDatum), Day(fodelseDatum)"
Denna sql-sats går nu igenom utan felmeddelande men nu får jag i stället ett fel på nästa rad vilken ser ut på följande vis.
Meddelande lyder:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.
fodelsedag.asp, line 21
Jag har adovbs inkluderad.
Resterande kod ser ut på följande vis.
if RecSet.EOF then
response.write "Inga födelsedagar denna vecka"
else
Do Until RecSet.EOF
alder = RecSet("FodelseDatum")
response.write RecSet("Fornamn") & " " & RecSet("Efternamn") & " " & round( DateDiff("y",alder,date())/365.2375 ) & " år den " & day(RecSet("Fodelsedatum")) &"/" & month(RecSet("Fodelsedatum")) &"<br>"
RecSet.MoveNext
Loop
end if
RecSet.Close
Connect.Close
Några år senare.... någon som vet svaret på BJ:s problem ovan?
Jag har exakt samma problem med att det blir fel vid månadsskifte. Istället för att t.ex. ta 28 april till 4 maj tar den alla mellan 1-7 april och 1-7 maj. När jag liksom BJ testar SQL-satsen i senaste inlägget får jag också Typblandningsfel i villkorsuttryck på den raden. Jag har provat med lite olika datatyper (datum ,text, tal), men ingen skillnad. Använder en Access-databas om det gör någon skillnad.
Någon som vet?
270 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849