Avatar billede lund_dk Praktikant
19. april 2004 - 10:28 Der er 17 kommentarer og
1 løsning

DateDiff, hvordan ?

Mig og Datediff har aldrig haft en god kemi, derfor søger jeg lidt hjælp.

Har et udtræk der ser sådan her ud:

Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb")
Set rs_BE = Server.CreateObject("ADODB.Recordset")
sql_BE = "select * from besog where B_besogt = 'Nej' AND B_saelger='" & session("user") & "' order by B_besogdato "
rs_BE.open sql_BE, conn, 1, 3

<%
Do While Not rs_BE.EOF
%>
<div><%=rs_BE("B_besogdato")%></div>
<%
rs_BE.MoveNext
Loop
%>

B_besogdato formateres således: DD-MM-ÅÅÅÅ

B_besogdato har jeg følgende datoer i tabellen:
18-04-2004
20-04-2004

og i dag har vi så 19-04-2004

Det jeg gerne vil, er at jeg vil kun have udskrevet poster fra min database hvor B_besogdato er foran datoen vi har nu, samt poster der ligger 14 dage tilbage..
De poster der er 14 dage gamle vil jeg have markeret med en farve.
Men poster der ligger mere end 15 dage tilbage vil jeg ikke have udskrevet..

Nogen som kan hjælpe mig hvordan jeg klarer det.. ?
Avatar billede fennec Nybegynder
19. april 2004 - 10:44 #1
sql_BE = "select * from besog where B_besogt = 'Nej' AND B_saelger='" & session("user") & "' and B_besogdato >=#"& dateadd("d",-14,date()) &"# order by B_besogdato "

....
....

<%
Do While Not rs_BE.EOF
  if datediff("d",date(),rs_BE("B_besogdato")) < 0 then
%>
<div style="color='red'"><%=rs_BE("B_besogdato")%></div>
<%
  else
%>
<div><%=rs_BE("B_besogdato")%></div>
<%
  end if
rs_BE.MoveNext
Loop
%>
Avatar billede lund_dk Praktikant
19. april 2004 - 11:36 #2
Virker sku ikke helt efter hensigten :(

Har følgende poster i databasen;
15-04-2004 
23-04-2004
28-04-2004
13-05-2004

Når jeg bruger det script du har skrevet, udskrives kun den ene post:
13-05-2004
Avatar billede fennec Nybegynder
19. april 2004 - 11:46 #3
hvad siger SQl-sætningen hvis du skriver den ud???

sql_BE = "select * from besog where B_besogt = 'Nej' AND B_saelger='" & session("user") & "' and B_besogdato >=#"& dateadd("d",-14,date()) &"# order by B_besogdato "
response.write sql_BE
Avatar billede lund_dk Praktikant
19. april 2004 - 12:05 #4
den skriver

select * from besog where B_besogt = 'Nej' AND B_saelger='Kevin' AND B_besogdato >=#05-04-2004# order by B_besogdato
Avatar billede lund_dk Praktikant
19. april 2004 - 12:07 #5
Ah.. det er da server datoen som er gal.. men har et andet sted hvor jeg udskriver daten med date() der er server datoen korrekt
Avatar billede lund_dk Praktikant
19. april 2004 - 12:08 #6
Sludder.. nevermind.. klart daten er d. 15 når vi har trukket de 14 dage fra.. /doh
Avatar billede fennec Nybegynder
19. april 2004 - 12:27 #7
den siger den tage alle datoer fra den 05-04-2004 og frem. "B_besogdato" er også en dato-type i databasen (ikke tekst)???
Avatar billede lund_dk Praktikant
19. april 2004 - 13:39 #8
ja B_besogdato er datotype i min access database
Avatar billede fennec Nybegynder
19. april 2004 - 13:41 #9
Hvad sker der hvis du skriver:

sql_BE = "select * from besog where B_besogt = 'Nej' AND B_saelger='" & session("user") & "' and B_besogdato >=#20-04-2004# order by B_besogdato "
Avatar billede lund_dk Praktikant
19. april 2004 - 13:56 #10
Ja så virker det korrekt..
Avatar billede lund_dk Praktikant
19. april 2004 - 13:58 #11
eller gør det så ikke helt.. så udskrives kun posten:
13-05-2004
Avatar billede fennec Nybegynder
19. april 2004 - 14:07 #12
og de andre datoer har også B_besogt = 'Nej' og B_saelger='Kevin'. Bare for at være sikker ;o)
Avatar billede lund_dk Praktikant
19. april 2004 - 14:11 #13
jeps det har de..
Avatar billede lund_dk Praktikant
19. april 2004 - 14:15 #14
men ja, undrer mig også det ikke lige virker som det skal :/ Da scriptet ser fornuftigt og korrekt ud..

Er det ikke noget med at access database læser uk format ÅÅÅÅ-MM-DD ? og det skal laves om til DK format .. syntes jeg at jeg før har hørt om..
Avatar billede lund_dk Praktikant
19. april 2004 - 14:18 #15
Har nemlig et andet sted i en søge funktion, hvor jeg var nød til at gøre følgende:

fraDato = Trim(Request.Form("fradato"))
tilDato = Trim(Request.Form("tildato"))
fraDato = Year(fraDato) & "-" & Month(fraDato) & "-" & Day(fraDato)
tilDato = Year(tilDato) & "-" & Month(tilDato) & "-" & Day(tilDato)


Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")


strSQL = "SELECT * FROM besog WHERE"
strSQL = strSQL & " B_besogdato BETWEEN # " & fradato & "# AND #" & tildato & "# "
Avatar billede fennec Nybegynder
19. april 2004 - 14:31 #16
Access plejer at ville tage det danskeformat, hvis den er dansk vel at mærke. Men I dit tilfælde lader det til at den bruger engelsk format, som du siger. Jeg vil anbefale at du så laver en ConvertToSQLDate() funktion (gerne i en include fil), så du kun skal ændre funktionen hvis du skifter database. Har selv samme problem da MS-SQL bruger YYYYMMDD formatet.

function ConvertToSQLDate(dato)
  ConvertToSQLDate = Year(dato) & "-" & Month(dato) & "-" & Day(dato)
end function

sql_BE = "select * from besog where B_besogt = 'Nej' AND B_saelger='" & session("user") & "' and B_besogdato >=#"& ConvertToSQLDate(dateadd("d",-14,date())) &"# order by B_besogdato "
Avatar billede lund_dk Praktikant
19. april 2004 - 14:46 #17
Så lykkedes det :) Tak for hjælpen da..

Du må lige smide et svar så du kan få point :)
Avatar billede fennec Nybegynder
19. april 2004 - 14:48 #18
ok
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