¿Cómo Filtrar campo numérico según un combo?

He usado este código para filtrar campos con formato texto utilizando un combo que función cuando dígito o escojo de las opciones.

Necesito filtrar campos numéricos, y no sé qué deba modificar en el código para que me funcione correctamente y que al no encontrar el numero indicado me lance un mensaje indicándome que "ese numero de muestra no existe".

De ser posible quisiera que no fuera necesario un botón de limpiar el combo.

Campo numérico= NumIdMuestra

Combo= cboBuscarMuestra

Private Sub cboBuscarMuestra_Change()
Dim vMuestra As String
vMuestra = Nz(Me.cboBuscarMuestra.Text, "")
If vMuestra = "" Then
Me.FilterOn = False
Else: With Me
.Filter = "[NumIdMuestra] LIKE '*" & vMuestra & "*'"
.FilterOn = True
.cboBuscarMuestra.SetFocus
.cboBuscarMuestra.SelStart = Len(vMuestra)
Me.cboBuscarMuestra.SetFocus
End With
End If
End Sub
Respuesta
1

Yo casi nunca uso filtros. Prefiero hacerlo con criterios. Supongamos que la tabla se llama Copia al igual que el formulario y el combinado donde vas a escribir una cadena del número se llama Enum, y el valor que "buscas" está en el campo Otro de la tabla Copia. En el evento Después de actualizar del cuadro combinado Enum puedes poner

If DCount("otro", "copia", "otro like ""*""&forms!copia!enum&""*""") = 0 Then
MsgBox "No hay coincidencias"
DoCmd.CancelEvent
Me.ENUM = ""
Else
Form.RecordSource = "select * from copia where otro like ""*""&forms!copia!enum&""*"""
End If

Me explico. Supongamos que en un registro del campo Otro tienes el número 1234, y en el combinado escribes, por ejemplo, 23. La instrucción le dice que cuente cuantos registros hay en la tabla Copia en que el campo Otro contenga la cadena 23. Si no hay ninguno, te presenta el mensaje y al aceptar te borra el valor 23 que habías escrito. En caso de que encuentre alguno que cumpla esa condición, el origen de registros del formulario serán aquellos que en el cuadro de texto contengan el valor 23

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas