Contar todos los registro que aparezca en subformulario

Tengo un Formulario (FrmInstructor), y dentro del mismo tengo tres Textbox: NumCP, TotalRegistros y Registrosencontrados, y un Subformulario (SubInstructor), mediante la siguiente instrucción cuando inserto un NumCP, me muestra en el subformulario todos los registros donde aparece el NUMCP.

Dim strSQL As String

strSQL = "Select * FROM TblAtestados WHERE Instructor Like '*" & Forms!FrmInstructor!NUMCP & "*'"

Me.SubInstructor.Form.RecordSource = strSQL

'Muestro total Registros encontrados

Registrosencontrados = DCount("Instructor", "TblAtestados", "Instructor ='" & Me.NUMCP & "'").

El campo NumCP, suele por ejemplo, aparecer de la siguiente manera 12000, y en otras ocasiones suele aparecer 12000 - 13000.

Cuando realizo la consulta, por ejemplo si selecciono 12000 me cuenta todos los registros donde aparece ese número, pero si aparece 12000-13000 ese registro no me lo cuenta.

Que cambio debería de hacer si se puede en :

Registrosencontrados = DCount("Instructor", "TblAtestados", "Instructor ='" & Me.NUMCP & "'").

Para que me contara todos los registros donde apareciera el dato solicitado.

3 Respuestas

Respuesta
1

Inténtalo así:

Registrosencontrados = DCount("Instructor", "TblAtestados", "InStr(Instructor, '" & Me.NUMCP & "') <> 0").

Localizara ambos datos (cada uno cuando le corresponda).

La función InStr devuelve la posición del primer carácter si encuentra todo el texto a localizar, si no existe el texto a localizar devuelve un cero.

La alternativa mas sencilla para conocer el numero de registros es un cuaddro de texto en el que su origen de datos sea :

=Count(*)

Y tomara el dato que Access ya calculo por defecto (lo utiliza en el pie para indicar en que registro esta del numero de registros que contiene).

Y si el dato esta en un subformulario y se quiere ocultarlo en el sub y visualizarlo en el principal solo hay que hacer referencia a el y como origen de datos del cuadro de texto:

=[nombre del subformulario].Form.[nombre del cuadro de texto]

Sin un ápice de código obtienes el resultado de la forma mas rápida (porque un formulario primero ejecuta los procesos 'propios' y después lo que se le programe)

Respuesta
1

Esta es la instrucción

Registrosencontrados = DCount("Instructor", "TblAtestados", "[Instructor] LIKE '*" & Me.NUMCP & "*'")

Mirando en detalle no necesita Dcount(), puede hacer el evento Después de actualizar del campo NumCP puede incluir esta instrucción.

Registrosencontrados = Me.SubInstructor.Form.RecordsetClone.RecordCount
Respuesta
1

Antonio, lo que no entiendo es que en un campo numérico te aparezca algo como 1300-1200

Dicho esto, si tengo un formulario con tres cuadros de texto y con un subformulario Clientes

En el evento Al activar el registro le tengo puesto

Private Sub Form_Current()
TotalRegistros = DCount("*", "clientes")
End Sub

Y en las propiedades del cuadro de texto Cadena( el primero de la izquierda) le pongo

Private Sub Cadena_AfterUpdate()
Me.Clientes.Form.RecordSource = "select * from clientes where pais like ""*""&'" & Me.Cadena & "'&""*"""
RegistrosE = DCount("*", "clientes", "pais like ""*""& '" & Me.Cadena & "'&""*""")
End Sub

De forma que cuando lo abro, en TotalRegistros me dice cuántos tiene el subformulario

Y cuando pongo una cadena de texto en el control cadena

Puedes ver que el cursor aún está en el control. Cuando pulso Enter

En el subformulario me muestra aquellos registros en que en el campo País existe la cadena SP y en Registro encontrados me dice cuántos son.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas