Avatar billede mskjoldp Novice
28. december 2004 - 13:03 Der er 3 kommentarer og
1 løsning

select efter søgning

Hej E
(IIS 5.0 / Access / ASP / IE)

Jeg er ved at lave en SELECT string fra en søgning der skal hente et db'ustræk.

jeg har sat udtrækket til at ske via variablen hent. Det er som det skal være...

Set rs = Conn.Execute(hent)

ifm med en søgning indtastes fx 005 i søgefeltet, der sender strSQL til siden der viser resultatet, men det driller. Jeg har prøvet med at sende strSQL således fra søgesiden:
Response.Redirect("default.asp?mode=sogstatus&hentsog='"&strSQL&"'")
men strSQL godtages ikke.

Fejlen lyder ved Conn.Execute:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en ugyldig SQL-sætning. "DELETE", "INSERT", "PROCEDURE","SELECT" eller "UPDATE" var ventet.

Hvis jeg skriver strSQL ud inden redirect på søgesiden, ser den således ud:
SELECT * FROM fly_status WHERE (MOC_stelnr LIKE '%005%') OR (MOC_enhed LIKE '%005%') OR (MOC_status LIKE '%005%') OR (MOC_sortering LIKE '%005%') OR (MOC_blocknr LIKE '%005%') OR (MOC_MLU LIKE '%005%') OR (MOC_minutter LIKE '%005%') OR (MOC_SI_min LIKE '%005%') OR (S_lokation LIKE '%005%') OR (S_plan_dato LIKE '%005%') OR (S_ind_dato LIKE '%005%') OR (S_ud_dato LIKE '%005%') OR (S_bem LIKE '%005%') OR (S_FCF LIKE '%005%') OR (S_V_NT_Egress LIKE '%005%') OR (S_V_NT_Vaaben LIKE '%005%') OR (S_V_NT_Dinghy LIKE '%005%') OR (S_V_NT_stel LIKE '%005%') OR (S_V_NT_bem LIKE '%005%') ORDER BY MOC_stelnr

Er der noget galt med den?

Så har jeg prøvet med at replace på søgesiden:
strSQL = replace(strSQL, "%", "^")
strSQL = replace(strSQL, "'", "~")
Response.Redirect("default.asp?mode=sogstatus&hentsog='"&strSQL&"'")

og så på den side der skal vise udtrækket:
hent = Request.QueryString("hentsog")
hent = replace(hent, "^", "%")
hent = replace(hent, "~", "'")
Set rs = Conn.Execute(hent)

men det giver samme fejl ved Conn.Execute:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en ugyldig SQL-sætning. "DELETE", "INSERT", "PROCEDURE","SELECT" eller "UPDATE" var ventet.

Så har jeg prøvet at copy/past strSQL og indsat det som en variabel på siden der viser søgeresultatet, således:
hent = "SELECT * FROM fly_status WHERE (MOC_stelnr LIKE '%005%') OR (MOC_enhed LIKE '%005%') OR (MOC_status LIKE '%005%') OR (MOC_sortering LIKE '%005%') OR (MOC_blocknr LIKE '%005%') OR (MOC_MLU LIKE '%005%') OR (MOC_minutter LIKE '%005%') OR (MOC_SI_min LIKE '%005%') OR (S_lokation LIKE '%005%') OR (S_plan_dato LIKE '%005%') OR (S_ind_dato LIKE '%005%') OR (S_ud_dato LIKE '%005%') OR (S_bem LIKE '%005%') OR (S_FCF LIKE '%005%') OR (S_V_NT_Egress LIKE '%005%') OR (S_V_NT_Vaaben LIKE '%005%') OR (S_V_NT_Dinghy LIKE '%005%') OR (S_V_NT_stel LIKE '%005%') OR (S_V_NT_bem LIKE '%005%') ORDER BY MOC_stelnr "
Set rs = Conn.Execute(hent)

Og det virker perfekt, jeg får det søgeresultat jeg havde ventet...

Hvordan får jeg sendt strSQL fra søge-siden via en Response.redirect til visudtrækket-siden?
/Skjoldp
Avatar billede Slettet bruger
28. december 2004 - 13:09 #1
Du kan prøve at lægge sql'en i en session og så bruge den:

dvs på søgesiden laver du en Session("soegsql") = strSQL og så bruger du den på din udtræksside.

Det kan være noget med hvor mange tegn der kan oversøres fra en side til en anden der driller.
Avatar billede mskjoldp Novice
28. december 2004 - 13:20 #2
ok... prøver det
Avatar billede mskjoldp Novice
28. december 2004 - 13:33 #3
Yes, det var længden af strSQL. Den må have været for lang.

Thx bertie

Svar
Avatar billede Slettet bruger
28. december 2004 - 13:52 #4
Fint :-)
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