Jump to content


Photo

Erro Na Conexão......


  • Faça o login para participar
4 replies to this topic

#1 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 31/01/2005, 17:45

e ai pessoal....
fiz um arquivo conecta.asp para fazer as conexões do meu site e eu não ter que ficar abrindo e fechando a conexão em cada arquivo.....

usei um tudo do felipecm

<%

Dim objConnection, objRs()

'Constante da verificação do estado do objeto ADO
Const adStateOpen = &H00000001

Sub Connect()
  Dim strConnString

  strConnString = "driver=Mysql;server=200.152.241.200;uid=LOGIN;pwd=SENHA;database=BANCO"
  Set objConnection = Server.CreateObject("ADODB.Connection")

  With objConnection
    .ConnectionString = strConnString
    .Open
  End With

  Redim objRs(0)

End Sub

Sub GeraRs (ByVal strSql)
  If Not IsEmpty(objRs(0)) Then Redim Preserve objRs(UBound(objRs) + 1)

  Set objRs(UBound(objRs)) = Server.CreateObject("ADODB.Recordset")
  objRs(UBound(objRs)).Open strSql, objConnection

End Sub

Sub Disconnect()
  Dim objRsTmp

  For Each objRsTmp In objRs
    If objRsTmp.State = adStateOpen Then objRsTmp.Close
    Set objRsTmp = Nothing
  Next

  Redim objRs(0)

  If objConnection.State = adStateOpen Then objConnection.Close
  Set objConnection = Nothing
End Sub

%>


dai qunado eu vou abrir uma conexao eu incluo a seguinte linha

<!--#include file="conecta.asp"-->
<% call connect %>


o codigo funciona perfeitamente.... porém se eu fecho a conexão ( <% call disconnect %> ) ele dá o seguinte erro:

Erro de tempo de execução do Microsoft VBScript error '800a01a8'
Objeto necessário: 'objRsTmp'
/sistema_novo/inclui/conecta.asp, line 35


e a linha 35 eh justamente:

  For Each objRsTmp In objRs
    If objRsTmp.State = adStateOpen Then objRsTmp.Close
    Set objRsTmp = Nothing
  Next



então reparei nesse detalhe:

Sub Disconnect()
  Dim objRsTmp

  For Each objRsTmp In objRs
    If objRsTmp.State = adStateOpen Then objRsTmp.Close
    Set objRsTmp = Nothing
  Next


me corrijam se eu estiver errado, mais ele cria o recorset usando objRs e desconecta usa objRsTmp???

dai eu tentei apagar essa parte que está em vermelho...
e o erro continuou na mesma linha, mais mudou para:

Microsoft VBScript runtime error '800a01c3'
Object not a collection
/restrito/teste/sistema/conecta.asp, line 34


alguém tem alguma idéia de onde eu posso estar errando ??

#2 pchardnet

pchardnet

    ×-× 3D ×-×

  • Usuários
  • 1068 posts
  • Sexo:Não informado
  • Localidade:Belo Horizonte-MG

Posted 31/01/2005, 17:58

Seguinte vc criou funções....

Se abriu uma função FECHE-A

No seu caso vc abriu a connect e tem que fecha-la e fazer o mesmo com a disconnect.
www.wvirtu.net - Hospedagem Sites - PHP + MySql + Fantástico - Joomla! pré-instalado

www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais

#3 felipecm

felipecm

    Expert

  • Usuários
  • 541 posts
  • Sexo:Não informado
  • Localidade:ABC / SP

Posted 31/01/2005, 18:43

e ai pessoal....
fiz um arquivo conecta.asp para fazer as conexões do meu site e eu não ter que ficar abrindo e fechando a conexão em cada arquivo.....

usei um tudo do felipecm


<%

Dim objConnection, objRs()

'Constante da verificação do estado do objeto ADO
Const adStateOpen = &H00000001

Sub Connect()
   Dim strConnString

   strConnString = "driver=Mysql;server=200.152.241.200;uid=LOGIN;pwd=SENHA;database=BANCO"
   Set objConnection = Server.CreateObject("ADODB.Connection")

   With objConnection
     .ConnectionString = strConnString
     .Open
   End With

   Redim objRs(0)

End Sub

Sub GeraRs (ByVal strSql)
   If Not IsEmpty(objRs(0)) Then Redim Preserve objRs(UBound(objRs) + 1)

   Set objRs(UBound(objRs)) = Server.CreateObject("ADODB.Recordset")
   objRs(UBound(objRs)).Open strSql, objConnection

End Sub

Sub Disconnect()
   Dim objRsTmp

   For Each objRsTmp In objRs
     If objRsTmp.State = adStateOpen Then objRsTmp.Close
     Set objRsTmp = Nothing
   Next

   Redim objRs(0)

   If objConnection.State = adStateOpen Then objConnection.Close
   Set objConnection = Nothing
End Sub

%>


dai qunado eu vou abrir uma conexao eu incluo a seguinte linha

<!--#include file="conecta.asp"-->
<% call connect %>


o codigo funciona perfeitamente.... porém se eu fecho a conexão ( <% call disconnect %> ) ele dá o seguinte erro:

Erro de tempo de execução do Microsoft VBScript error '800a01a8'
Objeto necessário: 'objRsTmp'
/sistema_novo/inclui/conecta.asp, line 35


e a linha 35 eh justamente:

  For Each objRsTmp In objRs
    If objRsTmp.State = adStateOpen Then objRsTmp.Close
    Set objRsTmp = Nothing
  Next



então reparei nesse detalhe:

Sub Disconnect()
   Dim objRsTmp

   For Each objRsTmp In objRs
     If objRsTmp.State = adStateOpen Then objRsTmp.Close
     Set objRsTmp = Nothing
   Next


me corrijam se eu estiver errado, mais ele cria o recorset usando objRs e desconecta usa objRsTmp???

dai eu tentei apagar essa parte que está em vermelho...
e o erro continuou na mesma linha, mais mudou para:

Microsoft VBScript runtime error '800a01c3'
Object not a collection
/restrito/teste/sistema/conecta.asp, line 34


alguém tem alguma idéia de onde eu posso estar errando ??

Vamos lá sorry por demorar.. faça o seguinte.. itere através das arrays sem o For Each.. algo como:

  For Each objRsTmp In objRs
    If objRsTmp.State = adStateOpen Then objRsTmp.Close
    Set objRsTmp = Nothing
  Next

Por:

  For i = LBound(objRs) To UBound(objRs)
    If objRs(i).State = adStateOpen Then objRs(i).Close
    Set objRs(i) = Nothing
  Next

MCAD, MCP

#4 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 01/02/2005, 08:24

valeu moçada !!!!!
o pior problema meu eh a falta de atenção !!

#5 bgssilva

bgssilva

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino
  • Localidade:Niterói/RJ

Posted 11/05/2009, 20:08

Olá pra todos.

Estou utilizando o arquivo conn.asp "Organizando Conexões.. Recordsets.."

Gostaria de saber se na SUB GeraRS é possível determinar nomes ao invés de números no array pois tenho uma página com várias combos que buscam informações de vários recordsets e agora ao rodar a página aparece o erro...

Tipo de erro:
ADODB.Recordset (0x800A0E7D)
A conexão não pode ser usada para realizar esta operação. Ela está fechada ou é inválida neste contexto.
/controlesql/conexao.asp, line 35


Mas não sei de qual recordset se refere o erro...




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq