PDA

View Full Version : Felsökning


Dflex
2002-07-18, 09:22
Tjena!

Jag har en möjlighet att kunna ändra kunder i mitt adminsystem, men jag får upp följande meddelande:

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID='.

/uddcomb/admin/andrakunden.asp, line 10


Koden ser ut så här:

<%
id=request.form("id")
set rs=Server.CreateObject("adodb.Recordset")

SET Conn= Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(ritregister))
ssql="SELECT * FROM tbl_Kunder WHERE ID="& id &" ORDER BY kund asc"
rs.open ssql, Conn

%>
rad 10 är:
ssql="SELECT * FROM tbl_Kunder WHERE ID="& id &" ORDER BY kund asc"


Ligger problemet här tros?


från:
Fundersam Dflex

icaaq
2002-07-18, 09:24
Vad ger denna

<%
id=request.form("id")
set rs=Server.CreateObject("adodb.Recordset")

SET Conn= Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(ritregister))
ssql="SELECT * FROM tbl_Kunder WHERE ID="& id &" ORDER BY kund asc"
Response.Write ssql
Response.End
rs.open ssql, Conn

%>

Dflex
2002-07-18, 09:29
Den ger samma fel tyvärr...

jepsO
2002-07-18, 09:33
Testa att göra en Response.Write id efter id=request.form("id"). Det verkar (återigen) som om det inte skickats med något värde från föregående sida.

Är du säker på att formuläret på föregående sida har ett fält som heter id?

ekke_t
2002-07-18, 09:33
klart det blir samma fel... men ta bort
rs.open ssql, Conn
och kolla hur sql-strängen ser ut... posta den gärna här sen så kan vi nog se vad som är fel...

Dflex
2002-07-18, 09:56
Nu är det så att jag inte är så överdrivet kunnig på ASP & SQl.

Det är så här: Jag har ett formulär innan som jag väljer vilken kund som jag ändra, selectmenyn heter kund!, sen så är tanken att
kunden ska skrivas ut mha dess ID i ett annat fält i ett annat formulär. Det är det som är problemet! Nu visas iallafall fältet. I fältet står det <font face istället för kundens namn och dels står följande felmedelande:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/uddcomb/admin/andrakunden.asp, line 28

icaaq
2002-07-18, 10:24
Vad ger denna

<%
id=request.form("id")
set rs=Server.CreateObject("adodb.Recordset")

SET Conn= Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(ritregister))
ssql="SELECT * FROM tbl_Kunder WHERE ID="& id &" ORDER BY kund asc"
Response.Write ssql
Response.End
rs.open ssql, Conn

%>

Vad ger denna ;)

jepsO
2002-07-18, 10:44
Är det i selectmenyn "kund" som du listar ID-värden? Nånting liknande det här?<select name="kund">
<option value="1">Kund 1</option>
<option value="2">Kund 2</option>
...
</select>I så fall måste du skriva id = request.form("kund"), eftersom request.form-funktionen går efter fältnamnet i formuläret som skickar information till andrakunden.asp.

Dflex
2002-07-18, 11:11
När jag använde iccaq:s kod fick jag följande svar:

SELECT * FROM tbl_Kunder WHERE ID= ORDER BY kund asc

-----------------------------------------------------------------------------------
(JepsO)

Ja, en sådan selectmeny är det som jag använder. Jag har testat ditt förslag också men tyvärr med samma resultat!

solbulle
2002-07-18, 11:29
Med andra ord får du inte med dig datan från formuläret.

Hur ser formuläret ut?

Dflex
2002-07-18, 11:54
En rubrik och en selectmeny enbart!

ekke_t
2002-07-18, 11:55
kan du visa koden??

Dflex
2002-07-18, 11:58
<table width="700" border="0" cellspacing="0" cellpadding="0">

<tr>
<td><p>Välj den kund du vill ändra</p></td>
</tr>
<tr><td><br></td></tr>
<tr>
<td width="33%">
<select name="kund">
<%do until rs.eof%>
<option value="<%=rs("id")%>"><%=rs("kund")%></option>
<%rs.movenext%>
<%loop%>
</select></td>
</tr>

