Felmeddelande "För få parametrar"

ASP

18 svar · 269 visningar · startad av JAreMANNEN

Medlem sedan aug. 20002 272 inlägg
Trådstart#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.....

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.

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.

Medlem sedan juni 20001 257 inlägg
#4

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

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...

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.. :(

Medlem sedan juni 200032 967 inlägg
#8

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

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.. :)

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 & "%' "
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.

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

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...

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... :(

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!

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!?

285 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
145 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)