03. maj 2006 - 20:51Der 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
Set opskrift = Server.CreateObject("ADODB.Recordset") opskrift.Open = "SELECT * FROM opskrifter WHERE overskrift LIKE %'" & soegestreng & "'% OR opskrift LIKE %'" & soegestreng & "'% ORDER BY dato,tid, database"
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.
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.
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.
<% 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 %>
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
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.