Avatar billede esbenn Nybegynder
03. december 2007 - 10:13 Der er 28 kommentarer og
1 løsning

Hent fra database hvor dato er senere end idag

Jeg skal hente nogle arragemanter fra en database, men den skal ikke gerne vise de arragemanter der har været... Derfor har jeg prøvet med denne:
SQL = "SELECT * FROM arrangement WHERE `dato` > "&date()&" ORDER BY `dato` ASC"
Men det virker ikke helt... Her kommer alle frem, hvis jeg indsætter < istedet kommer der så ingen frem... Håber lige nogen kan spotte min fejl :-)
Avatar billede fennec Nybegynder
03. december 2007 - 10:20 #1
Du skal have formateret din ASP dato til det som passer med databasen, eller også skal du bruge en af de interne funktioner. Ser ud til du bruger MySQL...

SQL = "SELECT * FROM arrangement WHERE `dato` > date() ORDER BY `dato` ASC"
Avatar billede esbenn Nybegynder
03. december 2007 - 10:25 #2
Mener du som det her:
dd = DatePart("yyyy",Date()) & "-" & DatePart("m",Date()) &  "-" & DatePart("d",Date())
SQL = "SELECT * FROM arrangement WHERE `dato` > "&dd&" ORDER BY `dato` ASC"

For det virker heller ikke... :-(
Avatar billede The Real Yoda Juniormester
03. december 2007 - 10:29 #3
har lige et spørgsmål ?..

Der vil  da aldrig komme resultater..

Ingen dage du slår op, er senere end idag.. med mindre du kan noget vi andre ikke kan ..

i dag ville den blive where dato>03.12.2007
Avatar billede esbenn Nybegynder
03. december 2007 - 10:33 #4
Jo, for når jeg indsætter i databasen skal man vælge en dato på hvornår det skal ske... Så der ligger ting i databasen med datoer senere end idag...
Avatar billede fennec Nybegynder
03. december 2007 - 10:33 #5
Ja (men du mangler også lige ' omkring). Og som en kortere kode:
dd = "'"& year(Date()) & "-" & month(Date()) &  "-" & day(Date()) &"'"
SQL = "SELECT * FROM arrangement WHERE `dato` > "&dd&" ORDER BY `dato` ASC"

Også kan det evt være en god ide at bruge en funktion istedet:
function DBDate(fDate)
  DBDate = "'"& year(fDate) &"-"& right("0"&month(fDate),2) &"-"& right("0"&day(fDate),2)
end function

SQL = "SELECT * FROM arrangement WHERE `dato` > "& DBDate(date()) &" ORDER BY `dato` ASC"
Avatar billede fennec Nybegynder
03. december 2007 - 10:34 #6
Manglede lige en "'" i funktionen:

function DBDate(fDate)
  DBDate = "'"& year(fDate) &"-"& right("0"&month(fDate),2) &"-"& right("0"&day(fDate),2) &"'"
end function
Avatar billede esbenn Nybegynder
03. december 2007 - 10:35 #7
Microsoft VBScript compilation error '800a03ea'

Syntax error

/arrangement/index.asp, line 3

function DBDate(fDate)
^
Avatar billede esbenn Nybegynder
03. december 2007 - 10:36 #8
Ahh.. Så jeg ikke lige.. Prøver igen.. :-D
Avatar billede esbenn Nybegynder
03. december 2007 - 10:37 #9
Nå, den laver stadig den sammen fejl...
Avatar billede fennec Nybegynder
03. december 2007 - 10:39 #10
Er dato feltet af datetime data typen, eller er den evt bare et tekstfelt??

Skal du aldrig skifte database kan det anbefales at bruge MySQL's interne date funktion, så du helt undgår at skulle igennem ASP. Du har altså 2 muligheder:

MySQL date funktion:
SQL = "SELECT * FROM arrangement WHERE `dato` > date() ORDER BY `dato` ASC"

Med ASP date formaterings funktion:
function DBDate(fDate)
  DBDate = "'"& year(fDate) &"-"& right("0"&month(fDate),2) &"-"& right("0"&day(fDate),2) &"'"
end function

SQL = "SELECT * FROM arrangement WHERE `dato` > "& DBDate(date()) &" ORDER BY `dato` ASC"

Som du kan se er koden til brug af MySQL's date funktion betydlig mere simpel end brug af ASP. Tilgængæld er man lide mere besværligt, hvis man ikke arbejder med dagsdato.
Avatar billede fennec Nybegynder
03. december 2007 - 10:42 #11
Vent lige... Den fejl er relateret til funktionen. Burde ikke forkomme for det er skrevet rigtig.

Har du arbejdet med funktioner før?
Hvordan ser din kode ud?
Avatar billede esbenn Nybegynder
03. december 2007 - 10:43 #12
Min datatype til dato feltet er date, men MySQL date funktionen virker ikke...
Avatar billede esbenn Nybegynder
03. december 2007 - 10:44 #13
<%
function DBDate(fDate)
  DBDate = "'"& year(fDate) &"-"& right("0"&month(fDate),2) &"-"& right("0"&day(fDate),2) &"'"
end function

SQL = "SELECT * FROM arrangement WHERE `dato` > "& DBDate(date()) &" ORDER BY `dato` ASC"

Set rs = Conn.Execute(SQL)
Avatar billede The Real Yoda Juniormester
03. december 2007 - 10:46 #14
nåeh ja. man kan jo hente ting der SKAL ske.. og ik kun ting der er sket.. eheh .sorry .. lige en hjernefis..
Avatar billede esbenn Nybegynder
03. december 2007 - 10:49 #15
og fennec, som svar til dig, nej har ikke arbejdet med functioner før... :-)
Avatar billede fennec Nybegynder
03. december 2007 - 10:55 #16
A hvad... Virker MySQL date() funktionen heller ikke?? Får du en fejl eller bare ikke noget resultat??
Avatar billede esbenn Nybegynder
03. december 2007 - 11:01 #17
Intet resultat med < og alle kommer frem med >
Avatar billede esbenn Nybegynder
03. december 2007 - 11:01 #18
Nej vent... Der kommer en fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-5.0.37]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY `dato` ASC' at line 1

