VBA Access: Filtro que funciona a medias

Este código, por algún motivo, solamente funciona con 'Autor', pero no arroja resultados con 'COAUTOR', considerando que ambos son iguales. Ya he probado de mil formas y no logro encontrar el error:

Private Sub ACTIVA_FILTRO()
On Error GoTo ERRH
    miFiltro = ""
    X = M_AUTOR.Value
    Select Case X
    Case 1
        miFiltro = "[AUTOR] = '" & Me.txtFiltro.Value & "'"
    Case 2
        miFiltro = "[COAUTOR] = '" & txtFiltro & "'"
    End Select
    MsgBox "Caso: " & X & vbLf & miFiltro
    Me.Filter = miFiltro
    Me.FilterOn = True
    Call INFORMA
ERRH:
    If Err.Number = 3075 Or Err.Number = 0 Or Err.Number = 94 Then
    Else
        ENTORNOERR = "Form_" & Me.Name & ".ACTIVA_FILTRO"
        Mensajes.ERR_GENERAL_BY_N
    End If
End Sub

Ya he probado usar un IF en vez de Select Case, pero eso no es (aunque no esperaba lo contrario). Probé quitar las comillas simples (') pero el resultado no cambió. El MsgBox es para controlar los valores en que se basan los resultados y dan bien pues el origen y el filtro dan valores correctos.

1 Respuesta

Respuesta
2

Sasha: Supongo que ya te habrás asegurado con el nombre de Campo y que es así.

Afinando un poco, si realmente los dos campos son texto. Mira el formato del TExtBox txtFiltro, que no tenga otro tipo de format. Ha de estar en Blanco. Y por ultimo, si todo lo anterior es así y el txtFiltro es un cuadro de texto y no es un Combo, yo pondría en ambos casos:

= '" & Me.txtfiltro.Text & "'"

o Simplemente

= '" & Me.txtfiltro & "'" pero con el Me.

Saludos >> Jacinto

Gracias por la respuesta. En ambos casos es el mismo combobox. La diferencia es de dónde se obtienen los valores de la lista (necesito buscar con valores exactos).

Para Autores:

Me.txtFiltro.RowSource = "SELECT AUTOR FROM AUTOR"

Para CoAutores:

Me.txtFiltro.RowSource = "SELECT * FROM ConsultaCoAutores"

La consulta 'ConsultaCoAutores' tuve que crearla porque no lograba que la lista arrojara valores únicos pues no sé cómo obtenerlos. Si sabes cómo hacerlo, agradecería cualquier ayuda.
Ahora, probé tus sugerencias y sigo sin obtener resultados para COAUTOR.

Como puedes ver, si filtro por autor salen los libros correctos (y verás que hay 3 con coautores).
Selcciono el filtro del Co-Autor, en la lista aparecen los valores correctos pero al filtrar por el coautor, no arroja los libros.

Sasha: De acuerdo a como veo tu montaje, el Row Source de Coautores lo haría así.

Me.txtFiltro.rowSource = "SELEC TDISTICNT CoAutor FROM Autor GROUP BY CoAutor ORDER BY CoAutor;"

Tal como lo tienes en :

miFiltro = "[COAUTOR] = '" & txtFiltro & "'"

Deberias de ponerle la Columna, siendo la primera el Cero

Ejemplo:

miFiltro = "[COAUTOR] = '" & txtFiltro.Column(x) "'"

Si CoAutor en la Consulta está en la 6ª Columna x = 5

Un saludo >> Jacinto

Sasha: Hay un error de imprenta en lo que te he enviado;

SELEC TDISTICNT debe er SELECT DISTINCT

Saludos >> Jacinto

¡Gracias!
¡He probado eso que me añades para el SELECT y ha funcionado! Además, rediseñé el formulario de otra manera y quizá ayudó eso también. ¡Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas