kan man spørge efter en cookie på denne måde: me = request.Cookies("me") og skrive: if me = "" then me = True hvis cookie ikke findes for derefter af benytte den i en SQL som ser sådan ud: SELECT * FROM produkt WHERE cid = 2 AND pl = True or me = True
Tjo - det kunne du sådan set godt, men du sætter den sql-streng forkert sammen. Eller: SELECT * FROM produkt WHERE cid = 2 AND (pl or me) eller SELECT * FROM produkt WHERE cid = 2 AND (pl=1 or me=1) Men det betyder jo så også at pl og me skal passe på nogen feltnavne i din tabel.
"Too few parameters. Expected 2" betyder som regel at man har skrevet et par feltnavne eller lignende i sætningen, som ikke findes.
Problemet er, at pl ikke er "" efter en request.Cookies("pl") (og me ligeså), hvis den cookie ikke findes. Nå er den null. Du skal spørge if isnull(me) then me = true
Det er nok mere kompliceret end som så! SELECT * FROM produkt WHERE cid = 2 AND pl = True or me = True
I min tabel produkt har jeg pl eller me som kan være true/false Jeg skal have bygget det ind i denne SQL. Jeg kan ikke benytte tabellen relation som også benyttes i SQL (til noget andet)
RS_SQL = "SELECT * FROM produkt " if CID_SQL <> "" then if Ubound(Temp)>0 then 'Mere end 1 RS_SQL = RS_SQL & " WHERE produkt_id IN (SELECT produkt_id " & _ "FROM relation " & _ "WHERE cid="&Temp(0)&") AND produkt_id IN (SELECT produkt_id " & _ "FROM relation WHERE cid="&Temp(1)&") " else RS_SQL = RS_SQL & "WHERE produkt_id IN (SELECT distinct produkt_id FROM relation WHERE cid = "&CID_SQL&" )" end if elseif Fritekst_SQL <> "" Then Fritekst_SQL = replace(Fritekst_SQL,"'","''") RS_SQL = RS_SQL & "WHERE ( navn_dk like '%"&Fritekst_SQL&"%' OR beskrivelse_dk like '%"&Fritekst_SQL&"%' ) " elseif LimitSearch_SQL <> "" Then TempSql = split(LimitSearch_SQL, ",") RS_SQL = RS_SQL & " WHERE produkt_id IN " for c = 0 to Ubound( TempSql ) if c <> 0 then RS_SQL = RS_SQL & " AND produkt_id IN " 'Ikke den første, men alle andre RS_SQL = RS_SQL & "(SELECT distinct produkt_id FROM relation WHERE cid = "&TempSql(c)&" ) " next end if RS_SQL = RS_SQL & " ORDER BY navn_dk" %>
nej det er ikke dette, dette virker fint, relation har virket fint og er ok. Det er et addon Det er nok mere kompliceret end som så! SELECT * FROM produkt WHERE cid = 2 AND pl = True or me = True
Jeg tvivler på at der er noget kompliceret i det. Det er nok nærmere et spørgsmål om at du har stirret dig blind på det forkerte sted.
Tilbage til starten:
Fejlen som du siger du får: "Too few parameters. Expected 2." betyder at database driveren tror at du mangler at angive to parametre.
Det gør du bare ikke, for du har ikke angivet nogen parametre i din sql-sætning, så det må være to feltnavne du har skrevet forkert, eller som ganske enkelt ikke findes i den database/tabel du forespørger.
Hvis man har problemer med en sql-sætning er det en god idé at udskrive sql-sætningen lige før man normalt ville udføre den.
Så hvis du fx får problemer i et par linier som: sql="SELECT * FROM produkt WHERE cid = " & cid & " AND pl = " & pl & " or me = " & me Set rs=Conn.Execute(sql)
Så ændrer man linierne til: sql="SELECT * FROM produkt WHERE cid = " & cid & " AND pl = " & pl & " or me = " & me Response.Write "<br>SQL:" & sql & "<br>" Response.End Set rs=Conn.Execute(sql)
"kører siden", og kigger på hvad det egentligt er man har bedt sin database om.
- Morten
Synes godt om
Ny brugerNybegynder
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.