Visual Basic - ¡GENIOS! LOS DESAFÍO...

Life is soft - evento anual de software empresarial
 
Vista:

¡GENIOS! LOS DESAFÍO...

Publicado por Jorge Espósito (29 intervenciones) el 01/05/2002 10:29:28
Cuando programaba en RDO (Remote Data Object) yo abría un recordset con una consulta SQL y después podía establecer una nueva consulta sin necesidad de cerrar el recordset y abrirlo de nuevo, por ejemplo:
'Contaba los registros
Set Mirecordset = conex.OpenResultset("SELECT COUNT(*) FROM Authors", rdOpenDynamic, rdConcurRowVer)

'Consulta la tabla Authors ordenada por Titulos
Set Mirecordset = conex.OpenResultset("SELECT * FROM Authors ORDER BY Titles", rdOpenDynamic, rdConcurRowVer)

'Consulta la tabla Authors ordenada por Autor
Set Mirecordset = conex.OpenResultset("SELECT * FROM Authors ORDER BY Author", rdOpenDynamic, rdConcurRowVer)
Donde "conex" es la conexión de la base de datos.

Lo más importante: (FUNCIONABA)

Mi pregunta es muy sencilla:

¿En ADO, sería posible establecer varias consultas SQL a los recordsets sin necesidad de Abrirlos y cerrarlos todo el tiempo?
Y que me permita estas acciones:
Mirecordset.MovePrevious
Mirecordset.MoveFirst
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¡GENIOS! LOS DESAFÍO...

Publicado por Victor Collado (51 intervenciones) el 01/05/2002 17:40:49
Hola

Con ADO puedes abrir una conexion a una base de datos y abrir un recordset a una tabla, manipularla ( te puedes mover por los recorset) y despues debes cerrar el recordset para abrirlo otra vez y manipular otra tabla diferente de la misma base de datos.

Saludos

Victor Collado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¡GENIOS! LOS DESAFÍO...

Publicado por pablosym (2 intervenciones) el 02/05/2002 14:33:11
En ado para que te permita hacer el recordcont tenes que hacer los siguiente.
Rst. CursorLocation = adUseClient
Rst.CursorType = adOpenStatic
RSt.Open SQL, AdoConexion
despes de ahi, podes realizar el RecordCount, sino te tira error.
Saludos PabloSym
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NO ENTENDIERON LA PREGUNTA...

Publicado por Jorge Espósito (29 intervenciones) el 06/05/2002 00:42:50
Ninguno de los dos entendieron la pregunta,
La pregunta es :
¿En ADO se pueden hacer consultas diferentes sin necesidad de abrir y cerrar los recordsets?

Eso es todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO ENTENDIERON LA PREGUNTA...

Publicado por david (10 intervenciones) el 07/05/2002 15:40:31
Puebra con los comandos.
set micomando = new commando
with micomando
.activeconnection= miconexion
.commandtype= adcmdtext
.command text= "SENTENCIA SQL"
end with
set mirscordset = micomando.execute
pero esto solo te deja abrirlo de lectura, si quieres modificar, insertar,... tienes que utilizar la clausura concreta para cada accion, es decir, si quieres actualizar tienes que poener update,....
para volver a utilizarlo solo tienes que cambiar:
micomando.commandtext="SENTECIA SQL2"
set mirecordset = micomando.execute

Espero que te ayude
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO ENTENDIERON LA PREGUNTA...

Publicado por Luis Fernando Melo (49 intervenciones) el 08/05/2002 07:25:21
Hola
amigo esto no es ningún desafio.

La razón por la que debes cerrar el objeto, es porque debes liberar los recursos, en RDO o tambien en DAO lo podias hacer pero dejabas basura en la memoria.
Cuando creas el Objeto recordset, se crea una estructura, la cual no se elimina hasta que tu le digas que la quieres borrar (metodo close).... y sí puedes abrir de nuevo un recordset sin cerrar el anterior siempre y cuando se conserve la estructura.... Por consiguiente el objeto debe ser cerrado para poder crear una nueva estructura cuando se ejecuta un SQL con una estructura de campos diferente.


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO ENTENDIERON LA PREGUNTA...

Publicado por Jorge Espósito (29 intervenciones) el 08/05/2002 15:40:07
Esta bien, amigo Luis Fernando, Gracias por el consejo

Pensé que el estilo más practico de hacer consultas era sin cerrar el recordset, pero si eso es asi, prefieron no arriesgar la memoria.

Fijate que conozco personas al igual que yo, que vienen de RDO, que programan de esa manera, personas que desarrollan aplicaciones como Nómina, Facturaciones, etc. No usan el Recordset.Close.
Con razón algunas veces, resetean la máquina.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO ENTENDIERON LA PREGUNTA...

Publicado por david (10 intervenciones) el 08/05/2002 18:01:52
Creo que para liberar toda la memoria utilizada en un recordset tienes que poner Set mirecordset = Nothing. El metodo close solo no te permite acceder a los datos del mismo, reduciendo el coste en memoria, pero no la libera .

Si no es asi, corrigeme.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO ENTENDIERON LA PREGUNTA...

Publicado por Jorge Espósito (29 intervenciones) el 09/05/2002 04:11:33
Bueno... realmente no sabría decir que hay de cierto cuál de las dos
instrucciones es la que libera realmente el espacio en memoria.

Lo malo es que en la ayuda del famoso MSDN, solo detalla los parámetros pero no explica o no profundiza en el tema.

De todas maneras revisaré otra vez el MSDN.

Muchas gracias y un saludo al amigo Victor, a Pablo, a Luis Fernando y al amigo David.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO ENTENDIERON LA PREGUNTA...

Publicado por Luis Fdo Melo S (49 intervenciones) el 14/05/2002 20:44:21
Hola
Si hay una diferencia entre
set Rs = nothing y rs.close

El primero quita la referencia al objeto, el cual está instanciado en memoria. Ya que otras variables pueden estar apuntando al mismo objeto.

El segundo cierra el objeto y libera la memoria.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar