Duda con recorset

De antemano muchas gracias:
Necesito que un formulario o directamente desde la consulta recorrerlo con un recordset para una serie de cálculos, me podrías explicar como hacer esto y recorrer el recorset.
Muchas gracias

2 Respuestas

Respuesta
1
En un formulario, puedes poner el siguiente código.
'Dimensionas Las Variables que vas a necesitar, Db (Database), Sql (String), RsSql (Recordset) son imprescindibles para poder poder hacer la consulta y crear el recordset, con los nombres que a ti te vaya mejor. Las otras son simplemente para almacenar los valores de la consulta en una variable
Dim Db as Database 
Dim Sql as String
Dim RsSql as Recordset
Dim Campo1 As String
Dim Campo2 As Integer
Dim Campo3 As Integer
Dim Campo4 AS Currency
'Indicas que la Database es la que está funcionando actualmente
Set Db = Currentdb
'Creas el texto de consulta
Sql = "SELECT * FROM Tabla1;"
'Pones el resultado de la consulta dentro del recordset
Set RsSql = Db.OpenRecordset (Sql)
'Si el recorset No esta al final (EOF --> End Of File "Final del fichero")
While not RsSql.EOF
'Asignas el valor a las variables segun el valor de los campos del recorset
Campo1 = RsSql.Fields ("TituloDelCampo").Value
Campo2 = RsSql.Fields ("TituloDelCampo").Value
Campo3 = RsSql.Fields ("TituloDelCampo").Value
Campo4 = RsSql.Fields ("TituloDelCampo").Value
'REALIZAS LAS OPERACIONES PERTINENTES
'Indicas al Recodset que avance una fila
RsSql.MoveNext
'Si el Recorset se encuentra al final del fichero (Si EOF)
WEND
'Lo que sea, en este caso salir de la subrutina
Exit Sub
OK, muchas gracias me haz dado una idea sobre el manejo de cordset, es valiosa, ahora necesito que me digas, tengo en una ventana un formulario y quiero que el recorset tenga la información de dicho formulario...
O de ser posible ejecutar el recorset, con una consulta ya realizada en access.
De ante mano muchas gracias
Ejecutar una consluta realizada en access, es tan fácil como realizar la consulta, después, Barra de Herramientas/Ver/VistaSQL. Haces un copiar del rollo que pone allí y luego pones las frases entre comillas, y las encadenas, das este valor a la variable de texto (En el ejemplo la variable Sql) y lo demás todo igual, lo metes en un Recorset y a jugar con el.
Para meter los datos de un formulario dentro de un Recorset, así de golpe, no se como hacerlo, pero puedes coger la consulta que tienes de origen de datos en tu formulario, si parte directamente de la tabla, entonces creas una consulta con todos los campos de la tabla. Si quieres recuperar solo un registro de este formulario, por ejemplo formularios independientes o solo el que tengas seleccionado en este momento, entonces en criterios pones algo dentro del IdRegistro que tengas y luego sustituyes el algo por el idregistro del formulario. Te pongo un par de ejemplos:
Dim db As Database
Dim sql As String
Dim rs As Recordset
'Así es como queda la consulta en vista SQL
'SELECT Tabla1.Id, Tabla1.Nombre, Tabla1.Apellido, Tabla1.Telefono
'FROM Tabla1;
'Bién yo lo que hago es:
sql = "SELECT Tabla1.Id, Tabla1.Nombre, Tabla1.Apellido, Tabla1.Telefono" _
+ " FROM Tabla1;"
Set rs = db.OpenRecordset(sql)
'Bién, ahora tengo dentro del recordset todos los registros de la tabla 1, o lo
'que es lo mismo todos los registro de un formulario en vista hoja de datos o todos los
'formularios en un formulario en vista de formularios continuos (o sea de la lista)
'Gueno, ahora lo que te voy a poner es un ejemplo para que solo coja un registro de
'la tabla o lo que seria lo mismo el registro que tienes seleccionado en alguna de las
'opiciones anteriores o el que tienes en pantalla en vista de un único formulario.
'Primero debes dimensionar la variable de id y darle valor
Dim IdRegistro As String
IdRegistro = Me.Id.Value
'Luego creas la consulta igual que antes, pero en criterios de id pones por ejemplo 1234
'Esto queda así
'SELECT Tabla1.Id, Tabla1.Nombre, Tabla1.Apellido, Tabla1.Telefono
'FROM Tabla1
'WHERE Tabla1.Id = 1234;
'Por lo que tú lo pones así:
sql = "SELECT Tabla1.Id, Tabla1.Nombre, Tabla1.Apellido, Tabla1.Telefono" _
+ " FROM Tabla1" _
+ " WHERE Tabla1.Id = " + IdRegistro + ";"
Set rs = db.OpenRecordset(sql)
'Solucionado, ahora el recordset solo tiene un registro, el que el id es igual que
'el de tu registro del formulario. Esto lo puedes poner en un boton de comando o
'en Eventos al ActivarRegistro, y entonces cada vez que tu cambies de registro,
'va a hacer lo que tu pongas aqui.
Muchas gracias por tu ayuda, la solución especifica era esta:
Set RsCoti = Me.[_SubFichaCotizacion Detalle].Form.RecordsetClone
Tu aclaraciones me sirvieron para el manejo del recordset que no tenia ni idea...
Nuevamente muchas gracias
Respuesta
1
Si tienes el recordset en una variable, ej rSet1,
while nor rSet1.eof()
  'ejecuta proceso
  RSet1.movenext()
Wend
.
Actualmente me encuentro de viaje y no dispongo de PC Disponible el tiempo suficiente para poder emitir una respuesta por mi aceptable. De todas formas espero haber ayudado.
OK, muchas gracias me haz dado una idea sobre el manejo de cordset, es valiosa, ahora necesito que me digas, tengo en una ventana un formulario y quiero que el recorset tenga la información de dicho formulario...
O de ser posible ejecutar el recorset, con una consulta ya realizada en access.
De ante mano muchas gracias
El formulario debes asociarlo a la tabla (ventana propiedades), una vez hecho esto, cada campo del formulario lo asocias al campo de la tabla de la base de datos.
Muchas gracias por tu ayuda, la solución especifica era esta:
Set RsCoti = Me.[_SubFichaCotizacion Detalle].Form.RecordsetClone
Tu aclaraciones me sirvieron para el manejo del recordset

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas