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

La operación no está permitida

Estas en el tema de La operación no está permitida en el foro de ASP Clásico en Foros del Web. Vale, ya he buscado y no he encontrado el qué, así que pregunto porque llevo toda la tarde ensuciando código sin lograr nada. Si alguien ...
  #1 (permalink)  
Antiguo 20/02/2008, 16:31
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 9 meses
Puntos: 381
La operación no está permitida

Vale, ya he buscado y no he encontrado el qué, así que pregunto porque llevo toda la tarde ensuciando código sin lograr nada. Si alguien me puede iluminar al respecto le estaré eternamente agradecida y si no eternamente, pues un tiempo largo.

Mensaje de error: La operación no está permitida si el objeto está cerrado.

Ya sé que es un clásico pero ninguno de los trucos que haya usado anteriormente ha servido esta vez.

Tengo estas funciones de para acceso a bd access

Código PHP:
Sub AbrirBd()
        
Set DB1server.createObject("ADODB.Connection")
        
DB1.Provider "Microsoft.Jet.OLEDB.4.0;"
        
DB1.Properties("Jet OLEDB:Database password") = bdPwd
        DB1
.Open "Data source=" bdDatos
        DB1
.Properties("Jet OLEDB:Transaction Commit Mode") = 1
        DB1
.Properties("Jet OLEDB:Implicit Commit Sync") = True
       
        Set DB2
server.createObject("ADODB.Connection")
        
DB2.Provider "Microsoft.Jet.OLEDB.4.0;"
        
DB2.Properties("Jet OLEDB:Database password") = bdPwd
        DB2
.Open "Data source=" bdComun
        DB2
.Properties("Jet OLEDB:Transaction Commit Mode") = 1
        DB2
.Properties("Jet OLEDB:Implicit Commit Sync") = True
End Sub 
Esto lleva funcionando hace años perfectamente.

Luego hay otra función para crear un recordset que también funciona perfectamente desde hace el mismo tiempo

Código PHP:
Function CreaRecordSet(consultaBase)
    
On  Error Resume Next
    Err 
0
    Set rc 
server.createObject("ADODB.Recordset")
    
Set rc.ActiveConnection Base
    rc
.CursorLocation 3
    rc
.Open consulta, , 31
    Set CreaRecordSet 
rc
End 
Function 
Bien. En cada documento en el que se abren las bases de datos y se crean tantos RC como sean necesarios funciona de coña.

Si embargo lo mismo, en un documento nuevo que he creado me revienta en el momento de intentar pedir el valor de un campo obtenido a partir de el segundo recordset que se pida.