/arrangement/index.asp, line 5
Avatar billede fennec Nybegynder
03. december 2007 - 11:16 #19
Hus på at bruger du den indbyggede funktion skal der ikke ' omkring. Der bruges kun ' når datoen angives via ASP.

... where `dato` > date() ...
Avatar billede esbenn Nybegynder
03. december 2007 - 11:21 #20
Det er der heller ikke:
<%
SQL = "SELECT * FROM arrangement WHERE `dato` > date() ORDER BY `dato` ASC"

Set rs = Conn.Execute(SQL)
Avatar billede fennec Nybegynder
03. december 2007 - 11:28 #21
Og den virker ikke??
Så tror jeg problemet ligger i datoerne i databasen, som ikke passer. Er de indsat via ASP kode??
Avatar billede esbenn Nybegynder
03. december 2007 - 11:30 #22
Ja... De er indsat sådan:
strtext = Request.Form("text")
strtext = Replace(strtext, "'", "\'")
strtext = Replace(strtext, vbcrlf,"<br>")
dato = Request.Form("aar")&"-" & Request.Form("man") & "-" & Request.Form("dag")

SQL = "insert into arrangement set dato='" & dato & "', text='" & strtext & "'"
Avatar billede fennec Nybegynder
03. december 2007 - 11:33 #23
Ok, en blanding af insert og update syntax. Det har jeg ikke set før. Er du sikker på rækkerne i databasen har de rigtige datoer??
Avatar billede esbenn Nybegynder
03. december 2007 - 11:36 #24
Jeps, datoerne er rigtige nok... Ved ikke lige hvad det er der er sket... :-S
Avatar billede fennec Nybegynder
03. december 2007 - 11:56 #25
Hvis datoerne er rigtige så skal det også virke.

Har du prøvet at køre SQL-sætningen i dit management program? (f.eks phpmyadmin, mysql administrator eller hvad du nu bruger)
Avatar billede esbenn Nybegynder
03. december 2007 - 12:00 #26
Jeps, der skriver den den samme fejl... sikker på den der date() virker?! :-D
Avatar billede fennec Nybegynder
03. december 2007 - 12:04 #27
Doh...
Det er jo curdate()

SQL = "SELECT * FROM arrangement WHERE `dato` > curdate() ORDER BY `dato` ASC"
Avatar billede esbenn Nybegynder
03. december 2007 - 12:12 #28
WUHUUU! :-D

Send mig et svar...

Og mange tak for hjælpen, selvom det tog lidt tid.. ;-)
Avatar billede fennec Nybegynder
03. december 2007 - 12:42 #29
.o) <-- One Eyed Jack
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