Avatar billede hanne-rk Nybegynder
18. september 2003 - 12:56 Der er 26 kommentarer og
1 løsning

fejl i søgefunktion

jeg får denne fejl i søgefunktion:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/ic/soeg.asp, line 32
-----
linie 32 ser sådan ud : Set rs = myConn.Execute(strSQL)

og er en del af denne søgefunktion:

<%
' Henter værdien fra soeg.htm
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("velkommen.htm")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT Nr, Beskrivelse FROM varer where "
strSQL = strSQL & " (Nr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Betegnelse LIKE '%" & strKeyword & "%')"



' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("data/prisbog.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
response.write "<form NAME='itemsform'>"
Do While Not rs.EOF
%>
Avatar billede keysersoze Ekspert
18. september 2003 - 12:58 #1
hvis "Nr" i databasen er af typen tal og ikke tekst eller notat så prøv dette;

strSQL = "SELECT Nr, Beskrivelse FROM varer where "
strSQL = strSQL & " (Nr LIKE %" & strKeyword & "%)"
strSQL = strSQL & " OR (Betegnelse LIKE '%" & strKeyword & "%')"
Avatar billede hanne-rk Nybegynder
18. september 2003 - 13:01 #2
nu får jeg denne fejl :
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i forespørgselsudtrykket "(Nr LIKE %GLAS%) OR (Betegnelse LIKE '%GLAS%')".
/soeg.asp, line 31
Avatar billede keysersoze Ekspert
18. september 2003 - 13:10 #3
Ja - det kan du ikke så...

Er "Nr" i tal-felt eller tekst/notet i databasen?
Avatar billede botha Nybegynder
18. september 2003 - 13:14 #4
tal
Avatar billede botha Nybegynder
18. september 2003 - 13:14 #5
men jeg kan da ændre den til tekst, hvis det hjælper
Avatar billede keysersoze Ekspert
18. september 2003 - 13:18 #6
ændrer du det til tekst vil det script du postede højst sandsynligt virke - til gengæld vil du ikke kunne sortere feltet på samme måde som et rigtigt tal-felt.

Vil du beholde det som et talfelt så prøv engang noget a la dette;

strSQL = "SELECT Nr, Beskrivelse FROM varer where "
If isnumeric(strKeyword) = true Then
strSQL = strSQL & " (Nr LIKE %" & strKeyword & "%)"
End If
strSQL = strSQL & " OR (Betegnelse LIKE '%" & strKeyword & "%')"
Avatar billede botha Nybegynder
18. september 2003 - 13:26 #7
tja nu får jeg denne:
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'OR (Betegnelse LIKE '%glas%')'.
Avatar billede keysersoze Ekspert
18. september 2003 - 13:31 #8
DOH!

strSQL = "SELECT Nr, Beskrivelse FROM varer where "
If isnumeric(strKeyword) = true Then
strSQL = strSQL & " (Nr LIKE %" & strKeyword & "%) OR "
End If
strSQL = strSQL & " (Betegnelse LIKE '%" & strKeyword & "%')"
Avatar billede botha Nybegynder
18. september 2003 - 13:35 #9
tilbage ved start :

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Avatar billede tdimhcs Nybegynder
18. september 2003 - 13:52 #10
Prøv med:

strSQL = strSQL & " Betegnelse LIKE ('%" & strKeyword & "%')"

/kurt
Avatar billede hanne-rk Nybegynder
18. september 2003 - 15:52 #11
:-(

heller ikke stadig samme fejl

er der ikke en som kan lave mig en ny søgefunktion som virker :-)

der skal søges i 2 kollonner : Nr og Beskrivelse

resultat skrives på resultatside
Avatar billede keysersoze Ekspert
18. september 2003 - 17:54 #12
hvilken felttype er "Betegnelse"?

Og kan du evt give os hele dit script for at udelukke fejlen ikke sker et andet sted på siden...
Avatar billede c Nybegynder
18. september 2003 - 19:56 #13
er du sikker på at ALLE kolonne navne er stavet rigtigt?
Avatar billede Slettet bruger
18. september 2003 - 20:10 #14
Undskyld mig, men hvorfor svarer botha på hanne-rk's spørgsmål?
Avatar billede hanne-rk Nybegynder
18. september 2003 - 21:23 #15
hi - ganske enkelt fordi jeg var nede på min mands arbejde
Avatar billede hanne-rk Nybegynder
18. september 2003 - 21:24 #16
JA- jeg ER sikker på at alle kolonner er staver rigtigt..
Avatar billede hanne-rk Nybegynder
18. september 2003 - 21:25 #17
er der ikke nogen som har et godt søge script ??
Avatar billede keysersoze Ekspert
18. september 2003 - 21:27 #18
http://activedeveloper.dk/aspdigital/kapitel2/search.asp - men tror det er det samme du har brugt...

prøv at kom med HELE dit script...
Avatar billede hanne-rk Nybegynder
18. september 2003 - 21:34 #19
ok jeg har forenklet det lidt :
---
<% Response.Buffer = True %>
<html><head>
<title>Søgeresultat</title>
</head><body link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF" bgcolor="#50639B">
<h2 align="center"><font color="#FFFFFF">Søgeresultat på <% = request.form ("keyword") %></font></h2>
<%
' Henter værdien fra soeg.htm
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("velkommen_til_shop.htm")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT Nr, Beskrivelse FROM varer where "
strSQL = strSQL & " (Nr LIKE %" & strKeyword & "%)"
strSQL = strSQL & " OR (Betegnelse LIKE '%" & strKeyword & "%')"


' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("data/icl-prisbog.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
   
    Do While Not rs.EOF
%>
<% response.write rs("beskrivelse")%>
<%
rs.MoveNext
Loop%>
<%
' Rydder op efter os
myConn.Close
Set myConn = Nothing
end if
%>
</html>
Avatar billede keysersoze Ekspert
18. september 2003 - 21:40 #20
og hvis du benytter ovenstående præcis sådan - så kommer fejlen

Too few parameters. Expected 1.

/ic/soeg.asp, line 32

?
Avatar billede hanne-rk Nybegynder
18. september 2003 - 21:45 #21
så kommer denne

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i forespørgselsudtrykket "(Nr LIKE %gl%) OR (Betegnelse LIKE '%gl%')".
Avatar billede keysersoze Ekspert
18. september 2003 - 22:04 #22
jeg har faktisk ikke prøvet det - men hvis "nr" stadig er et tal-felt, så kunne det tyde på at du ikke må benytte LIKE ved talfelter - prøv engang;

strSQL = "SELECT Nr, Beskrivelse FROM varer where "
If isnumeric(strKeyword) = true Then
strSQL = strSQL & " (Nr = " & strKeyword & ") OR "
End If
strSQL = strSQL & " (Betegnelse LIKE '%" & strKeyword & "%')"
Avatar billede hanne-rk Nybegynder
18. september 2003 - 22:09 #23
nr er et tekst felt
Avatar billede hanne-rk Nybegynder
18. september 2003 - 22:11 #24
Hvis jeg bruger den får jeg denne :

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.
/soeg.asp, line 32


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)

Side:
POST 68 bytes to /soeg.asp

POST Data:
soeg=S%F8g+efter%26nbsp%3Bvare+%3CBR%3Eeller+varenummer&Keyword=glas
Avatar billede keysersoze Ekspert
18. september 2003 - 22:25 #25
der er en ting jeg ikke helt forstår... til at starte med fik du fejl i linie 32 - så puttede jeg 2 ekstra linier ind på linie 21 + 32 så derfor burde din fejl være flyttet 2 pladser ned til linie 34, men du får stadig fejlen i linie 32???

fjerne de tre linier med strSQL - og indsæt i stedet;

strSQL = "SELECT * FROM varer"

og fortæl mig hvad der så sker
Avatar billede hanne-rk Nybegynder
18. september 2003 - 22:28 #26
hmmm jeg gik nu tilbage og lavede det første du foreslog mig, og lavede om til at være "tal" istedet for tekst.

Og JUBIII nu virker det - hmmm jeg synes ellers at jeg havde gjort det en gang.

Undskyld al bøvlet, men du får nogle velfortjente point.

Tak for hjælpen

Svar lige - Ik' å... :-)
Avatar billede keysersoze Ekspert
18. september 2003 - 22:48 #27
erhm - ok :)

svar
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