Acceda a conjuntos de registros VBA: abierto, recuento, bucle y más

En este tutorial, aprenderemos cómo abrir un conjunto de registros, contar el número de registros en el conjunto de registros, recorrer el conjunto de registros, agregar un registro, actualizar un registro, leer un valor de un registro y eliminar un registro.

Tenemos una tabla de acceso, llamada ProductsT que se muestra a continuación:

Abrir un juego de registros

Primero necesitamos establecer la base de datos que pretendemos usar, en este caso es la base de datos abierta actualmente. Luego podemos usar el método CurrentDB.OpenRecordSet para abrir / crear nuestro Recordset.

Para crear un Recordset que nos permita manipular los datos en la tabla llamada ProductsT, usaríamos el siguiente código:

1 CurrentDb.OpenRecordset ("ProductsT")

Contando la cantidad de registros usando VBA

Una vez que haya creado un Recordset, lo más probable es que desee hacer algo útil con él o manipular los datos que contiene de alguna manera. Puede contar la cantidad de registros en su conjunto de datos (en este caso, la tabla llamada ProductsT) usando el siguiente código:

1 MsgBox CurrentDb.OpenRecordset ("ProductsT"). RecordCount

Bucle a través de un RecordSet usando VBA

El siguiente código recorre nuestro RecordSet:

1234567891011121314 Sub RecordSet_Loop ()Atenuar nuestra base de datos como base de datosAtenuar nuestro conjunto de registros como conjunto de registrosEstablecer ourDatabase = CurrentDbEstablecer ourRecordset = ourDatabase.OpenRecordset ("ProductsT")Hacer hasta nuestroRecordset.EOFMsgBox ourRecordset! ProductIDourRecordset.MoveNextCírculoEnd Sub

Programación VBA | ¡Code Generator funciona para usted!

Agregar un registro a un RecordSet

Utilice el método Recordset.AddNew para agregar un nuevo registro al RecordSet:

1234567891011121314 Sub RecordSet_Add ()Con CurrentDb.OpenRecordset ("ProductsT").AñadirNuevo! [ProductID] = 8! [ProductName] = "Producto HHH"! [ProductPricePerUnit] = 10! [ProductCategory] = "Juguetes"! [Unidades en existencias] = 15.ActualizarTerminar conEnd Sub

El resultado es:

Actualización de un juego de registros

Debe utilizar el método Recordset.AddNew o Recordset.Edit. Después de esta declaración, debe utilizar el método Recordset.Update para mantener los cambios.

Leer valores de un registro

Tienes que usar el método Recordset.FindFirst para hacer un registro, el registro actual. Luego debe usar Recordset.Fields para especificar qué campo mirar.

12345678910111213141516 Sub RecordSet_ReadValue ()Atenuar nuestra base de datos como base de datosAtenuar nuestro conjunto de registros como conjunto de registrosEstablecer ourDatabase = CurrentDbEstablezca ourRecordset = ourDatabase.OpenRecordset ("ProductsT", Tipo: = RecordsetTypeEnum.dbOpenDynaset)Con nuestroRecordset.FindFirst "ProductName =" & "'Producto CCC'"Si .NoMatch EntoncesMsgBox "No se encontraron coincidencias"DemásMsgBox ourRecordset.Fields ("ProductCategory")Terminara siTerminar conEnd Sub

El resultado es:

¿Cansado de buscar ejemplos de código VBA? ¡Prueba AutoMacro!

Eliminar un registro de un juego de registros

Para eliminar un registro de un Recordset, primero debe convertirlo en el registro actual utilizando el método Recordset.FindFirst. A continuación, puede eliminarlo utilizando el método Recordset.Delete. El siguiente código muestra cómo eliminar el registro 2 en el conjunto de datos:

1234567891011121314151617181920212223 Sub RecordSet_DeleteRecord ()Atenuar nuestra base de datos como base de datosAtenuar nuestro conjunto de registros como conjunto de registrosEstablecer ourDatabase = CurrentDbEstablezca ourRecordset = ourDatabase.OpenRecordset ("ProductsT", Tipo: = RecordsetTypeEnum.dbOpenDynaset)Con nuestroRecordset.FindFirst "ProductName =" & "'Producto BBB'"Si .NoMatch EntoncesMsgBox "No se encontraron coincidencias"DemásourRecordset.DeleteTerminara siTerminar con'Reabrir mesaDoCmd.Close acTable, "ProductsT"DoCmd.OpenTable "ProductsT"End Sub

El resultado es:

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave