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.
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".
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
Del mismo modo, si seleccionamos el nombre Maria, veremos que existen 4 registros en la tabla con dicho nombre.
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
Enviar un comentario
Últimas publicaciones
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.
Hola Emanuel,
Te respondo en el foro.
Saludos.