Avatar billede Slettet bruger
03. december 2005 - 15:11 Der er 8 kommentarer og
1 løsning

Spørgsmål om SELECT

Hej

Jeg har følgende select-sætning:
strSQL = "SELECT * FROM begivenheder WHERE"
strSQL = strSQL & " " & strYear & ""
strSQL = strSQL & " AND (hold LIKE " & Request.QueryString("hold") & ")"
strSQL = strSQL & " ORDER By " & strSort & ""

Her er det meningen at der blandt andet kun skal vises ting hvor "hold" er lig med min querystring, i databasen. Et eksempel på min querystrings værdi kunne for eksempel være tallet 3.
Nu vil jeg imidlertid også gerne have det sådan at man i databasen for eksempel kan skrive "3, 4" og så bliver denne række fundet hvis min querystring enten er 3 eller 4.

Hvordan kan det strikkes sammen?

Med venlig hilsen

Dan
Avatar billede dr_chaos Nybegynder
03. december 2005 - 15:13 #1
prøv med:
strSQL = "SELECT * FROM begivenheder WHERE"
strSQL = strSQL & " " & strYear & ""
strSQL = strSQL & " AND (hold LIKE %" & Request.QueryString("hold") & "%)"
strSQL = strSQL & " ORDER By " & strSort & ""
Avatar billede Slettet bruger
03. december 2005 - 15:22 #2
Det virker ikke...
Så får jeg følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in query expression 'AllY=0 AND (hold LIKE %5%)'.

***************.asp, line 344

Men det jeg er ud i er noget med en split-funktion som så kan lave den del af select-sætningen hvor min querystring indgår for hvert komma som er i databasefeltet. Men hvordan kan man eventuelt hente feltet "hold" i databsen uden at man egentligt har udført sætningen?

Det jeg er ude i er noget a la det her, det ville virke hvis bare man kunne hente feltet som hedder hold midt i det hele...:

strSQL = "SELECT * FROM begivenheder WHERE"
strSQL = strSQL & " " & strYear & ""
flerehold = split(????,",")
for i=0 to ubound(flerehold)
strSQL = strSQL & " AND (hold LIKE " & flerehold(i) & ")"
next
strSQL = strSQL & " ORDER By " & strSort & ""

De fire spørgsmålstegn er så det jeg ikke kan...

- Eller skal opgaven gribes an på en helt anden måde?

\Dan
Avatar billede Slettet bruger
03. december 2005 - 15:29 #3
SELECT * FROM begivenheder WHERE"
strSQL = strSQL & " " & strYear & ""
strSQL = strSQL & " AND hold in(" & Request.QueryString("hold") & ")"
strSQL = strSQL & " ORDER By " & strSort
Avatar billede Slettet bruger
03. december 2005 - 15:33 #4
Hej

Nej denne virker desværre heller ikke.

Her får jeg følgende fejlmeddelse:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

Kan man virkelig ikke lave det med en split-funktion eller lignende?

\Dan
Avatar billede Slettet bruger
03. december 2005 - 15:38 #5
hvilken datatype er hold ?
Avatar billede dr_chaos Nybegynder
03. december 2005 - 15:40 #6
hvad ned :
strSQL = "SELECT * FROM begivenheder WHERE"
strSQL = strSQL & " " & strYear & ""
strSQL = strSQL & " AND (hold LIKE '%" & Request.QueryString("hold") & "%')"
strSQL = strSQL & " ORDER By " & strSort & ""
Avatar billede Slettet bruger
03. december 2005 - 15:42 #7
Nu kan jeg så næsten se at det må være en varchar, så bliver du nødtil at få sat ' ' omkring de enkelte elementer i din querystring parameter sådan her:

hvis du får 3,4 skal det laves om til '3','4' inden du bruger det i

SELECT * FROM begivenheder WHERE"
strSQL = strSQL & " " & strYear & ""
strSQL = strSQL & " AND hold in(" & Request.QueryString("hold") & ")"
strSQL = strSQL & " ORDER By " & strSort
Avatar billede Slettet bruger
03. december 2005 - 17:11 #8
Hej

Mange tak for svarene!

Det var nu det ovenstående eksempel med:
strSQL = strSQL & " AND (hold LIKE '%" & Request.QueryString("hold") & "%')"
jeg kunne få det til at køre med...
Så kan dr_chaos ikke lige smide et svar for point?

Desuden kan jeg sige at "hold" er af datatypen "notat" i databasen...

- Endnu engang mange tak for hjælpen!

\Dan
Avatar billede dr_chaos Nybegynder
03. december 2005 - 17:12 #9
np :)
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