Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Joezaum

Microsoft VBScript runtime error '800a000d', Como resolver?

Recommended Posts

Microsoft VBScript runtime error '800a000d'

 

Type mismatch: 'Usuarios'

 

/site/batepapo/default.asp, line 34

 

 

 

está gerando este erro ai de cima, em um bate papo que estou tentando montar. Segue um pedaço do codigo abaixo.

 

<%@ Language=VBScript %>
<%Response.Buffer=true%>
<%
Response.CacheControl = "no-cache"
Response.AddHeader "pragma", "no-cache"
Response.Expires = -1
%>
<html>
<head>
<title>- PortalFazendinha.com.br -</title>
<script Language="JavaScript">
<!--
function Validator(theForm)
{
if (theForm.Apelido.value.length < 1)
{
alert("Desculpe, mas você não preencheu o campo nick");
theForm.Apelido.focus();
return (false);
}
return (true);
}
//-->
</script>
<%
'Define uma matriz com 20 variáveis
Dim Nomes(50)
'Declaração de variáveis
Dim I, StrLista
'Receber dados da matriz
Usuarios = Application("Usuarios")
'Configura a matriz no cliente para ser usado ao entrar
for i=0 to 49
[b]if usuarios(i) <> "" then[/b] LINHA DO ERRO
'Response.write "Nomes(" & i & ") = " & chr(34) & Usuarios(i) & chr(34) & chr(13)
End if
Next
'Esta função verifica se possíveis erros ocorreram e força o usuário a corrigi-los
Function FrmApelidos_onSubmit()
For i=0 To 49
   If FrmApelidos.Apelido.value = Nomes(i) Then IntErro = 1
   If FrmApelidos.Apelido.value = "" Then IntErro = 2
   If Len(FrmApelidos.Apelido.value) > 10 Then IntErro = 3
Next
Select Case IntErro
   Case 1 
   MsgBox "Este nome já está sendo utilizado por outro usuário. Escolha outro nome", 0, "Nome inválido"
   FrmApelidos = False
   Case 2
   MsgBox "É necessário digitar um nome para entrar na sala de chat", 0, "Nome inválido"
   FrmApelidos = False
   Case 3
   MsgBox "O nome deve ter no máximo 10 caracteres.", 0, "Nome inválido"
   FrmApelidos = False
End select
End function
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes desse FOR dê um Response.Write na variável Usuarios e verifique se está vindo tudo listado com "," separando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E voce sempre terá 50 usuarios? Voce está fechando neste valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso ficou assim

 

Microsoft VBScript compilation error '800a03ea'

 

Syntax error

 

/site/batepapo/Default.asp, line 33

 

Response.Write for i=0 to 49

---------------^

 

CODE
<%

'Define uma matriz com 20 variáveis

Dim Nomes(50)

'Declaração de variáveis

Dim I, StrLista

'Receber dados da matriz

Usuarios = Application("Usuarios")

'Configura a matriz no cliente para ser usado ao entrar

Response.Write for i=0 to 49

if usuarios(i) <> "" then

'Response.write "Nomes(" & i & ") = " & chr(34) & Usuarios(i) & chr(34) & chr(13)

End if

Next

'Esta função verifica se possíveis erros ocorreram e força o usuário a corrigi-los

Function FrmApelidos_onSubmit()

For i=0 To 49

If FrmApelidos.Apelido.value = Nomes(i) Then IntErro = 1

If FrmApelidos.Apelido.value = "" Then IntErro = 2

If Len(FrmApelidos.Apelido.value) > 10 Then IntErro = 3

 

 

Sim limitando a 50 usuários pois seria uma sala de chat, e como poderia deixar sem limites? no caso colocando 999999 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Response.Write(Usuarios)
Response.END
for i=0 to 49

E verifique a resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro colega Salgado, agradeço desde já a ajuda que está fornecendo.

 

Mas não entendi muito bem a colocação deste ultimo code.

 

Seria isso ?

 

CODE
<%

