Felet är att du använder GET som metod för formulen. Vid GET kommer alla form-element att skrivas som querystrings.
Så antingen ändrar du metoderna till POST eller så skrivet du Request.QueryString istället...
8 svar · 234 visningar · startad av Johanna
Hej!
Ett värde (idnr) som jag skickar via en formtag med hidden skall hämtas upp på nästa sida med kommandot Request.Form("idnrvarde"). Detta värde skall i sin tur skickas vidare till en ny sida via en formtag med hidden. På slutdestinationssidan skall värdet åter hämtas upp med Request.Form("idnrvarde"). Det misslyckas.... Nedan bifogas relevant kod för de olika sidorna.
Sid 1 ***
<%idnr = RS("KliNr")%>
<form name="form1" method="GET" action="kontakterframe.asp" >
<input type= "hidden" name="idnrvarde" value= "<%=idnr%>">
</form>
Sid 2 *** (kontakterframe.asp)
<form method = "GET" name ="form" action = "kontaktermeny.asp">
<%idnr=Request.Form("idnrvarde")%>
<input type="hidden" name ="idnrvarde" value ="<%=idnr%>" >
</form>
Sid 3 *** (kontaktermeny.asp)
<%idnr = Request.Form("idnrvarde")%>
Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject ("ADODB.Recordset")
Conn.Open ("DBklient")
SQL = "SELECT FIRSTNAME, LASTNAME, JOBTITLE1 FROM ucoKlientKontakt WHERE Klientnr = "&idnr&" "
RS.Open SQL, Conn, 1,2
Felmeddelandet lyder såhär;
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'Klientnr ='.
/kontaktermeny.asp, line 27
**** vilket syftar på SQL-frågan i sid 3 ovan.
Vad är fel?
Felet är att du använder GET som metod för formulen. Vid GET kommer alla form-element att skrivas som querystrings.
Så antingen ändrar du metoderna till POST eller så skrivet du Request.QueryString istället...
Hej Torbjörn!
Jag har POST som metod, det fungerar tyvärr inte ändå. (Jag testade bara med GET och glömde ändra detta innan jag klistarade in koden i mitt meddelande....sorry...)
Spooky!
Kontrollera var värdet försvinner. På "mellansidan" eller på "registreringssidan"?
Ett tips är att skriva ut sql-satsen INNAN du exekverar den. Det brukar underlätta när man buggtestar.
Ett annat tips är att inte använda sig av Recordset i onödan. De är långsammare än Connection-objektet. Connection.Execute returnerar, om man så vill, ett statiskt Recordset. Din tredje sida skulle kunna lika gärna se ut så här:
idnr = Request.Form("idnrvarde")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ("DBklient")
SQL = "SELECT FIRSTNAME, LASTNAME, JOBTITLE1 FROM ucoKlientKontakt WHERE Klientnr = " & idnr
Set objRec = Conn.Execute SQL
Där objRec blir ditt skapade recordset.
Hej igen!
Tack för tipsen!(du menar att man kan använda ObjRec när man enbart skall läsa från databasen? Ska man skriva, lägga till eller modifiera så måste man sätta upp ett riktigt recordset? Har jag uppfattat saken korrekt?)
Till saken;
Jag provar med att sätta fasta, dvs befintliga idnr från databasen, värden som idnr på de två första sidorna, det fungerar inte heller..... men om jag sätter ett fast värde på tredje sidan så fungerar det. Kan man kanske kalla spooky? Har du några fler förslag?
Sidan 2 är en ren frame-sida, kan det ha något med saken att göra?
Du behöver inte skapa recordset för att lägga in något i databasen heller (jag har ALDRIG använt mig av det). Du gör på samma sätt när du lägger in data, fast du använder dig av INSERT INTO-satsen istället:
namn = Request.Form("namn")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ("DBklient")
SQL = "INSERT INTO ucoKlientKontakt(FIRSTNAME) VALUES(" & namn & ");"
Set objRec = Conn.Execute SQL
Till ditt problem:
Testa att skriva Response.Write SQL innan "execute"-raden så kan du läsa vad det är för sql-uttryck som skickas till databasen.
Hej Torbjörn!
Efter mkt om och men så beslöt jag mig för att använda sessions istället för hidden för att få fram idnr på tredje sidan. Detta fungerar utmärkt. Frågan är; hur prestandaförödande är det att använda sessions,kommer det att sega ner systemet? (ca 5 användare)
Med 5 användare är det verkligen inget problem att använda Session. Problemen uppstår när man lägger för stora variabler, eller fel typ av variabler i Session och har tiotusentals användare.