webForumDet fria alternativet
Logga in / Bli medlem

Type mismatch: 'HTMLEncode'

ASP

10 svar · 468 visningar · startad av DanneSt

Medlem sedan feb. 20041 311 inlägg
Frågan#1

Hej!

Får detta felmeddelande:

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'HTMLEncode'
/index.asp, line 26

Raden 26 är:

<%=Replace(Server.HTMLEncode(rs("welcome")),vbCrLf,"<br />")%>

Jag vet att felmeddelandet brukar beror på att man försöker använda en tom recset, vilket också är vad som händer. Det är nämligen så att senare i index.asp-koden så ska ett antal nyheter loopas fram, men nu har jag tagit bort alla poster i den tabellen och hoppades få fram en text som säger att "Inga nyheter inlagda!". Tji fick jag (men lägger jag in en nyhet så funkar allt så fint så...). Så här ser den koden ut (finns på en includad sida):

<%If RS_NyhRub.EOF Then%>
<table cellpadding="1" cellspacing="0" border="0">
  <tr>
    <td align="left">Inga nyheter inlagda!</td>
  </tr>
<%Else%>

Vad jag inte får grepp om är varför det inte kraschar på raden där denna funktion anropas, utan på en funktion som jag vet innehåller data.

Hilfe bitte!

Medlem sedan okt. 20041 556 inlägg
#2

Lägg in en tom sträng så fixar det sig.
Server.HTMLEncode(rs("welcome") &"")
Ta för vana att göra det när du använder Server.HTMLEncode. :)

Medlem sedan juni 200032 967 inlägg
#3

Om du ska skriva ut poster från ett recordset som kan vara tomt får du lägga det i else-delen i din EOF-kontroll.

if RS_NyhRub.EOF then
      ' inga poster
else
      response.write server.htmlencode (.....)
end if
Medlem sedan feb. 20041 311 inlägg
#4

Travoni skrev:

Lägg in en tom sträng så fixar det sig.
Server.HTMLEncode(rs("welcome") &"")
Ta för vana att göra det när du använder Server.HTMLEncode. :)

Funkar inte. Fick felmeddelandet error '80020009'...

Medlem sedan feb. 20041 311 inlägg
#5

@nders skrev:

Om du ska skriva ut poster från ett recordset som kan vara tomt får du lägga det i else-delen i din EOF-kontroll.

if RS_NyhRub.EOF then
      ' inga poster
else
      response.write server.htmlencode (.....)
end if

Mjo, men det har jag ju gjort...tror jag...
Den rs som är tom ligger i en fil som jag includar. I den filen är koden som följer:

<%
NyhetPerSida = 3                                     	
URL = "../index.asp"                    				
db = Server.MapPath("db/db.mdb")  				
Width = "250"                              				

Set RS_NyhRub = Server.CreateObject("ADODB.Recordset")
Sidan = Request.QueryString("sida")
If Sidan = "" then 
     sida = 1 
Else 
     sida = Sidan 
End If 

With RS_NyhRub
    .CursorLocation = 3
    .CacheSize = NyhetPerSida
End With

SQL_NyhRub = "Select * From news Order By id desc"
RS_NyhRub.Open SQL_NyhRub, Conn_NyhRub%>

<%If RS_NyhRub.EOF Then%>
<table cellpadding="1" cellspacing="0" border="0">
	<tr>
		<td align="left">Inga nyheter inlagda!</td>
	</tr>

<%Else%>

<table cellspacing="0" border="0" width="100%">
<%
x = 0 
RS_NyhRub.MoveNext
With RS_NyhRub
  .MoveFirst 
  .PageSize = NyhetPerSida
  .AbsolutePage = sida
End With

Sidor =  RS_NyhRub.PageCount
x = 0 
Do While Not RS_NyhRub.EOF And x < RS_NyhRub.PageSize
%>

	<tr>
		<td width="100%"><a href="visa_nyhet.asp?ID=<%=RS_NyhRub("ID")%>"><%=Server.HTMLEncode(RS_NyhRub("rubrik") &"")%></a>&nbsp;(<%=FormatDateTime(RS_NyhRub("datum"),2)%>)</td>
	</tr>

<%
x=x+1 
RS_NyhRub.MoveNext
Loop
RS_NyhRub.Close
End If
If Sidor > 1 Then
%>

	<tr>
		<td valign="top" colspan="2" align="left">Arkiv:
<%
For Sid = 1 To Sidor
If (Int(Sid)) = (Int(sida)) Then%>[<%=Sid%>]<%Else%> <a href="<%=URL%>?sida=<%=Sid%>"><%=Sid%></a> <%End If
         Next%> 
		</td>
	</tr>
<%
End If

%>
</table>
Medlem sedan feb. 20041 311 inlägg
#6

Någon som kan ge mig tips på hur jag kommer förbi detta?

Medlem sedan feb. 20041 311 inlägg
#7

Det var då rackarns vad tyst och ensamt det blev i denna tråd... *snyft*

Medlem sedan juni 20003 076 inlägg
#8

Vilken kod gäller? :q
I ditt första inlägg skriver du: Server.HTMLEncode(rs("welcome"))
Sen skriver du: Server.HTMLEncode(RS_NyhRub("rubrik") &"")

Så, vilken rad genererar egentligen felet?
Tittar du på rätt ställe i rätt fil?

Om felet genereras på: "rs" så måste du ange:

if not rs.eof then
     blabla
end if
Medlem sedan feb. 20041 311 inlägg
#9

Ledsen för mitt sena svar på din fråga, men här kommer den:

Det verkar som att det inte spelar någon roll. Är någon av tabellerna (jag har andra tabeller till andra funktioner i samma db) i databasen tom så får jag detta felmeddelande...

Lägger jag in &"" så kommer det senare felmeddelandet (error '80020009').

Medlem sedan juni 20003 076 inlägg
#10

Känner mig inte riktigt uppdaterad på vilket fel du får nu.
Du kan väl slänga in din kod igen och säga vilken rad du får fel på.

Är det att du använder just htmlencode så får du kanske fel om posten är null i databasen, istället för att fulhacka in &"" på varje så kan du istället köra en go å fin function! :)

Response.Write(encode(RS_NyhRub("rubrik")))

Function encode(str)
	If len(str) = 0 Or isNull(str) Then Exit Function
	encode = Server.HTMLEncode(str)
End Function
Medlem sedan feb. 20041 311 inlägg
#11

Mja, kanske det!
Har fått tipset om att lägga in en funktion i en annan tråd som jag tänkte försöka prova ikväll. Får jag den att funka kan jag ju testa det på detta problem åxå!

Testar och återkommer!

282 ms totalt · 4 externa anrop · v20260731065814-full.1b2494f0
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)