Foros del Web » Programando para Internet » ASP Clásico »

Error en rs.eof = false

Estas en el tema de Error en rs.eof = false en el foro de ASP Clásico en Foros del Web. Tengo muchas dudas en esto.... Primero, en un servidor me funciona correctamente y efectivamente no me mustra informacion por que el query no arroja resultados, ...
  #1 (permalink)  
Antiguo 26/09/2007, 12:02
MM5
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 17 años, 7 meses
Puntos: 0
Error en rs.eof = false

Tengo muchas dudas en esto....
Primero, en un servidor me funciona correctamente y efectivamente no me mustra informacion por que el query no arroja resultados, pero en otro me da el error
ADODB.Recordset (0x800A0E78)
La operación no está permitida si el objeto está cerrado.

El servidor que funciona correctamente, tiene localmente la base de datos, en el servidor que no funciona, se conecta a este 1 servidor que tiene la base de datos SQL

Entonces mi duda es.... tengo que modificar mi codigo asp o debo modificar algo en el servidor que tiene problemas?.

Les comento que hace unos dias..(en estos 2 mismos servidores) tambien me sucedia que algo si me funcionaba en uno y en el otro no y se soluciono cambiando la manera de conectar... aca les dejo el codigo

'Const Connex = "UID=sa;PWD=;DRIVER={SQL SERVER};SERVER=xxx.xx.xx.x;DATABASE=xxxx;" Esta estaba antes pero daba error y la cambie por
Const Connex = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=xxxx;Data Source=xxxxxxxx"

Ahora el tema es que trato de abrir el recordset, pero me tira el error que les comento arriba, siendo que en otro servidor (que tiene ademas la base de datos)

Si miro las versiones de la DLL que tiene el ODBC, son las mismas... entonces no se a que se debe.

Gracias por la ayuda.
MM5
  #2 (permalink)  
Antiguo 26/09/2007, 12:05
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Error en rs.eof = false

Código:
ADODB.Recordset (0x800A0E78)
La operación no está permitida si el objeto está cerrado.
Esa excepción regularmente se trata de un objeto no controlado correctamente, seguramente un recordset o una conexión que como el error indica, no has abierto o destruído antes de usarlo de nuevo dentro de un ciclo o algo, pero como no veamos el código funcional destacando la línea de error, es muy complicado saber a ciencia cierta sobre todo porque los poderes extrasensoriales están pensando en unas buenas vacaciones.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 26/09/2007, 12:08
MM5
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Error en rs.eof = false

Mas informacion para poder resolver el problema
Mi pagina de conexion y ejecucion de Procedimeintos Almacenados es la siguiente
Código:
<%
'***************************************************************************************************************************
Const Connex = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=xxxx;Data Source=xxxxxx"
'***************************************************************************************************************************
Const adAsyncExecute = &H00000010
Const adExecuteNoRecords = &H00000080
Const adStateClosed = &H00000000
Const adStateOpen = &H00000001
Const adStateConnecting = &H00000002
Const adStateExecuting = &H00000004
Const adStateFetching = &H00000008
'***************************************************************************************************************************
dim ParaEnvio(55,3)
dim Obj, Rs, Prm
'***************************************************************************************************************************
Sub Consulta(Proveedor, Procedimiento, CantParametros, ConRecordset)
	Dim Cn
	Set Cn = Server.CreateObject("ADODB.Connection")
		Cn.Open Connex
	Set Obj = Server.CreateObject ("ADODB.Command")
    server.ScriptTimeout = 2000000
	Set Obj.ActiveConnection = Cn
		Obj.CommandText = Procedimiento
		for xx=0 to CantParametros -1
			call Parametro(ParaEnvio(xx, 2),ParaEnvio(xx, 1), ParaEnvio(xx, 0))
			Obj.Parameters.Append Prm
	    next
		Obj.CommandType = 4
		if ConRecordset = "S" then 'Cuando el Sp retorna un Recordset y ademas parametros de Salida  									'NO OCUPAR CUANDO SP HACE UN INSERT
			Set rs = Server.CreateObject("ADODB.Recordset")
			Set rs = Obj.Execute
			Obj.Execute
		elseif ConRecordset = "X" then 'Cuando el SP hace un insert y ademas retorna un Recordset
			Set rs = Server.CreateObject("ADODB.Recordset")
			Set rs = Obj.Execute
		else
			Obj.Execute
		end if

