webForumDet fria alternativet

Felmeddelande "För få parametrar"

ASP

18 svar · 239 visningar · startad av JAreMANNEN

Medlem sedan aug. 20002 272 inlägg
Frågan#1

Kan ni hitta något som är fel på denna kodsnutt??? Inte jag iaf...

Dim checkbox, veckodag, sok, strSQL
checkbox = Request.Form("sort_pris")
veckodag = Request.Form("veckodag")
sok = Request.Form("sok")

strSQL = "SELECT * FROM " & veckodag & " WHERE sok = '%" & sok & "'"
If checkbox = "checkbox" Then
strSQL = strSQL & " ORDER BY Pris DESC"
Else
strSQL = strSQL & " ORDER BY rest "
End If
response.write(strSQL)
Set objRS = Connection.Execute(strSQL)

Denna kod generera följande felmeddelande:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
sok.asp, line 18

Felet ligger "som vanligt" på raden som exekverar SQL-satsen.....

------------------
Det är lättare att leva ett rikt liv som ung, när man vet att det väntar ett som gammal
E-post

Medlem sedan juni 20001 257 inlägg
#2

Det felet får jag också ibland. Men när jag trycker Reload så fungerar det. Märkligt.

------------------
http://www.gratistavlingar.com

Medlem sedan juni 200032 967 inlägg
#3

som vanligt, det är sql-frågan det är fel på, skriv ut den med response.write så ser du vad som är fel.

jag gissar på att variabeln veckodag inte har något värde.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan juni 20001 257 inlägg
#4

Men hur kan felet uppstå bara ibland, för mig alltså?

------------------
http://www.gratistavlingar.com

Medlem sedan aug. 20002 272 inlägg
#5

veckodag har värde måndag, tisdag eller onsdag o.s.v. Beroende på vad man väljer ur rullningslisten...

den listan heter veckodag, då blir väl Request.Form("veckodag") rätt.....??!!

Felet ligger nog snarare i:

strSQL = "SELECT * FROM " & veckodag & " WHERE sok = '%" & sok & "'"

...för tar jag bort WHERE sok = '%" & sok & "' så funkar det..fast du listar den juh alla poster...

------------------
Det är lättare att leva ett rikt liv som ung, när man vet att det väntar ett som gammal
E-post

[Redigerat av JAreMANNEN den 19 jan 2001]

Medlem sedan dec. 19996 721 inlägg
#6

Det ska vara

WHERE sok LIKE '%

Medlem sedan aug. 20002 272 inlägg
#7

Funkar inte...fortfarande För få parametrar.. :(

------------------
Det är lättare att leva ett rikt liv som ung, när man vet att det väntar ett som gammal
E-post

Medlem sedan juni 200032 967 inlägg
#8

skriv ut den med response.write så ser du vad som är fel.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan dec. 19996 721 inlägg
#9

Ja, definitivt! Jag gör det nästan alltid, innan jag drar dit en execute/open.

Sedan måste jag få fråga om syftet med att ha val av tabell dynamiskt så där.... Varför inte bara en tabell?

Medlem sedan aug. 20002 272 inlägg
#10

Det blir juh t.o.m ERROR när man ska skriva ut den...Fy faan vad irriterad jag é nu...

Svar till emission:
Ska söka igenom tabell beroende på val i rullningslista på föregående sida.. :)

------------------
Det är lättare att leva ett rikt liv som ung, när man vet att det väntar ett som gammal
E-post

Medlem sedan aug. 20002 272 inlägg
#11

Skit samma, ordnade det där nu..

Söker inte man igenom food_1, food_2, food_3, food_4 kloumnerna i databasen med följande: ?

strSQL = "SELECT * FROM " & veckodag & " WHERE food_1 LIKE '" & sok & "%' OR food_2 LIKE '" & sok & "%' OR food_3 LIKE '" & sok & "%' OR food_4 LIKE '" & sok & "%' "

------------------
Det är lättare att leva ett rikt liv som ung, när man vet att det väntar ett som gammal
E-post

Medlem sedan juni 200032 967 inlägg
#12

du ska ha procenttecken före sökordet också, eftersom det är ett wildcard. annars söks det endast där fälten börjar med sökordet.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan juli 20003 825 inlägg
#13

If checkbox = "checkbox" Then
strSQL = strSQL & " ORDER BY Pris DESC"
Else
strSQL = strSQL & " ORDER BY rest "
End If

Ursäkta att jag lägger mig i din kod... men har du inte lite diffusa namnval!? Måste man döpa en checkbox till "checkbox"?

Medlem sedan aug. 20002 272 inlägg
#14

Håller med dig helt om att det var lite onödigt namnval.. Blev bara så i "hasten" .. :e

------------------
Det är lättare att leva ett rikt liv som ung, när man vet att det väntar ett som gammal
E-post

Medlem sedan aug. 20002 272 inlägg
#15

Nu har jag nog rört ihop det hela lite grann..postar därför mina sidor igen...

formulärsidan som skickar iväg informationen...

<form name="sok" method="post" action="sok.asp">
  <p>S&ouml;k: 
    <input type="text" name="sok">
    <i>(tex r&ouml;dsp&auml;tta, k&ouml;ttbullar, spaghetti)</i></p>
  <p>
<select name="veckodag">
      <option name="veckodag" selected value="måndag">Måndag</option>
      <option value="tisdag">Tisdag</option>
      <option value="onsdag">Onsdag</option>
      <option value="torsdag">Torsdag</option>
      <option value="fredag">Fredag</option>
    </select>
  </p>
  <p>
    <input type="checkbox" name="sort_pris" value="checkbox">
    Sortera efter pris</p>
  <p>
    <input type="submit" name="Submit" value="S&Ouml;K">
  </p>
</form>

Sidan som tar emot informationen

<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\minsida\databas.mdb"

Dim checkbox, veckodag, sok, strSQL
checkbox = Request.Form("sort_pris")
veckodag = Request.Form("veckodag")
sok = Request.Form("sok")

strSQL = "SELECT * FROM " & veckodag & " WHERE food_1 = '%" & sok & "%' OR food_2 = '%" & sok & "%' OR food_3 = '%" & sok & "%' OR food_4 = '%" & sok & "%' "
If checkbox = "checkbox" Then
strSQL = strSQL & " ORDER BY Pris DESC "
Else
strSQL = strSQL & " ORDER BY rest "
End If
Set objRS = Connection.Execute(strSQL)
%>

Efter detta kommer oxå resten av koden som visar sökresultatet, men den är det inga prob med...

------------------
Det är lättare att leva ett rikt liv som ung, när man vet att det väntar ett som gammal
E-post

[Redigerat av JAreMANNEN den 19 jan 2001]

Medlem sedan dec. 19996 721 inlägg
#16

Ska söka igenom tabell beroende på val i rullningslista på föregående sida..

Oki. Tänkte att det vore smidigare att

SELECT FROM den_enda_tabellen WHERE veckodag='torsdag' AND.....

Medlem sedan aug. 20002 272 inlägg
#17

ingen som kan hjälpa till....

som det är nu så söker den bara i en tabell i dbn... :(

------------------
Det är lättare att leva ett rikt liv som ung, när man vet att det väntar ett som gammal
E-post

Medlem sedan jan. 2001332 inlägg
#18

Klart att det bara söker ur en tabell... Du anger ju bara ett tabellnamn med din sql-sats....

Sen vet jag inte om det spelar nån roll, men på formulärsidan har du namngett den första option-taggen med veckodag. Varför? Du har ju redan name i select-taggen. Det kan ställa till det lite.....

Sen hade jag försökt att undvika specialtecken när man sätter value.

Lycka till!

------------------
_________________________
Det ska va gott att leva!

Medlem sedan juli 20003 825 inlägg
#19

För få parametrar angavs. 1 förväntades.

Rent generellt brukar detta felmeddelande betyda att man frågar efter värden som inte finns. Alltså du frågar efter "veckodagar" men det finns ingen tabell med det namnet i din databas.

Vad jag menar är att det kan vara någon felstavning någonstanns som genererar en till synes frisk fråga. Men om du jämför frågan med hur din databas är konstruerad ser du (kanske) att de inte stämmer över ens.

Det kan också vara så att man frågar efter ett felaktigt värde, till exempel '2001-01-22' när du egentligen måste fråga efter #2001-01-22#.

Man måste ha brädgårdar runt datum, enkelfjumpar runt strängar och ingenting när man frågar efter nummer eller siffror (int) eller booleans (true/false).

Felmeddelandet genereras också då man frågar efter parametrar som av någon anledning inte har något värde. Samma där, det kan också vara någon felstavning på annan plats än just själva sql frågan. Kolla att du stavat rätt på fälten i formuläret till exempel!

Are you with!?

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)