Access - recordset

 
Vista:

recordset

Publicado por JMAN (96 intervenciones) el 12/02/2009 22:23:45
Saludos!

la prgunta es si alguno de uds. sabe hacer un recordset. es por lo siguiente.

tengo una base de datos de clientes, cada cliente tiene una o mas cuentas y cada cuenta tiene un historial de operaciones.

lo voy a poner mas sencillo. supongamos que llevo el diario de vida de juanito. cada cosa que hace la anoto en un nuevo registro. entonces si me preguntan en qué está juanito yo voy y leo el último registro ya que contiene la ultima informacion sobre juanito. se entiende?

ya, para encontrar la informacion más actualizada puse la función Dlast( ). crei que todo andaba bien pero resulta que ahora ingrese datos nuevos y la funcion me sigue retornando los mismos valores que hace dias atras. miré la consulta y al parecer el concepto de "ultimo valor" depende de cómo estén ordenados los registros y eso a mi no me sirve.

la ayuda de access dice que la mejor forma de resolver esto es (cito):

" Desde Visual Basic, también puede crear un objeto Recordset de ADO y usar el método MoveFirst or MoveLast para que se devuelvan el primero o el último registro de un conjunto de registros."

alguien me explica como hago eso???....
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:recordset

Publicado por Victoria (1530 intervenciones) el 13/02/2009 07:31:23
Hola:
Para trabajar con recordsets tienes DAO y ADO. Yo trabajo con DAO, no voy a entrar en detalles de mis motivos, así que, te lo pongo con ello. Con ADO es igual, cambia la asignación.

Te cuento:

Dim mCad as String
Dim mRs as DAO. Recordset

mCad= " SELET campo1, campo2... FROM tabla WHERE IdCliente=" & Me.Idclienteç

Set mRs=Currentdb.Opendrecordset(mCad)

If mRs.Recordcount>0 then
mRs.MoveLast
mRs.MoveFirst
End If

Con mCad asignas los campos que quires ver con el recordset pudiendo poner condiciones si las necesitas. Aquí te he puesto que el cliente ha de ser igual a un campo llamado IdCliente que está en el formulario

Con Set asignas al recordset la cadena
Recordcount mira si existen registros en el recordset, y si los hay, lo mueve al final y después al priencipio. Así se carga el recordset (conjunto de registros) en la variable

A partir de aquí puedes ver los valores de los campos del recordset de esta formar

Me. Apellido: mRs!apellido

etc

No olvides, cuando has terminado de ver lo que necesitas, cerrar el recordset con lo siguiente:

mRs.Close

Si creas una consulta veras su SQL

Un saludo
Victoria
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:recordset

Publicado por Chea (1015 intervenciones) el 13/02/2009 13:44:39
Ojo, porque con un Recordset también estás a expensas del orden en que se encuentra. Lo mismo que con dLast puede ser más seguro buscar, en vez de en la tabla directamente, en una consulta basada en esa tabla y ordenada por fecha.

No obstante, es muy interesante empezar a familiarizarse con los Recordsets. Aunque tendrás que ampliarlas por tu cuenta, las instrucciones que te ha dado Victoria, están muy bien. Si quieres ampliar más, te recomiendo el curso de Eduardo Olaz, gratuito y completísimo: http://www.olaz.net/

En mi página puedes encontrar un complemento para Access que, aunque incompleto, te puede ayudar bastante en la generación de recordsets:
http://jbengoechea.com/jbwzcodegen.htm

Los recordsets pueden ser de DAO o de ADO. Aunque Microsoft estuvo recomendando usar ADO, por ser de uso más general, a partir de la versión 2007 vuelve a recomendar DAO, más específico para Access.

Saludos
José Bengoechea Ibaceta
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:recordset

Publicado por Chea (1015 intervenciones) el 13/02/2009 13:46:29
Ojo, porque con un Recordset también estás a expensas del orden en que se encuentra. Lo mismo que con dLast puede ser más seguro buscar, en vez de en la tabla directamente, en una consulta basada en esa tabla y ordenada por fecha.

No obstante, es muy interesante empezar a familiarizarse con los Recordsets. Aunque tendrás que ampliarlas por tu cuenta, las instrucciones que te ha dado Victoria, están muy bien. Si quieres ampliar más, te recomiendo el curso de Eduardo Olaz, gratuito y completísimo: http://www.olaz.net/

En mi página puedes encontrar un complemento para Access que, aunque incompleto, te puede ayudar bastante en la generación de recordsets:
http://jbengoechea.com/jbwzcodegen.htm

Los recordsets pueden ser de DAO o de ADO. Aunque Microsoft estuvo recomendando usar ADO, por ser de uso más general, a partir de la versión 2007 vuelve a recomendar DAO, más específico para Access.

Saludos
José Bengoechea Ibaceta
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:recordset

Publicado por JMAN (96 intervenciones) el 13/02/2009 15:34:14
Saludos!

Victoria y José , muchas gracias por su aporte, estoy seguro que será de mucha ayuda. Yo ya tengo un recordset en mi bd pero la verdad lo copié de otro lado sin entender su lógica, me conformé con saber que funciona. Ahora que me lo explicas puedo hacer uno por mi mismo.

El curso de E. Olaz es muy bueno, pero viene por entregas y yo solo tengo unas cuantas que baje por utorrent. ahora que me das el link vere si hay mas capitulos.

Reiterando los agradecimientos y que tengan un buen día
J.M.A.
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:recordset

Publicado por JMAN (96 intervenciones) el 13/02/2009 15:51:29
José, tu complemento me tira un error. es compatible con Access 2007?
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:recordset

Publicado por Chea (1015 intervenciones) el 13/02/2009 18:22:56
Teóricamente sí. Es más, está hecho con Access 2007.

Ten en cuenta que es un complemento y hay que instalarlo y usarlo como tal y no directamente ¿Qué problema te da?

Saludos
José Bengoechea Ibaceta
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:recordset

Publicado por JMAN (96 intervenciones) el 13/02/2009 18:45:16
dice que el proyecto está dañado, y el mensaje complementario es el siguiente:

Este error aparece al intentar convertir una base de datos de Access 97 a otra de una versión más reciente. Si la base de datos no se compactó antes de realizar esta operación, se recomienda compactarla lo antes posible.
Si la base de datos está dañada o tiene demasiadas referencias a entradas marcadas como eliminadas pero que aún no se han quitado de la base de datos, ésta no se convertirá correctamente. Al compactar y reparar se asegura que la base de datos no contenga errores que podrían afectar de forma negativa al proceso de conversión.
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:recordset

Publicado por JMAN (96 intervenciones) el 13/02/2009 18:42:48
perdonen que sea tan cargante con el tema pero...

ordené la consulta por el campo autonumérico, en forma ascendente. Y la "·$%& funcion no me devuelve lo que debería...

por ej. para un cliente tenia 4 registros, agregué uno con lo que ya van en 5, Dlast deberia darme el 5to pero me devuelve el 4to

necesito ayuda urgente ya que el proyecto lo habia dado por terminado y lo reparti en toda la oficina, ahora debo arreglarlo antes que alguno se de cuenta del error!

José, me tiro derechemente con el recordset? no lo hice por que te entendí que no me iba a servir

Gracias, Saludos.
José Manuel Alfaro
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