Set Prm = nothing:Set Cn = nothing
End Sub
'***************************************************************************************************************************
Function Parametro(Sentido, valor, nombreParam)
    Set Prm = Server.CreateObject("ADODB.Parameter")
    Prm.Name = nombreParam

    If IsNumeric(valor) = False Then
        Prm.Type = 8: Prm.Value = valor
        If valor = "" Then
            Prm.Size = 200
        Else
            Prm.Size = Len(valor)
        End If
    ElseIf IsNumeric(valor) = True Then
	   if len(valor) >1 then
          if mid(valor,1,1) ="0"then
				Prm.Type = 8:Prm.Size = Len(valor):Prm.Value = valor		  
		  else
				Prm.Type = 5:Prm.Size = Len(valor):Prm.Value = CDbl(valor)
		  end if
	   else
         if len(valor) > 3 then
		 	Prm.Type = 3:Prm.Size = Len(valor):Prm.Value = CDbl(valor)
         else
			Prm.Type = 5:Prm.Size = Len(valor):Prm.Value = CDbl(valor)
		 end if
	   end if 
    End If
    If Sentido = "I" Then
        Prm.Direction = 1'adParamInput
    ElseIf Sentido = "O" Then
        Prm.Direction = 2'adParamOutput
    End If

End Function
%>
y asi invoco para la ejecucion de un sp
call Consulta("Proveedor", "Procedimiento", 5,"X")

if not rs.eof then (En esta sentencia es donde me arroja el error)
  #4 (permalink)  
Antiguo 26/09/2007, 12:09
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Error en rs.eof = false

Yo necesitaría hacer pruebas para ver si el problema es del servidor o del código, igual no colocas algún trozo del código involucrado así que no puedo opinar en ese sentido. Con otras BD's (informix) me ha pasado eso mismo pero cuando los servidores tienen instalados diferentes clientes, en tu caso supongo debes reinstalar el MDAC creo que al última versión es la 2.8 pero no me hagas mucho caso.

Edito:
¿Tanto me tardé en escribir que cuando posteo ya hay dos respuestas?
  #5 (permalink)  
Antiguo 26/09/2007, 12:12
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Error en rs.eof = false

Pues para comenzar ni siquiera veo donde esta el rs o la condicion que arroja el error.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 26/09/2007, 12:12
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Error en rs.eof = false

Cita:
Iniciado por Myakire Ver Mensaje
Yo necesitaría hacer pruebas para ver si el problema es del servidor o del código, igual no colocas algún trozo del código involucrado así que no puedo opinar en ese sentido. Con otras BD's (informix) me ha pasado eso mismo pero cuando los servidores tienen instalados diferentes clientes, en tu caso supongo debes reinstalar el MDAC creo que al última versión es la 2.8 pero no me hagas mucho caso.

Edito:
¿Tanto me tardé en escribir que cuando posteo ya hay dos respuestas?
Es que no tienes la experiencia de chat
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 26/09/2007, 12:14
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Error en rs.eof = false

if not rs.eof then

pero si no hay abierto ningún recordSet global fuera de las subrutinas!!!, pues por eso truena. La definición del recordSet debería estar fuera de las subrutinas para que su ámbito sea mayor. Así lo que no me creo es que en un servidor funcionara

Cita:
Es que no tienes la experiencia de chat
Uno que si tiene trabajo, jejeje
  #8 (permalink)  
Antiguo 04/10/2007, 17:24
MM5
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Error en rs.eof = false

Cita:
Iniciado por Myakire Ver Mensaje
if not rs.eof then

pero si no hay abierto ningún recordSet global fuera de las subrutinas!!!, pues por eso truena. La definición del recordSet debería estar fuera de las subrutinas para que su ámbito sea mayor. Así lo que no me creo es que en un servidor funcionara



Uno que si tiene trabajo, jejeje
Creame Mister... de verdad.... esta aplicacion esta trabajando actualmente....
es mas... antes en ese server si funcionaba... luego necesitaron formatear esa maquina, fue entonces cuando pase la aplicacion al servidor actual..... restauraron el server original y ahora no funciona....
sobre la seccion de codigo.. la puse en los primeros post, la conexion, la ejecucion y la invocacion a la subrutina que ejecuta.... HAAAAAAAAAAAAAAAAAAAAaaa, me aniquilare
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:18.