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

No puedo cerrar un Recordset

Estas en el tema de No puedo cerrar un Recordset en el foro de ASP Clásico en Foros del Web. Soy principiante en asp he avanzado mucho pero estoy hace 1 mes trabado con esto. Mis consultas a la base de datos se efectuan correctamente ...
  #1 (permalink)  
Antiguo 25/06/2008, 13:43
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 9 meses
Puntos: 35
No puedo cerrar un Recordset

Soy principiante en asp he avanzado mucho pero estoy hace 1 mes trabado con esto. Mis consultas a la base de datos se efectuan correctamente (modifica y borra mis registros), pero el asp siempre me tira el mismo error.

<body>
<%
Dim cnn,rst
set cnn = Server.CreateObject("ADODB.Connection")
set rst = Server.CreateObject("ADODB.RecordSet")
cnn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + Server.MapPath("base/diario.mdb"))
sqltext = "UPDATE noticias SET detalle='b' where id=56"
rst.CursorType = adOpenStatic
rst.LockType = adLockOptimistic
rst.Open sqltext,cnn
rst.update
rst.Close
set rst = Nothing
cnn.Close
set cnn = Nothing
%>
</body>
Tipo de error:
ADODB.Recordset (0x800A0E78)
La operación no está permitida si el objeto está cerrado.
El error apunta a la linea que dice:
rst.Close
En principio modifica el registro 56 sin usar CursorType y LockType pero tengo entendido que se deben usar, es por eso que las puse. Tambien intente comentando rst.update, etc pero no logre nada.
El codigo no usa variables post para simplificar lo mas posible el codigo.
Gracias por su ayuda!!
  #2 (permalink)  
Antiguo 25/06/2008, 15:32
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 2 meses
Puntos: 146
Respuesta: No puedo cerrar un Recordset

Tu instrucción SQL no te regresa un RecordSet, por eso no puedes cerrarlo.

De hecho, para eso que haces, tu código podría ser algo como esto:
Código:
<%
set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + Server.MapPath("base/diario.mdb"))

Set cmd=server.CreateObject("ADODB.command")
Set cmd.ActiveConnection = Cnn

sqltext = "UPDATE noticias SET detalle='b' where id=56"
cmd.CommandText = sqltext
cmd.Execute

cnn.Close
set cnn = Nothing
%>
Saludos
  #3 (permalink)  
Antiguo 27/06/2008, 13:32
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 9 meses
Puntos: 35
Respuesta: No puedo cerrar un Recordset

Bueno voy a probar con ADODB.command.
En cuando a CursorType y LockType, cuando deberia usarlos? son impresindibles?
Gracias!
  #4 (permalink)  
Antiguo 28/06/2008, 03:59
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: No puedo cerrar un Recordset

La propiedad CursorType sirve para definir la dirección del cursor (indica el registro activo en ese momento) en un recordset. LockType especifica el tipo de bloqueo (solo lectura, optimista o pesimista) cuando andas editando un registro, tambien en un recordset.

Command no dispone de estas propiedades con lo que no tienes que usarlas. Sobre su imprescindibilidad, pues el 90% de las veces, el tipo de bloqueo será optimista cuando editas un registro (ejerce menos presión sobre la BD y no todas las BDs te dejarán modificarlo). Sobre el cursor, depende de los gustos y necesidades. Si solo vas a leer una consulta para, por ejemplo, visualizarla en un Select, pues te basta con leer solo hacia adelante (0) o, para tener un control total sobre el cursor y poder ver modificaciones, nuevas inserciones, etc lo haces dinámicamente (2).



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #5 (permalink)  
Antiguo 28/06/2008, 04:48
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 9 meses
Puntos: 1012
Respuesta: No puedo cerrar un Recordset

hola

tomando como ejemplo el codigo de Maykire yo hasta ahora lo he hecho asi

Código PHP:
<%
set cnn Server.CreateObject("ADODB.Connection")
cnn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" Server.MapPath("base/diario.mdb"))

sqltext "UPDATE noticias SET detalle='b' where id=56"
cnn.Execute(sqltext)

cnn.Close
set cnn 
Nothing
%> 
¿hay algun inconveniente en ello?

gracias
  #6 (permalink)  
Antiguo 30/06/2008, 07:37
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 2 meses
Puntos: 146
Respuesta: No puedo cerrar un Recordset

No, por mi ninguno

En realidad, la idea de usar el objeto command es poder usar parámetros, cosa que no puedes usando el execute de la conexión, pero en realidad funciona igual así como lo pusiste que como lo puse yo en su momento.
  #7 (permalink)  
Antiguo 09/09/2008, 14:59
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 9 meses
Puntos: 35
Respuesta: No puedo cerrar un Recordset

Bien me olvide de agradecerles!!
Ya entendi , y use el command!!
gracias!!!!!!!
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 13:10.