Ante todo decirte que tienes una forma bastante peculiar de filtrar... yo creo que todo eso que has puesto se puede hacer en muchas menos lineas (creo que con menos de 5 se salva)
Entiendo que deseas filtrar por el valor de un campo (del último control dónde se ha estado). Ese código que tienes funcionará bien siempre que el usuario no haga clic en otro sitio antes de clicar el botón. Si quiero filtrar el campo, por ejemplo, Cliente y, después de hacer clic en Cliente y antes de hacerlo en el botón hago clic en Dirección, es obvio que filtrara por la dirección. Lo digo porque es algo muy a tener en cuenta a la hora de programar.
Si quieres hacerlo así perfecto pero tal como lo tienes solo puedes filtrar por valores numéricos; para filtrar por textos necesitaras poner el texto entre comillas o apostrofes. En esos casos yo acostumbro a utilizar el Tag del control para almacenar el tipo de dato que contiene. De esa forma puedo crear la cadena de filtro adecuadamente.
Una cadena de filtro numérico:
"Campo=" & Me!elcampo
Uno de texto:
"Campo = '" & Me!elcampo & "'" 'ojo: apostrofe, comillas, ampersand, Me!elcampo, ampersand, comillas, apostrofe, comillas
Finalmente la aplicación del filtro. Nunca he utilizado esa forma por lo que desconozco si los filtros son acumulativos o no. En caso de no serlo me parece que la técnica no es la más adecuada. La utilización de Filter es más "académica"
Me.Filter = lacadenadefiltro
Me.FilterOn = True
Otra forma de contar es aplicar el filtro a nivel de RecordSource creando la SQL adecuada (algo como lo que has hecho en tu intento de contar)
En cualquier caso la forma más adecuada de contar los registros resultantes (independientemente de la técnica de filtrado aplicada) es utilizar el Recordsetclone.
Una vez aplicado el filtro:
nfil = Me.RecordsetClone.RecordCount
Otro consejo más: si aplicas un valor al Me. RecordSource no es necesario hacer un Requery a continuación. Con eso ejecutarás dos veces la consulta consumiendo unicamente recursos. En algunos sistemas locales no es importante pero en ciertos sitios programas buscando arañar décimas de segundo (te lo digo por experiencia)
Un saludo
Xavi
http:/www.aesoft-databases.com
http://www-mvp-access.com/