Avatar billede hablablab Nybegynder
03. maj 2006 - 20:51 Der er 12 kommentarer og
1 løsning

´Søgefunktion i database

Jeg er ved at lave en databasestyret hjemmeside. Jeg har forsøgt at lave en søgefunktion, men den virker ikke. Tabellen i den database der skal søges i hedder "drinks" og de to felter deri der hedder "overskrift" og "opskrift".
Min kode ser således ud (linje 25-26):

Set opskrift = Server.CreateObject("ADODB.Recordset")
opskrift.Open = "SELECT * FROM opskrifter WHERE overskrift LIKE " & soegestreng & " OR opskrift LIKE " & soegestreng & " ORDER BY dato,tid, database"

Jeg får følgende fejlmeddelse i IE:

ADODB.Recordset (0x800A0E7D)
Forbindelsen kan ikke bruges til at udføre denne handling. Den er enten lukket eller ugyldig i denne sammenhæng.
/drinks/drinks.asp, line 25
Avatar billede nidyahou Praktikant
03. maj 2006 - 21:16 #1
prøv dette, who knows...

Set opskrift = Server.CreateObject("ADODB.Recordset")
opskrift.Open = "SELECT * FROM opskrifter WHERE overskrift LIKE %'" & soegestreng & "'% OR opskrift LIKE %'" & soegestreng & "'% ORDER BY dato,tid, database"
Avatar billede hablablab Nybegynder
03. maj 2006 - 21:21 #2
nej den virker heller ikke, stadig samme fejlmeddelelse.
Avatar billede rowl Nybegynder
03. maj 2006 - 21:34 #3
Set opskrift = Server.CreateObject("ADODB.Recordset")
opskrift.Open = "SELECT * FROM opskrifter WHERE overskrift LIKE '%" & soegestreng & "%' OR opskrift LIKE '%" & soegestreng & "%' ORDER BY dato,tid, database"

Ovenstående burde virke.
Men det er længe siden jeg har arbejdet med ASP, så der er måske et par syntax-fejl.
Avatar billede hablablab Nybegynder
03. maj 2006 - 21:42 #4
Den giver også samme fejlmeddelelse.
Jeg ved ikke om der kan være noget galt et andet sted i koden der er skyld i dette problem? Den skriver jo at forbindelsen ikke kan bruges til at udføre denne handling.
Avatar billede rowl Nybegynder
03. maj 2006 - 21:47 #5
Det kunne godt se ud somom din database-connection ikke virker optimalt? Eller at du lukker den inden du kører forespørgslen, hvem ved.
Avatar billede hablablab Nybegynder
03. maj 2006 - 21:59 #6
Ja det kunne være en mulighed, jeg ved bare ikke lige hvordan jeg ser det. Min kode fra linje 1 til 26 ser således ud:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<!--#include file="forbindelse.asp"-->

<%
tid = Request.QueryString("tid")
If Request.QueryString("Submit") = "" Then
        If tid = "" Then
        tid = "DESC"
        ElseIF tid = "DESC" Then
        tid = "ASC"
        Else
        tid = "DESC"
        End IF
End If

soeg = Request.QueryString("soeg")
If soeg = "" Then
        soegestreng = "%"
Else
        soegestreng = "%" & soeg & "%"
End IF

Set opskrift = Server.CreateObject("ADODB.Recordset")
opskrift.Open = "SELECT * FROM opskrifter WHERE overskrift LIKE '%" & soegestreng & "%' OR opskrift LIKE '%" & soegestreng & "%' ORDER BY dato,tid, database"
%>


Den der hedder forbindelse.asp er korrekt, den har jeg brugt tidligere til andre databaser.
Avatar billede rowl Nybegynder
03. maj 2006 - 22:05 #7
Så prøv den her:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<!--#include file="forbindelse.asp"-->

<%
tid = Request.QueryString("tid")
If Request.QueryString("Submit") = "" Then
        If tid = "" Then
        tid = "DESC"
        ElseIF tid = "DESC" Then
        tid = "ASC"
        Else
        tid = "DESC"
        End IF
End If

soeg = Request.QueryString("soeg")
If soeg = "" Then
        soegestreng = "%"
Else
        soegestreng = "%" & soeg & "%"
End IF

Set opskrift = Server.CreateObject("ADODB.Recordset")
opskrift.Open = "SELECT * FROM opskrifter WHERE overskrift LIKE '" & soegestreng & "' OR opskrift LIKE '" & soegestreng & "' ORDER BY dato "& tid
%>
Avatar billede hablablab Nybegynder
03. maj 2006 - 22:08 #8
Jeg vil næsten ikke være bekendt at sige det, men det hjælper heller ikke.
Avatar billede fennec Nybegynder
04. maj 2006 - 08:33 #9
Prøv at udskrive din SQL sætning til skærmen, så er det nemmere at se fejlen:

response.write "SELECT * FROM opskrifter WHERE overskrift LIKE '" & soegestreng & "' OR opskrift LIKE '" & soegestreng & "' ORDER BY dato "& tid

Også skulle du måske også tage hånd om ' problemet nu du er i gang:

soeg = replace(Request.QueryString("soeg"),"'","''")
Avatar billede hablablab Nybegynder
04. maj 2006 - 21:47 #10
Jeg forstår ikke helt hvad du mener med at udskrive min SQL til skærmen fennec. Jeg er rimelig ny til ASP, eller hjemmesider i det hele taget.
Avatar billede fennec Nybegynder
05. maj 2006 - 08:25 #11
Jeg har lige opdaget at din "opskrift.Open" er forkert. Du mangler en connection-string til databasen:

connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("\DinDB.mdb;")
sql = "SELECT * FROM opskrifter WHERE overskrift LIKE '" & soegestreng & "' OR opskrift LIKE '" & soegestreng & "' ORDER BY dato "& tid
set opskrift = Server.CreateObject("ADODB.Recordset")
opskrift.open sql, connStr, 1
Avatar billede hablablab Nybegynder
05. maj 2006 - 14:07 #12
Nårh ja, der var den. Tak for hjælpen. Du kan bare indlægge et svar fennec, så skal du få point.
Avatar billede fennec Nybegynder
08. maj 2006 - 08:15 #13
.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