'Define uma matriz com 20 variáveis

Dim Nomes(50)

'Declaração de variáveis

Dim I, StrLista

'Receber dados da matriz

Response.Write(Usuarios)

Response.END

for i=0 to 49

if usuarios(i) <> "" then

'Response.write "Nomes(" & i & ") = " & chr(34) & Usuarios(i) & chr(34) & chr(13)

End if

Next

'Esta função verifica se possíveis erros ocorreram e força o usuário a corrigi-los

Function FrmApelidos_onSubmit()

For i=0 To 49

If FrmApelidos.Apelido.value = Nomes(i) Then IntErro = 1

If FrmApelidos.Apelido.value = "" Then IntErro = 2

If Len(FrmApelidos.Apelido.value) > 10 Then IntErro = 3

Next

Pois agora não retornou erro quando substitui iso, porem ficou em branco a pagina.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A variável Usuarios está vazia, por isso acontece o erro. Você deve testar a se existe algo na variável (que na verdade é um array) antes de usá-la.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como voce montar o valor da application?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum...mas sem querer abusar da boa vontade de vocês dois....como seria o correto então ?

 

Já que seria limitado a 50 usuários já que se trata de um bate papo...não teria de ficar sem nada pois não seria o nick do usuário ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao mostre onde concatena a application

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao é isso

 

veja que voce atribui a variavel usuarios

 

Usuarios = Application("Usuarios")

Onde voce monta este Application("Usuarios")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde

 

 

Vou explicar com calma.

 

Seguinte tem está parte..

 

CODE
<%

'Define uma matriz com 20 variáveis

Dim Nomes(50)

'Declaração de variáveis

Dim I, StrLista

'Receber dados da matriz

Response.Write(Usuarios)

Response.END

for i=0 to 49

if usuarios(i) <> "" then

'Response.write "Nomes(" & i & ") = " & chr(34) & Usuarios(i) & chr(34) & chr(13)

End if

Next

'Esta função verifica se possíveis erros ocorreram e força o usuário a corrigi-los

Function FrmApelidos_onSubmit()

For i=0 To 49

If FrmApelidos.Apelido.value = Nomes(i) Then IntErro = 1

If FrmApelidos.Apelido.value = "" Then IntErro = 2

If Len(FrmApelidos.Apelido.value) > 10 Then IntErro = 3

Next

Select Case IntErro

Case 1

MsgBox "Este nome já está sendo utilizado por outro usuário. Escolha outro nome", 0, "Nome inválido"

FrmApelidos = False

Case 2

MsgBox "É necessário digitar um nome para entrar na sala de chat", 0, "Nome inválido"

FrmApelidos = False

Case 3

MsgBox "O nome deve ter no máximo 10 caracteres.", 0, "Nome inválido"

FrmApelidos = False

End select

End function

%>

 

Que ela está na default.asp, sendo que está seria para inserir o nick do usuário, depois que ele clicar para entrar no chat ele busca o arquivo entrar.asp, que está assim.

 

CODE
<%@ Language=VBScript %>

<%Response.Buffer=true%>

<%

If InsTr(Request.ServerVariables("HTTP_REFERER"), "portalfazendinha.com.br/site/batepapo") Then

'Permitimos o acesso a página, pois o usuário clicou em um link do próprio site

%>

<%

Response.CacheControl = "no-cache"

Response.AddHeader "pragma", "no-cache"

Response.Expires = -1

%>

 

<%

'Declaração de variáveis

Dim StrApelido, i, Cont

 

'Recebe o nome do usuário e limpa para evitar comados HTML

StrApelido = Server.HTMLEncode(Request.Form("Apelido"))

 

'Verifica se o nome foi enviado e se o usuário não está logado

If Len(StrApelido) = 0 and VarType(Session("Usuario")) = 0 Then Response.Redirect "default.asp"

 

'Trava a aplicação

Application.Lock

 

'Recebe a matriz com nome de todos os usuários

Usuarios = Application("Usuarios")

Mensagens = Application("Mensagens")

ParaUsuario = Application("ParaUsuario")

Exclusiva = Application("Exclusiva")

DeUsuario = Application("DeUsuario")

 

'Verifica se o usuário já está na sala tentando atualizar a tela

If VarType(Session("Usuario")) = 0 Then

 

'Varre a matriz de usuários para encontrar uma variável vazia

For i=1 To 49

If Len(Usuarios(i)) < 1 Then

'Grava o Nome do usuário na matriz

Usuarios(i) = StrApelido

'Grava o índice da matriz na variável de seção

Session("Usuario") = i

Exit For

End if

Next

 

Usuarios(0) = "Todos"

 

'Move cada mensagem uma posição acima na matriz para incluir a mais nova mensagem

For i=48 To 0 Step -1

Mensagens(i+1) = Mensagens(i)

Exclusiva(i+1) = Exclusiva(i)

ParaUsuario(i+1) = ParaUsuario(i)

DeUsuario(i+1) = DeUsuario(i)

Next

 

'Cria a formatação da nova mensagem

 

StrNovaMensagem = "<font color='#FF0000' face='verdana' size='1'>("+formatdatetime(now,vblongtime)+")</font> <B><font color='#FF0000' face='verdana' size='1'>" & Usuarios(Session("Usuario")) & "</b> entra na Sala</font>"

StrNovaMensagem = StrNovaMensagem

 

'Retorna a mensagem para a matriz e configura para que todos vejam

Mensagens(0) = StrNovaMensagem

ParaUsuario(0) = 0

DeUsuario(0) = Session("Usuario")

Exclusiva(0) = 0

 

'Retorna a matriz

Application("Mensagens") = Mensagens

Application("Exclusiva") = Exclusiva

Application("ParaUsuario") = ParaUsuario

Application("DeUsuario") = DeUsuario

Application("Usuarios") = Usuarios

 

End If

 

'Destrava a aplicação

Application.UnLock

%>

 

Acho que estou meio perdido, caso tenha possibilidade, posso enviar o scritp para dar uma olhada.

 

Agradeço novamente a ajuda.

 

Alguem ? =|

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em momento algum você transformou Usuarios em vetor, mas tenta utilizá-lo como vetor Usuarios(i).

 

E lá no final você tenta armazená-lo como uma variável comum.

Application("Usuarios") = Usuarios

 

Foi você quem desenvolveu desde o inicio?

 

Qual o erro atual?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite hargon

 

CODE
if usuarios(i) <> "" then

'Response.write "Nomes(" & i & ") = " & chr(34) & Usuarios(i) & chr(34) & chr(13)

End if

 

Seria assim como mencionou o vetor ? usuarios(i)

 

 

Ficaria assim ?

 

CODE
<%

'Define uma matriz com 20 variáveis

Dim Nomes(50)

'Declaração de variáveis

Dim I, StrLista

'Receber dados da matriz

Response.Write(Usuarios)

Response.END

for i=0 to 49

if usuarios(i) <> "" then

'Response.write "Nomes(" & i & ") = " & chr(34) & Usuarios(i) & chr(34) & chr(13)

Application("Usuarios") = Usuarios

End if

 

Ta estranho isso pois antes retornava erro agora não retorna erro porem tambem não abre nada. ://www.portalfazendinha.com.br/site/batepapo/

 

 

Foi um conhecido meu que desenvolveu a um tempo atras mas perdi contato com ele, mas eu já tinha utilizado e não tinha gerado erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não aparece nada por causa da linha response.end. É só remover ela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum compreendo...

 

Depois que removi...voltou o erro

 

Microsoft VBScript runtime error '800a000d'

 

Type mismatch: 'Usuarios'

 

/site/batepapo/Default.asp, line 33

 

sendo que na linha 33 seria

 

if usuarios(i) <> "" then

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro acontece porque você está utilizando a variável usuarios(i) como vetor, mas você não transformou em vetor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para poder usar assim tem que converter em array mesmo com o SPLIT

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.