SunixMedlem sedan juli 2004310 inlägg Hej! Har ett litet fjantigt problem som jag inte löser
Kod:
<%
if request.querystring("ToDo")="Upd" then
sql="select * from lank_tab where id="&request("lankid")
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
do until rs.eof
%>
<form action="Updel.asp?ToDo=UpdLinkDB" method="post">
<table>
<tr>
<td>Länken:<br><input type="text" name="updlink" value="<%=rs("lank")%>"></td>
</tr>
<tr>
<td>Beskriv länken:<br>
<textarea name="besk" cols="25" rows="7"><%if rs("besk")<> null then%><%=rs("besk")%><%end if%></textarea>
</td>
</tr>
<tr>
<td><input type="hidden" name="lankid" value="<%=rs("id")%>">
<input type="submit" value="OK">
</td>
</tr>
<tr>
<td><a href="start.asp">Klar</a></td>
</tr>
</table>
</form>
<%rs.movenext
loop
end if
%>
Problemet är at rs("besk") inte innehåller någon data i vissa fall och då får jag felmeddelandet "Exception occured".
Hur får jag bort det?
@ndersMedlem sedan juni 200032 969 inlägg strBesk = "" & rs("besk")
....
if strBesk <> "" then
Om du ska jämföra med null i asp får du använda funktionen IsNull().
SunixMedlem sedan juli 2004310 inlägg strBesk = "" & rs("besk")
jag får fortfarande felmeddelandet:
Error Type:
(0x80020009)
Exception occurred.
/intrat/updel.asp, line 51
rad 51 = strBesk = "" & rs("besk")
rs("besk innehåller ingenting")
Engine^Medlem sedan dec. 20003 887 inlägg if( isnull( rs( "besk" ) ) ) then
strBesk = ""
else
strBesk = rs( "besk" )
end if
@ndersMedlem sedan juni 200032 969 inlägg Det felet brukar man få när man försöker göra saker med data i ett tomt (EOF) recordset.
Är du säker på att rad 51 är den du tror?
SunixMedlem sedan juli 2004310 inlägg Suck!
efter Engines förslag får jag ett nytt meddelande som lyder:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
/intrat/updel.asp, line 54
@ndersMedlem sedan juni 200032 969 inlägg Jag förstår inte varför du har använder en loop, när du bara förväntar dig en post från recordsetet.
Om jag var du skulle jag således byta
do until rs.eof
mot
if not rs.eof then
samt:
rs.movenext
loop
MOt
end if
SunixMedlem sedan juli 2004310 inlägg Hmm, jag ska förklara.
recorsettet innehåller data i 2 av 3 fält men fältet besk är null.
Alltså "lank" och "id" får jag fram men inte "besk" p.g.a. nåt nullaktigt.
Loopen har jag lagt dit bara för att ja trodde att det var det som var fel.
Så RS innehåller data men inte i alla fält
@ndersMedlem sedan juni 200032 969 inlägg Jag skulle vilja att du kombinerar mina två kod-inlägg och återkommer. Ingen onödig loop, och det som händer när man konkatenerar med tom sträng är att ett eventuellt nullvärde konverteras till tom sträng.
En kombination av mina två kodinlägg bör alltså fjunka fint, om inte; återkom med fullständig kod och eventuellt felmeddelande.
Engine^Medlem sedan dec. 20003 887 inlägg Om jag hade gjort det skulle det troligtvis vara ganska likt följande
<%
if( len( request.querystring( "lankid" ) ) then
lngId = clng( request.querystring( "lankid" ) )
elseif( len( request.form( "lankid" ) ) > 0 ) then
lngId = clng( request.form( "lankid" ) )
else
lngId = -1
end if
if( request.querystring( "ToDo" ) = "Upd" and lngId > -1 ) then
strLank = ""
strBesk = ""
sql = "SELECT lank, besk" & _
" FROM lank_tab" & _
" WHERE id = " & lngId
set rs = server.createobject( "adodb.recordset" )
call rs.open( sql, conn, 1, 1 )
if( not rs.eof ) then
if( not isnull( rs( "lank" ) ) ) then
strLank = rs( "lank" )
end if
if( not isnull( rs( "besk" ) ) ) then
strBesk = rs( "besk" )
end if
end if
%>
<form action="Updel.asp?ToDo=UpdLinkDB" method="post">
<input type="hidden" name="lankid" value="<%=lngId%>">
<table>
<tr>
<td>
Länken:<br><input type="text" name="updlink" value="<%=strLank%>">
</td>
</tr>
<tr>
<td>
Beskriv länken:<br>
<textarea name="besk" cols="25" rows="7"><%=strBesk%></textarea>
</td>
</tr>
<tr>
<td>
<input type="submit" value="OK">
</td>
</tr>
<tr>
<td>
<a href="start.asp">Klar</a>
</td>
</tr>
</table>
</form>
<%
end if
%>
SunixMedlem sedan juli 2004310 inlägg Nu vet jag vilket fel det var!! :)
I mysqlservern så användes fälttypen Text. När jag ändrade den till varchar så fungerar det utmärkt! Jag kan bara säga att det är inte jag som har lagt upp db'n i mysql, hmm. :)
Tack för all hjälp!!!!!!
@ndersMedlem sedan juni 200032 969 inlägg