webForumDet fria alternativet

Type mismatch: 'HTMLEncode'

10 svar · 468 visningar · startad av DanneSt

DanneStMedlem sedan feb. 20041 327 inlägg
#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!

TravoniMedlem sedan okt. 20041 538 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. :)

@ndersMedlem sedan juni 200026 914 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
DanneStMedlem sedan feb. 20041 327 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'...

DanneStMedlem sedan feb. 20041 327 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>
DanneStMedlem sedan feb. 20041 327 inlägg
#6

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

DanneStMedlem sedan feb. 20041 327 inlägg
#7

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

doggelitoMedlem sedan juni 20003 100 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
DanneStMedlem sedan feb. 20041 327 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').

doggelitoMedlem sedan juni 20003 100 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
DanneStMedlem sedan feb. 20041 327 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!

Genererad på 389 ms · cache AV · v20260730165559-full.f96bc7eb