<tr>
<td>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="Submit" value="Ändra">
</p>
</td>
</tr>

</table>

ekke_t
2002-07-18, 12:03
ok... har du testat att skriva id = request.form("kund")

precis som JepsO skrev...

det borde funka...

Dflex
2002-07-18, 12:13
Så du menar att id = request.form("kund") ska både finnas i det formuläret som man väljer kund som ska ändras samt i det formulär där man ändrar kunden?

jepsO
2002-07-18, 12:25
Okej, vi tar det från början.

På den första sidan har du ett formulär med följande utseende:<select name="kund">
<%do until rs.eof%>
<option value="<%=rs("id")%>"><%=rs("kund")%></option>
<%rs.movenext%>
<%loop%>
</select>Här har du skapat ett recordset som du sedan loopar fram i en select. Namnet på selecten är kund. När du sedan trycker på Skicka-knappen skickas värdet i kund-selecten vidare som ett formulärobjekt. Detta hämtas upp med request.form("kund"). Det har ingen betydelse vad kolumnerna i tabellen heter (i detta fall "id" och "kund"), utan det är namnet på selecten som spelar roll.

När du sedan hämtat upp värdet från selecten genomid = request.form("kund")bör resten funka.

Ett tips är att döpa om namnet på selecten till "kund_id" eller liknande, eftersom det kan bli lite förvirrande när "kund" både återfinns som select-namn och namn på en kolumn i tabellen du hämtar information från.

Dflex
2002-07-18, 12:42
Ursäkta att jag är tjatig, men nu börjar det liknar något.

Formuläret ser bra ut. Det enda är att jag inte får ut någon kund i fältet. Jag har skrivit så här:

<input type="text" name="kund" size="15" VALUE="<%=Kund%>">


Om du orkar...vad innebär följande?:

<INPUT TYPE="hidden" NAME="id" VALUE="<%=ID%>"

solbulle
2002-07-18, 12:49
Du sätter Id-värdet i ett dolt fält med namnet id, dock har du glömt en slutmoj på den raden:

>

Var har du raden som du visar innan, med Kund?

<input type="text" name="kund" size="15" VALUE="<%=Kund%>">

ekke_t
2002-07-18, 12:54
ger du variabeln Kund något värde??

T.ex. Kund = rs("kund")

Eclipse
2002-07-18, 13:28
TIPS:
Alltid när du gör sånna här grejer är det bra att göra dom i editorn först.

Sen när du ska koda så kollar du på din statiska kod och lägger in databas anropen där de ska vara.

Låtsas att en användare heter Arne Anka och har ID 23 och har skostorlek 45 och så vidare.

Det blir lite mer uppenbart vad som ska in var på detta sättet.

Dflex
2002-07-18, 13:38
solbulle:

<td width="33%">
<select name="kund">
<%do until rs.eof%>
<option value="<%=rs("id")%>"><%=rs("kund")%></option>
<%rs.movenext%>
<%loop%>
</select></td>

-----------------------------------------------------------------------------------
ekke_t:

jag har skrivit:

id=request.form("kund"), räcker inte det?

ekke_t
2002-07-18, 13:44
för att kunna skriva ut ett värde från recordsetet måste du lägga det i en variabel... (så som jag skrev) eller skriva ut det direkt...

du borde alltså skriva <input type="text" name="kund" size="15" VALUE="<%=rs("kund")%>">

solbulle
2002-07-18, 13:47
Det där ska ju fungera tycker jag, och du är säker på att du verkligen postar dit formulär rätt och att hela din select är inom form-taggarna?

Men om du ska få ut något i:

<input type="text" name="kund" size="15" VALUE="<%=Kund%>">

När du sen skriver:

id=request.form("kund")

Ska det då inte stå id där det står kund alternativ:
request.form("kund")

RED: Ok, jag kanske missade där, se inlägget ovanför!

Dflex
2002-07-18, 13:54
ok...tacK!