Saber el número de registros dentro de un recordset usando VBA

Escrito por Administrador

25 de noviembre de 2021

Hoy vamos a aprender cómo saber el número de registros que se encuentran dentro de un recordset usando VBA.

Posiblemente, después de realizar una selección de datos en base a un criterio, querramos saber qué número de registros lo cumplen y se encuentran en dicho recordset.

Os traigo un ejemplo (adjunto al final del post) que, aunque es muy sencillito, os servirá para entender cómo se implementa dentro del código de un programa.

El archivo contiene la tabla "Empleados", con el nombre, apellido y edad de cada empleado.

solo-letras-vba

Además, en el formulario "Comprobar Recordset" tenemos dos campos desplegables "Nombre" y "Edad". Con ellos, podremos seleccionar cualquiera de los valores introducidos en la tabla "Empleados".

solo-letras-vba

En primer lugar, seleccionamos el nombre Natalia. Al pulsar el botón Nº Registros con este nombre, se creará un recordset con todos los registros que tengan como nombre Natalia, y nos aparecerá en un cuadro de texto el número de registros contenidos en dicho recordset.

A continuación, os dejo un enlace donde explico cómo usar la función msgbox en VBA, por si os interesa.

Private Sub Numeronombres_Click()

Dim dbs As DAO.Database
Dim rst As DAO.Recordset

'Creamos el Recordset usando VBA con los registros que tienen el mismo nombre que hemos seleccionado en el formulario

Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Select * from Empleados where Nombre='" & Form!Nombre & "'")

'Contamos el numero de registros dentro del Recordset

rst.MoveLast
Numero = CStr(rst.RecordCount)

'Lo mostramos en un cuadro de texto

MsgBox "El número de registros es " & Numero

End Sub

solo-letras-vba
solo-letras-vba

Del mismo modo, si seleccionamos el nombre Maria, veremos que existen 4 registros en la tabla con dicho nombre.

solo-letras-vba
solo-letras-vba

Por último, para el caso del campo "Edad", el código es el mismo, salvo un detalle.

Private Sub Numeroedades_Click()

Dim dbs As DAO.Database
Dim rst As DAO.Recordset

'Creamos el Recordset con los registros que tienen la misma edad que hemos seleccionado en el formulario

Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Select * from Empleados where Edad=" & Form!Edad & "")

'Contamos el numero de registros dentro del Recordset

rst.MoveLast
Numero = CStr(rst.RecordCount)

'Lo mostramos en un cuadro de texto

MsgBox "El número de registros es " & Numero

End Sub

Y es que, como el campo es numérico, suprimimos el uso de las comillas simples (') al hacer referencia al campo.

Set rst = dbs.OpenRecordset("Select * from Empleados where Edad=" & Form!Edad & "")

Mientras que, para el campo Nombre escribíamos,

Set rst = dbs.OpenRecordset("Select * from Empleados where Nombre='" & Form!Nombre & "'")

Espero que con este ejemplo hayas aprendido cómo saber el número de registros que se encuentran dentro de un recordset usando VBA.

Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.

Un saludo y hasta la próxima.

Si te ha servido y quieres donar





Descarga el archivo del ejemplo

2 Comentarios

  1. Hola, recién envié al foro una duda sobre "Control calculado" que su solución me parece está relacionada con este artículo. Me pregunto (no tengo mucha experiencia en el mundo del access y la programación) si al definir el recordset (Set rst = dbs.OpenRecordset("Select * from Empleados where Edad=" & Form!Edad & "")) se pueda establecer una función de agregado (por ejemplo la Suma) que me permita calcular el total de una campo determinado (lógico un campo numérico).
    La otra cuestión que no tengo idea como resolver, es que; una vez contados los registros (rst.MoveLast
    Numero = CStr(rst.RecordCount)), como puedo llevar ese resultado a un cuadro de texto. Que en mi caso particular en vez de contar registros, es poder realizar la suma y ese resultado llevarlo al cuadro de texto.
    Un saludo y muy agradecido por tu ayuda y colaboración.

    Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Últimas publicaciones

Categorías

diciembre 2024
LMXJVSD
 1
2345678
9101112131415
16171819202122
23242526272829
3031 

Debates en el foro

Contacto