webForumDet fria alternativet

Exception occured

14 svar · 407 visningar · startad av Sunix

SunixMedlem sedan juli 2004310 inlägg
#1

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
#2
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
#3

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
#4
if( isnull( rs( "besk" ) ) ) then
  strBesk = ""
else
  strBesk = rs( "besk" )
end if
@ndersMedlem sedan juni 200032 969 inlägg
#5

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
#6

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
#7

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
#8

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
#9

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
#10

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
#11

Redigerat:

Funkar inte!!

@ndersMedlem sedan juni 200032 969 inlägg
#12

om inte; återkom med fullständig kod och eventuellt felmeddelande.

SunixMedlem sedan juli 2004310 inlägg
#13

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!!!!!!

Engine^Medlem sedan dec. 20003 887 inlägg
#14

Det fungerar! ;)

@ndersMedlem sedan juni 200032 969 inlägg
138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)