Avatar billede sorenmt84 Juniormester
11. juli 2002 - 18:20 Der er 6 kommentarer og
1 løsning

Hent den post hvor dags dato er tættest på

Har dette script neden under... Det henter fra 3 forksellige tabeller... Først fra en kategori-tabel, dernæst udskriver den de forskellige poster der hører til de forksellige kategorier neden under. Den tredje tabel, henter den så ud for hver "oversigst" post, hvor den skal indsætte en pris.

Det virker sådan set også fint, men problemet er at der f.eks. godt kan værer 2 forskellige priser til hver post.
Det jeg derfor skal have den til med den tredje tabel ("rejser_pris") er at den skal kigge på dags dato - date() - og så gå ind i rejser_pris og hente den post som er den nærmest (kun frem af i tiden!) på dags dato.

Hvis der f.eks. til en post er en følgende datoer:
15-08-2002, 01-09-2002 og 23-01-2002 så skal den altså hente 15-08-2002

Jeg kan ikke få det til at virke! den tager bare den første

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.Mappath("inc/db/spejder.mdb")
Conn.Open DSN
strSQL = "Select * From rejser_kategori order by kategori asc"
Set rs_kategori = Conn.Execute(strSQL)
if rs_kategori.EOF then
Response.write "<span class='sort_tekst'><b>&nbsp;&nbsp;Ingen rejser fundet</b></span>"
else
Do until rs_kategori.eof or rs_kategori.bof %>

<font face="verdana" size="4" color="#FF0000"><b><%=rs_kategori("kategori")%></b></font><HR SIZE="1" WIDTH="740" NOSHADE color="#FF0000" align="left">
<% strSQL = "Select * From rejser_oversigt Where refid = " & rs_kategori("id")
Set rs_oversigt = Conn.Execute(strSQL)
Do While Not rs_oversigt.EOF %>
<table width="740" cellpadding="2" cellspacing="0" border="0">
<% strSQL = "Select top 1 * From rejser_pris Where refid = " & rs_oversigt("id") & " and dato >" & date()
Set rs_pris = Conn.Execute(strSQL)
Do While Not rs_pris.EOF %>
<tr onmouseover="this.className = 'gron';" onmouseout="this.className = '';">
<td width="400" class="border_bottom_gron"><font face="verdana" size="3"><b><%=rs_oversigt("titel")%></b></font><BR><font face="verdana" size="1"><%=rs_oversigt("beskrivelse")%></td></font>
<td width="170" class="border_bottom_gron"><DIV STYLE="text-align:right"><font face="verdana" size="2"><%=rs_pris("dato")%></font></div></td>
<td width="170" class="border_bottom_gron"><DIV STYLE="text-align:right"><font face="verdana" size="2"><%=rs_pris("pris")%></font></DIV></td></tr></table>

<% rs_pris.MoveNext
Loop
Set rs_pris = Nothing
rs_oversigt.MoveNext
Loop
Set rs_oversigt = Nothing
response.write "<br><br>"
rs_kategori.MoveNext
Loop
Set rs_kategori = Nothing
Conn.Close
Set Conn = Nothing
end if %>
<BR><BR>
Avatar billede eagleeye Praktikant
11. juli 2002 - 19:29 #1
Er dato i tabellen defineret som Dato/tids type?

Så skal der # omkring i SQL:

strSQL = "Select top 1 * From rejser_pris Where refid = " & rs_oversigt("id") & " and dato > #" & date() & "#"

Når dato'en går gennem SQL har den tendens til at lave format mm-dd-yyyy og ikke dd-mm-yyyy som er dansk dato format. Det sikreste er at bruge yyyy-mm-dd som dato format det kan gøres sådan her:

datoStr = Year(Date()) & "-" & Month(Date()) & "-" & Day(Date())
strSQL = "Select top 1 * From rejser_pris Where refid = " & rs_oversigt("id") & " and dato > #" & datoStr & "#"
Avatar billede sorenmt84 Juniormester
11. juli 2002 - 19:38 #2
Det er ikke defineret som dato/tid... Vil det virke hvis jeg gør dette og så bruger dit?
Avatar billede eagleeye Praktikant
11. juli 2002 - 19:41 #3
Ja det skulle jeg mener..

Hvis det er Tekst så kan den ikke sortere på andet end det førte Tal i strengen dato altså 0,1,2.
Avatar billede sorenmt84 Juniormester
11. juli 2002 - 19:45 #4
Den tage stadivæk den først...

Hvis jeg har datoerne 24-06-2002, 20-07-2002 og 24-07-2002

og de står i denne rækkefølge i db:
24-06
24-07
20-07
Tager den 24-07, hvor den burde ta 20-07!
Avatar billede eagleeye Praktikant
11. juli 2002 - 19:49 #5
Bruger du denne?

datoStr = Year(Date()) & "-" & Month(Date()) & "-" & Day(Date())
strSQL = "Select top 1 * From rejser_pris Where refid = " & rs_oversigt("id") & " and dato > #" & datoStr & "#"
Avatar billede eagleeye Praktikant
11. juli 2002 - 19:54 #6
arh der skal også ORDER BY dato ASC på for at sortere efter dato...


datoStr = Year(Date()) & "-" & Month(Date()) & "-" & Day(Date())
strSQL = "Select top 1 * From rejser_pris Where refid = " & rs_oversigt("id") & " and dato > #" & datoStr & "# ORDER BY dato ASC"
Avatar billede sorenmt84 Juniormester
11. juli 2002 - 21:14 #7
Perfekt... Takker ;-)
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