strBesk = "" & rs("besk")
....
if strBesk <> "" then
Om du ska jämföra med null i asp får du använda funktionen IsNull().
14 svar · 407 visningar · startad av Sunix
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?
strBesk = "" & rs("besk")
....
if strBesk <> "" then
Om du ska jämföra med null i asp får du använda funktionen IsNull().
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")
if( isnull( rs( "besk" ) ) ) then
strBesk = ""
else
strBesk = rs( "besk" )
end if
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?
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
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
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
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.
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
%>
om inte; återkom med fullständig kod och eventuellt felmeddelande.
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!!!!!!
Det fungerar! ;)