VBA Access: Filtro para registros que comienzan con...

¿Cómo se puede crear un filtro usando botones del alfabeto y que se muestren solamente los registros que comienzan con X letra?

2 Respuestas

Respuesta
2

Si me permites un consejo, bájate la base de datos Neptuno. Hasta el Office 2003 venía en el paquete y es muy buena para ver cosas. Tienes el formulario Lista de teléfonos de clientes con su macro correspondiente.

La puedes bajar en

https://drive.google.com/file/d/0B8pfkS8zIff6MGYxMGNiYzYtMWJlYy00N2YyLTlhN2QtOGVjMmNmMGRjNzFh/view?hl=es 

¡Gracias!
He sacado de ese ejemplo la Macro pero prefiero optimizarla con VBA. Pero me da error este código:

NOTA: He colocado diferentes combinaciones porque cada una de ellas me ha fallado.

    If Me.M_FILTRO.Value = 0 Then
        miFiltro = ""
    ElseIf Me.M_FILTRO.Value = 1 Then
        miFiltro = "SELECT CATEGORIA WHERE [CATEGORIA] Like ""[AÀÁÂÃÄ]*"
    ElseIf Me.M_FILTRO.Value = 2 Then
        miFiltro = "SELECT CATEGORIA WHERE [CATEGORIA] Like '[B]*'"
    ElseIf Me.M_FILTRO.Value = 3 Then
        miFiltro = "SELECT CATEGORIA WHERE [CATEGORIA] Like " & [CÇ] & "*"
    ElseIf Me.M_FILTRO.Value = 4 Then
        miFiltro = "SELECT CATEGORIA WHERE [CATEGORIA] Like ""[D]*"
    ElseIf Me.M_FILTRO.Value = 5 Then
        miFiltro = "SELECT CATEGORIA WHERE [CATEGORIA] Like ""[EÈÉÊË]*"
    End If
    Me.Filter = miFiltro
    Me.FilterOn = True

¿Qué puede estar mal en este filtrado? El formulario está como "Formulario continuo.

Si bien no me resolvió para lo que necesitaba, sacaré mucha información para las bases de datos.

Personalmente no uso filtros, y perdona la pregunta ¿Has mirado en el evento Después de actualizar del grupo de opciones FiltroNombreCompañía y convertido la macro a Visual Basic? Por probar la acabo de convertir y queda

'------------------------------------------------------------
' FiltrosNombreCompañía_AfterUpdate
'
'------------------------------------------------------------
Private Sub FiltrosNombreCompañía_AfterUpdate()
On Error GoTo FiltrosNombreCompañía_AfterUpdate_Err

If (FiltrosNombreCompañía = 1) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[AÀÁÂÃÄ]*""", ""
End If
If (FiltrosNombreCompañía = 2) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""B*""", ""
End If
If (FiltrosNombreCompañía = 3) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[CÇ]*""", ""
End If
If (FiltrosNombreCompañía = 4) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""D*""", ""
End If
If (FiltrosNombreCompañía = 5) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[EÈÉÊË]*""", ""
End If
If (FiltrosNombreCompañía = 6) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""F*""", ""
End If
If (FiltrosNombreCompañía = 7) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""G*""", ""
End If
If (FiltrosNombreCompañía = 8) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""H*""", ""
End If
If (FiltrosNombreCompañía = 9) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[IÌÍÎÏ]*""", ""
End If
If (FiltrosNombreCompañía = 10) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""J*""", ""
End If
If (FiltrosNombreCompañía = 11) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""K*""", ""
End If
If (FiltrosNombreCompañía = 12) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""L*""", ""
End If
If (FiltrosNombreCompañía = 13) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""M*""", ""
End If
If (FiltrosNombreCompañía = 14) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[NÑ]*""", ""
End If
If (FiltrosNombreCompañía = 15) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[OÒÓÔÕÖ]*""", ""
End If
If (FiltrosNombreCompañía = 16) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""P*""", ""
End If
If (FiltrosNombreCompañía = 17) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""Q*""", ""
End If
If (FiltrosNombreCompañía = 18) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""R*""", ""
End If
If (FiltrosNombreCompañía = 19) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[SŠ]*""", ""
End If
If (FiltrosNombreCompañía = 20) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""T*""", ""
End If
If (FiltrosNombreCompañía = 21) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[UÙÚÛÜ]*""", ""
End If
If (FiltrosNombreCompañía = 22) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""V*""", ""
End If
If (FiltrosNombreCompañía = 23) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""W*""", ""
End If
If (FiltrosNombreCompañía = 24) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""X*""", ""
End If
If (FiltrosNombreCompañía = 25) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[YÝÿ]*""", ""
End If
If (FiltrosNombreCompañía = 26) Then
DoCmd.ApplyFilter "", "[NombreCompañía] Like ""[ZÆØÅ]*""", ""
End If
If (FiltrosNombreCompañía = 27) Then
DoCmd.ShowAllRecords
End If
If (CurrentRecord > 0) Then
DoCmd.GoToControl "NombreCompañía"
Exit Sub
End If
If (CurrentRecord = 0) Then
Beep
MsgBox "No hay registros para esa letra.", vbInformation, "No Records Returned"
DoCmd.ShowAllRecords
FiltrosNombreCompañía = 27
End If

FiltrosNombreCompañía_AfterUpdate_Exit:
Exit Sub

FiltrosNombreCompañía_AfterUpdate_Err:
MsgBox Error$
Resume FiltrosNombreCompañía_AfterUpdate_Exit

End Sub

Si donde pone A, B, C, etc son etiquetas, también podrías, en el caso de A, en el evento Al hacer clic

Form.RecordSource = "select * from clientes where nombrecompañía like ""[AÀÁÂÃÄ]*"""

Respuesta
2

Sasha: Creo que éste ejemplo que tengo en Mediafire te servirá. El maquillaje es a gusto del artista.

http://www.mediafire.com/file/jqa07qtlf150pvr/FiltroAlfabetico.rar 

Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas