Avatar billede pelbym Nybegynder
21. august 2001 - 16:08 Der er 17 kommentarer og
1 løsning

Søgefunktion med flere ord i søgningen,søger i tabel t_koral

Hvad gør jeg Forkert ? Jeg får følgende fejlmeddelse:
Command text was not set for the command object.

Filen ser ud som følgende:

<table width=\"100%\" border=\"0\">
<tr>
<td><h1>Koraller</h1>

Dette er koralsiden hvor alle informationer omkring koraller findes.<br>
<br>
Indtast et søgeord og du vil straks få alle resultaterne nedenfor.<br>
</td>
</tr>

<tr>
<td background=\"images/straightline.gif\">&nbsp;</td>
</tr>

<tr>
<td align=\"center\">
<form action=\"soegkoral2.asp\" method=\"post\" id=form name=form>
<table border=\"0\" width=\"450\">

<tr>
<td><b>Indtast søgeord: </b></td>
<td><input type=\"text\" name=\"ord\" class=\"input\" value=\"<%=Request.form(\"ord\")%>\"> <input type=\"submit\" value=\"Søg\" class=\"button\" id=submit name=submit></td>
</tr>
<p>


</table>
</form>
</td>
</tr>
<%
If len(request.form(\"ord\")) < 3 then
%>
<tr>
<td><b>Din søgesætning skal indeholde mindst 3 tegn</b></td>
</tr>
<%
else
%>


<tr>
<td>



<%ord=Trim(Request(\"ord\"))%>

<%splittetord=Replace(ord,\" \",\"\',\'\") \'mellemrum erstattes med \',\' %>
<%splittedord=\"\'\" & splittedord & \"\'\" %>


SQL=\"select Familienavn_Engelsk, Familienavn_Dansk, Familiebeskrivelse, Handelsnavn, Latinsk_navn, Beskrivelse, Kendetegn, Opsummering from t_koral where id = \" & request.querystring(\"id\")\"
SQL=SQL & \" and (Familienavn_Engelsk=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Familienavn_Dansk=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Familiebeskrivelse=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Handelsnavn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Latinsk_navn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Beskrivelse=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Kendetegn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Opsummering=\'\" & Request(\"ord\") & \"\')\"

<%
set rs = conn.execute(SQL)
If not Rs.EOF then
%>
<br>                        <table cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#000000\" border=\"0\" width=\"100%\">
                            <tr>
                                <td width=\"100%\">
                                        <table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" width=\"100%\">
                                            <tr>
                                                <td bgcolor=\"#99CCFF\" class=\"Blok_top\"> Koraller</td>
                                            </tr>
                                        </table>
                                </td>
                            </tr>
                        </table>
<br>
<%
do while not Rs.EOF
%>
<a href=\"../database/vis_koral.asp?id=<%=rs(\"id\")%>\"><%=rs(\"latinsk_navn\")%></a> - <%=rs(\"handelsnavn\")%><br>
<%
rs.movenext
loop
end if
end if

%>



</td>
</tr>
</table>

Avatar billede ldanielsen Nybegynder
21. august 2001 - 16:14 #1
SQL=\"select Familienavn_Engelsk, Familienavn_Dansk, Familiebeskrivelse, Handelsnavn, Latinsk_navn, Beskrivelse, Kendetegn, Opsummering from t_koral where id = \" & request.querystring(\"id\")\"

Slet det sidste \" :
SQL=\"select Familienavn_Engelsk, Familienavn_Dansk, Familiebeskrivelse, Handelsnavn, Latinsk_navn, Beskrivelse, Kendetegn, Opsummering from t_koral where id = \" & request.querystring(\"id\")
Avatar billede pelbym Nybegynder
21. august 2001 - 16:27 #2
Der er stadigvæk samme fejlmeddelse !
Avatar billede ldanielsen Nybegynder
21. august 2001 - 17:39 #3
Du har alt for mange <% og %>. De skal blot være omkring koden. Resultatet er at din definition af strengen SQL er UDENFOR tagsene.

Prøv dette:

<%

ord=Trim(Request(\"ord\"))
splittetord=Replace(ord,\" \",\"\',\'\") \'mellemrum erstattes med \',\'
splittedord=\"\'\" & splittedord & \"\'\"


SQL=\"select Familienavn_Engelsk, Familienavn_Dansk, Familiebeskrivelse, Handelsnavn, Latinsk_navn, Beskrivelse, Kendetegn, Opsummering from t_koral where id = \" & request.querystring(\"id\")
SQL=SQL & \" and (Familienavn_Engelsk=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Familienavn_Dansk=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Familiebeskrivelse=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Handelsnavn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Latinsk_navn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Beskrivelse=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Kendetegn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Opsummering=\'\" & Request(\"ord\") & \"\')\"

set rs = conn.execute(SQL)
If not Rs.BOF then
%>

osv osv


Bemærk også at jeg har rettet EOF til BOF
Avatar billede pelbym Nybegynder
21. august 2001 - 18:29 #4
Får desværre følgende fejlmeddelse, ved at søge på gule røde:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)
[TCX][MyODBC]You have an error in your SQL syntax near \'and (Familienavn_Engelsk=\'gule røde\' or Familienavn_Dansk=\'gule røde\' or Familie\' at line 1
/soegning/soegkoral2.asp, line 115
Avatar billede pelbym Nybegynder
22. august 2001 - 10:43 #5
Argggg jeg ved ikke hvad jeg får gjort galt ! Please help....
Avatar billede Slettet bruger
22. august 2001 - 11:29 #6
udskriv din sql query til skærmen, og skriv meddelelsen her...
Avatar billede ldanielsen Nybegynder
22. august 2001 - 16:18 #7
HØRT
Avatar billede pelbym Nybegynder
22. august 2001 - 17:04 #8
Ok men hvordan gør jeg det..?
Avatar billede ldanielsen Nybegynder
22. august 2001 - 17:24 #9
....
SQL=SQL & \" or Handelsnavn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Latinsk_navn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Beskrivelse=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Kendetegn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Opsummering=\'\" & Request(\"ord\") & \"\')\"

Response.Write SQL
Response.end


set rs = conn.execute(SQL)
If not Rs.BOF then
..
Avatar billede pelbym Nybegynder
23. august 2001 - 11:53 #10
Ok, så ser det sådan ud...

select Familienavn_Engelsk, Familienavn_Dansk, Familiebeskrivelse, Handelsnavn, Latinsk_navn, Beskrivelse, Kendetegn, Opsummering from t_koral where id = and (Familienavn_Engelsk=\'gule røde\' or Familienavn_Dansk=\'gule røde\' or Familiebeskrivelse=\'gule røde\' or Handelsnavn=\'gule røde\' or Latinsk_navn=\'gule røde\' or Beskrivelse=\'gule røde\' or Kendetegn=\'gule røde\' or Opsummering=\'gule røde\')


Dvs. der må være en fejl ved den første select sætning
SQL=\"select Familienavn_Engelsk, Familienavn_Dansk, Familiebeskrivelse, Handelsnavn, Latinsk_navn, Beskrivelse, Kendetegn, Opsummering from t_koral where id = \" & request.querystring(\"id\")

Men hvor ?
Avatar billede morw Nybegynder
23. august 2001 - 13:46 #11
request.querystring(\"id\") er tom

Se \"id = and\"
Avatar billede pelbym Nybegynder
23. august 2001 - 14:44 #12
Hmmm er der negen forskel på at benytte request.form(\"ord\") og request(\"ord\") ?

Jeg har en del forståelses mæssige problemer tror jeg nok....

Jeg har prøvet et nyt eksempel kommer her...


ord=Trim(Request(\"ord\"))
splittetord=Replace(ord,\" \",\"\',\'\") \'mellemrum erstattes med \',\'
splittedord=\"\'\" & splittedord & \"\'\"


SQL=\"select * from t_koral where Familienavn_Engelsk =\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Familienavn_Dansk=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Familiebeskrivelse=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Handelsnavn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Latinsk_navn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Beskrivelse=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Kendetegn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Opsummering=\'\" & Request(\"ord\") & \"\'\"


set rs = conn.execute(SQL)
If not Rs.BOF then

Der er ingen fejl, men heller ikke noget resultat !
Avatar billede pelbym Nybegynder
23. august 2001 - 14:59 #13
Her er min sql query\'s resultat

select * from t_koral where Familienavn_Engelsk =\'røde gule grønne\' or Familienavn_Dansk=\'røde gule grønne\' or Familiebeskrivelse=\'røde gule grønne\' or Handelsnavn=\'røde gule grønne\' or Latinsk_navn=\'røde gule grønne\' or Beskrivelse=\'røde gule grønne\' or Kendetegn=\'røde gule grønne\' or Opsummering=\'røde gule grønne\'
Avatar billede ldanielsen Nybegynder
23. august 2001 - 16:08 #14
Jeg ved faktisk ikke hvad detr sker når men bruger request alene, men du skal blot forstå forskellen:

Request.querystring henter værdier fra url\'en, dvs det der kommer efter ?:

fil.asp?id=4&ord=gul

Request.querystring(\"id\") = \"4\"
Request.querystring(\"ord\") = \"gul\"

Hvis du laver en form med method=get, så bliver værdierne sendt med på den måde

Hvis du derimod, som du gr her bruger method=post, så sendes værdierne usynligt, i headeren, og hentes med Request.Form

Avatar billede pelbym Nybegynder
23. august 2001 - 18:50 #15
Er forstået, men er min opdeling af ord i selve formen korrekt, kan man gøre det på denne måde ?
Avatar billede ldanielsen Nybegynder
24. august 2001 - 16:17 #16
Tja ..

Du skal jo have noget der hedder id, og det har du ikke!! De id-atributter der er i din html har intet med sagen at gøre, slet dem hvis du ikke bruger dem.

Du skal gøre et af følgende:

Enten skal du bruge Request.Querystring(\"id\"), og så akn du få den med ved at skrive:

<form action=\"soegkoral2.asp?id=45\" method=\"post\" id=form name=form>

ELLER du kan bruge Request.Form(\"id\"), og så må du lave id som et felt:
<input type=hidden name=\"id\" value=\"45\">

I begge tilfælde har jeg sat id til at være 45, hvordan du får den korrekte værdi ind må du så finde ud af.

Den første løsning er lidt sjov; der bruger du både Querystring og Form. De4t kan man sagtens.


Avatar billede pelbym Nybegynder
24. august 2001 - 18:43 #17
Mener du ?

<form action=\"soegkoral2.asp id=<%Request.QueryString(\"id\")%>\" method=\"post\" id=form name=form>

For ellers har jeg det skrevet det i toppen af filen. Det er meningen at den refererer til sig selv, idet den reloader siden igen med resultatet forneden. Klikkes der på resultatet af søgningen, går man til vis_koral.asp

Men der sker ingen tng, er det pga. min id ? Jeg kan ikke skrive som du skrev med id=45, så får jeg en fejl. Også selvom der er mere end 45 poster i min tabel !
Avatar billede pelbym Nybegynder
21. september 2001 - 17:04 #18
Hmmm jeg har selv fundet ud af det siden hen...

Her er løsningen, håber det kan hjælpe andre !

<%

ord=Trim(Request.form(\"ord\"))
OrdArray = Split(ord, \" \")

SQL=\"select * from t_koral where Familienavn_Engelsk = \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Familienavn_Dansk = \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Familiebeskrivelse LIKE \'%\" & Request.form(\"ord\") & \"%\'\"
SQL=SQL & \" or Handelsnavn = \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Latinsk_navn = \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Beskrivelse LIKE \'%\" & Request.form(\"ord\") & \"%\'\"
SQL=SQL & \" or Kendetegn LIKE \'%\" & Request.form(\"ord\") & \"%\'\"
SQL=SQL & \" or Opsummering LIKE \'%\" & Request.form(\"ord\") & \"%\'\"
For i = 0 to ubound(OrdArray)
SQL=SQL & \" or Familienavn_Engelsk = \'\" & OrdArray(i) & \"\'\"
SQL=SQL & \" or Familienavn_Dansk = \'\" & OrdArray(i) & \"\'\"
SQL=SQL & \" or Familiebeskrivelse LIKE \'%\" & OrdArray(i) & \"%\'\"
SQL=SQL & \" or Handelsnavn = \'\" & OrdArray(i) & \"\'\"
SQL=SQL & \" or Latinsk_navn = \'\" & OrdArray(i) & \"\'\"
SQL=SQL & \" or Beskrivelse LIKE \'%\" & OrdArray(i) & \"%\'\"
SQL=SQL & \" or Kendetegn LIKE \'%\" & OrdArray(i) & \"%\'\"
SQL=SQL & \" or Opsummering LIKE \'%\" & OrdArray(i) & \"%\'\"
Next

set rs = conn.execute(SQL)
If not Rs.EOF then
%>


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
Computerworld tilbyder specialiserede kurser i database-management

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