ejemplo:
Código PHP:
AbrirBd
Set rc 
CreaRecordSet("SELECT pepe from tabla1 Where Tipo='6' and otro='3'"DB2)
Clase rc("pepe"
Hasta ahí como siempre

pero si repito con otra consulta ....
Código PHP:
Set rc CreaRecordSet("SELECT pepino from tabla2 where Asunto = '23r"DB2)
otraClase rs("pepino"
me sale con el mensaje de que La operación no está permitida si el objeto está cerrado.

Si lo hago a la inversa pasa lo mismo. La primera consulta siempre me la devuelve bien y en la segunda, sea cual sea, me da el error.

Si le quito el otraClase = rs("pepino") pero ejecuto la función CreaRecordSet no da error. Sólo me da el error cuando trato de sacar el campo que he pedido.

Las mismas funciones trabajan en otros documentos sin problema.

¿Alguna idea de qué pasa?


Muchas gracias
  #2 (permalink)  
Antiguo 20/02/2008, 16:45
 
Fecha de Ingreso: enero-2008
Ubicación: Siempre sere tu sombra
Mensajes: 41
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: La operación no está permitida

pregunta.....

si no declaras el AbrirBd antes de realizar la consulta.... aun asi se sigue generando???

menciono esto por los mismos ejemplos que has puesto
Cita:
AbrirBd
Set rc
= CreaRecordSet("SELECT pepe from tabla1 Where Tipo='6' and otro='3'", DB2)
Clase = rc("pepe")
Cita:
Set rc = CreaRecordSet("SELECT pepino from tabla2 where Asunto = '23r", DB2)
otraClase = rs("pepino")
acaso tendra algo que ver que no tengas esa pequeña palabra antes de la estructura

p.d. probablemente estoy realizarndo una pregunta sin sentido
  #3 (permalink)  
Antiguo 20/02/2008, 17:01
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 9 meses
Puntos: 381
Re: La operación no está permitida

Cita:
Iniciado por hanzo_hattori_mx Ver Mensaje
pregunta.....

si no declaras el AbrirBd antes de realizar la consulta.... aun asi se sigue generando???
Hola hanzo_hattori_mx

AbrirBd es lo primero que llamo antes de realizar cualquier consulta.

Los ejemplos de antes en realidad son el mísmo codigo en dos partes, el segundo continuación del primero.

Si lo pongo así

Código PHP:
AbrirBd
Set rc 
CreaRecordSet("SELECT pepe from tabla1 Where Tipo='6' and otro='3'"DB2)
Clase rc("pepe"

Set rc CreaRecordSet("SELECT pepino from tabla2 where Asunto = '23r"DB2)
otraClase rs("pepino"
me salta el error en la línea otraClase = rs("pepino")

Si invierto el orden

Código PHP:
AbrirBd
Set rc 
CreaRecordSet("SELECT pepino from tabla2 where Asunto = '23r"DB2)
otraClase rs("pepino")

Set rc CreaRecordSet("SELECT pepe from tabla1 Where Tipo='6' and otro='3'"DB2)
Clase rc("pepe"
Me salta el error en Clase = rc("pepe")

Y lo que más me extraña es que estoy usando lo mismo en otros documentos de la misma aplicación y no dan este problema y llamo a una docena de CreaRecordSet de la misma manera y funciona correcto. Es ahora que estoy haciendo una ampliación y me da este resultado en un documento nuevo.

Si se te ocurre algo ... y muchas gracias por tu interés
  #4 (permalink)  
Antiguo 20/02/2008, 18:23
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: La operación no está permitida

Tunait de casualidad casual, no se autocerrara la conexion en la base de datos... es SQL verdad??

es que me ando aventurando en la consola de SQL 2005 y trae esa funcion.. de autocierre de conexion al dejar de usarse o al acompletar la operacion

no estara pasando lo mismo??
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #5 (permalink)  
Antiguo 20/02/2008, 18:24
 
Fecha de Ingreso: enero-2008
Ubicación: Siempre sere tu sombra
Mensajes: 41
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: La operación no está permitida

se me afigura que se cierra la conexion una ves hecha la operacion de consulta
  #6 (permalink)  
Antiguo 20/02/2008, 18:28
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 7 meses
Puntos: 8
Re: La operación no está permitida

Hola tunait.

Creo que lo que sucede, es que hay un error prevío al que te esta marcando, es decir no se creo el recordset( sólo es una especulación).

Prueba lo siguiente, quita la línea:

Código:
On  Error Resume Next
De tu función : CreaRecordSet(... ...)

Y seguramente saltará otro error (creo), y nos comentas a ver que pasa.

Saludos!
  #7 (permalink)  
Antiguo 20/02/2008, 18:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: La operación no está permitida

No soy muy experto en ASP pero probaste esto:
Código PHP:
AbrirBd
Set rc 
CreaRecordSet("SELECT pepe from tabla1 Where Tipo='6' and otro='3'"DB2)
Clase rc("pepe"

Set rs CreaRecordSet("SELECT pepino from tabla2 where Asunto = '23r"DB2)
otraClase rs("pepino"
Fijate la diferencia Set rc no es igual que Set rs.

Saludos.
  #8 (permalink)  
Antiguo 20/02/2008, 18:45
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: La operación no está permitida

una pequeña letra hace que el mejor cocinero se le queme la sopa

buena vista Gator
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #9 (permalink)  
Antiguo 22/02/2008, 06:17
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 9 meses
Puntos: 381
Re: La operación no está permitida

Hola! perdón por la demora en decir algo, ahí les cuento.

Cita:
Iniciado por Shiryu_Libra Ver Mensaje
Tunait de casualidad casual, no se autocerrara la conexion en la base de datos... es SQL verdad??
Cita:
Iniciado por hanzo_hattori_mx Ver Mensaje
se me afigura que se cierra la conexion una ves hecha la operacion de consulta
Es Access y eso cabría pensar, que la conexión se estaba autocerrando pero por qué sólo en el documento nuevo? en el resto de documentos de la aplicación funciona perfecto. Es que eso es lo que más me ha descolocado. Que es algo que lleva funcionando hace 3 años y no son funciones nuevas

Cita:
Iniciado por daniel00 Ver Mensaje
Hola tunait.

Creo que lo que sucede, es que hay un error prevío al que te esta marcando, es decir no se creo el recordset( sólo es una especulación).

Prueba lo siguiente, quita la línea:

Código:
On  Error Resume Next
De tu función : CreaRecordSet(... ...)

Y seguramente saltará otro error (creo), y nos comentas a ver que pasa.

Saludos!
Realmente no había vuelto a trabajar con asp desde esos 3 años que menciono más arriba y me ha pillado en baja forma

Quité la línea que me sugieres (se me podía haber ocurrido) y me dió alguna pista más como que le sacara las comillas al valor de un campo de tipo int bueno, no me lo dijo tan claro pero lo que le molestaba era eso al crear los recordset Gracias por el tip, finalmente logré que funcionaran todas las consultas!

Cita:
Iniciado por GatorV Ver Mensaje
No soy muy experto en ASP pero probaste esto:
Código PHP:
AbrirBd
Set rc 
CreaRecordSet("SELECT pepe from tabla1 Where Tipo='6' and otro='3'"DB2)
Clase rc("pepe"

Set rs CreaRecordSet("SELECT pepino from tabla2 where Asunto = '23r"DB2)
otraClase rs("pepino"
Fijate la diferencia Set rc no es igual que Set rs.

Saludos.
Cita:
Iniciado por Shiryu_Libra Ver Mensaje
una pequeña letra hace que el mejor cocinero se le queme la sopa

buena vista Gator
Ah, cuando me levanté por la mañana y leí la respuesta de gatorV me emocioné muchísimo y corrí a ver el documento diciendo "que sea eso, por favor, que sea eso". ...y mi gozo en un poco, en el documento estaba bien escrito. No tengo idea de cómo llegó ese cruce de letras al código que dejé aquí. Seguramente le dí a la tecla floja al plantear el tema tras horas de pelear con el asunto.

Gracias gracias y gracias a todos por ayudarme con el tema


Un saludo!
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 20:58.