Avatar billede riishoj Nybegynder
30. august 2004 - 23:01 Der er 11 kommentarer og
1 løsning

SELECT virker ikke

Kan nogen se, hvorfor denne SELECT ikke virker?

strSQL = "SELECT dag,tekst,lektion FROM blok WHERE reservation='edb' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND minDato <= #" & datoStr & "# AND maxDato >= #" & datoStr & "# AND minDato2 <= #" & datoStr & "# AND maxDato2 >= #" & datoStr & "#"

Hvis jeg sletter

AND minDato2 <= #" & datoStr & "# AND maxDato2 >= #" & datoStr & "#

så virker den godt nok! Jeg har naturligvis felterne minDato, maxDato, minDato2 og maxDato2 i db'en.
Avatar billede phineas_phreak Nybegynder
30. august 2004 - 23:30 #1
ved ikke om det gør nogen forskel men hvad hvis du bruger between ?

AND #" & datoStr & "# BETWEEN #" & minDato2 "# & AND #" & maxDato2 & "#

hvad er det for en fejlmeddelelse du får ?

og hvad er det for type felter du bruger ?
Avatar billede riishoj Nybegynder
30. august 2004 - 23:46 #2
Jo, det hjælper lidt. MinDato og maxDato fungerer, men maxDato2 overskrider den dato, der er sat ind i posten, hvis du forstår hvad jeg mener. Felterne er datofelter.
Avatar billede riishoj Nybegynder
31. august 2004 - 00:09 #3
Den her kan da ikke være så svært for eksperterne! Det handler jo bare om, at der skal indsættes noget på de datoer, som ligger mellem minDato og maxDato, og igen mellem minDato2 og maxDato2. Jeg vil også gerne kunne udvidde det med minDato3 og maxDato3 osv.
Er der virkelig ingen, som kan hjælpe med en sådan select?
Avatar billede phineas_phreak Nybegynder
31. august 2004 - 10:46 #4
er det en access database du bruger ?

for så er det nødvendigt at lave datoformatet om til yyyy-mm-dd da access sammenligner data i det format:

data = Year(datoStr) & "-" & Month(datoStr ) & "-" & Day(datoStr)
så prøv igen med

AND minDato2 <= #" & data & "# AND maxDato2 >= #" & data & "#

eller

AND #" & data & "# BETWEEN #" & minDato2 "# & AND #" & maxDato2 & "#
Avatar billede riishoj Nybegynder
31. august 2004 - 15:00 #5
Ja, det er en accessdb jeg bruger. Lige inden SELECT'en har jeg dette her i mit script

datoStr = UgeTilDato(aar, uge, 1)
datoStr = Month(datoStr) & "-" & Day(datoStr) & "-" & Right(Year(datoStr),2)

Har ikke haft tid til at prøve de sidste forslag. Vender tilbage i aften.
Avatar billede phineas_phreak Nybegynder
31. august 2004 - 15:33 #6
får du en regulær fejlmeddelelse eller får du bare retuneret forkert værdi ?
Avatar billede riishoj Nybegynder
31. august 2004 - 20:20 #7
Dette her

strSQL = "SELECT dag,tekst,lektion FROM blok WHERE reservation='edb' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND mindato <= #" & datoStr & "# AND maxDato >= #" & datoStr & "# AND #" & datoStr & "# BETWEEN #" & minDato2 "# & AND #" & maxDato2 & "#"

giver fejlen

Microsoft VBScript compilation error '800a0401'

Expected end of statement

/demo/edb.asp, line 198

strSQL = "SELECT dag,tekst,lektion FROM blok WHERE reservation='edb' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND mindato <= #" & datoStr & "# AND maxDato >= #" & datoStr & "# AND #" & datoStr & "# BETWEEN #" & minDato2 "# & AND #" & maxDato2 & "#"
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
Avatar billede riishoj Nybegynder
31. august 2004 - 20:23 #8
Det er vist lidt svært at se, hvor der er "expected end of statement", så jeg prøver sådan her

BETWEEN #" & minDato2 "
----------------------^
Avatar billede riishoj Nybegynder
31. august 2004 - 20:25 #9
Det blev ikke meget bedre. tegnet ^ står lige under " efter minDato2.
Avatar billede phineas_phreak Nybegynder
31. august 2004 - 21:16 #10
Expected end of statement

har ikke noget at gøre med din SQL streng at gøre.

der må mangle et END IF et andet sted i din kode.
Avatar billede riishoj Nybegynder
31. august 2004 - 21:39 #11
Vi prøver lige at vende bøtten. Her er lidt mere af scriptet.

for dag = 1 to 5
 
  datoStr = UgeTilDato(aar, uge, 1)
datoStr = Month(datoStr) & "-" & Day(datoStr) & "-" & Right(Year(datoStr),2)


strSQL = "SELECT dag,tekst,lektion FROM blok WHERE reservation='edb' AND dag='" & SQLdag(dag) & "' AND lektion='" & lektion & "' AND minDato <= #" & datoStr & "# AND maxDato >= #" & datoStr & "# AND minDato2 <= #" & datoStr & "# AND maxDato2 >= #" & datoStr & "#"

set rs = Conn.Execute(strSQL)

if not (rs.EOF or rs.BOF) then
Response.write"<td border=1  bordercolor=#0000FF bordercolordark=#FFFFFF bordercolorlight=#0000F width=18% height=40 bgcolor=red><font face=Verdana size=1 color=#FFFFFF><p align=center>"&rs("tekst")&"</font></td>"

Jeg kan altså ikke se, at der er noget galt med syntaxen i sql'en, jeg får da heller ingen fejlmeddelelse, men det som er problemet, er at der intet sker.
Hvis jeg derimod sletter den sidste del i sql'en, som har med felterne minDato2 og maxDato2, så virker den ok, men naturligvis kun inden for de datoer, som sættes af minDato og maxDato. Hvis syntaxen er ok, så burde jeg vel også kunne hente de datoer som begrænses af minDato2 og maxDato2.
Avatar billede riishoj Nybegynder
02. september 2004 - 08:46 #12
Lukker spm.
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