Imprimir página | Cerrar ventana

[Resuelto] Problema con tipo de datos en un filtro

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85651
Fecha de impresión: 26/Marzo/2026 a las 17:55


Tema: [Resuelto] Problema con tipo de datos en un filtro
Publicado por: zelarra
Asunto: [Resuelto] Problema con tipo de datos en un filtro
Fecha de publicación: 04/Diciembre/2020 a las 08:03
Buenos días.

Tengo un problema con un filtro que me está volviendo loco y no encuentro el error poque todo lo veo correcto. A ver si soy capaz de explicarlo bien:

Tengo un formulario continuo que filtro a través de dos desplegables vinculados: año y mes.

Os adjunto imágenes para que veáis cómo lo tengo montado.

El desplegable por el que filtro se basa en una consulta de unión. Para sacar el mes en texto, utilizo una función personalizada.

Y, después de actualizar el desplegable MesAñadido, lo que hago es llamar a la función para establecer el filtro y aplicarlo al formulario.

Os adjunto también una captura de un Debug.Print comparando con otro desplegable similar (Año y Mes leído), pero en el que el desplegable no está basado en una consulta de unión, sino en una consulta normal. Ahí podéis ver que, a simple vista, toman los mismos valores.

http://www.dropbox.com/s/39sxv8e542guxnt/ScreenShot001.jpg?dl=0https://www.dropbox.com/s/0mq5lmr6ps6f1z5/ScreenShot002.jpg?dl=0https://www.dropbox.com/s/1b13hbavo298dz9/ScreenShot003.jpg?dl=0https://www.dropbox.com/s/2bskmh37egrg3hh/ScreenShot004.jpg?dl=0https://www.dropbox.com/s/yf0sbiewv1w25i8/ScreenShot005.jpg?dl=0https://www.dropbox.com/s/mdt81o90jxe9h06/ScreenShot006.jpg?dl=0https://www.dropbox.com/s/hjygqp5new9uohg/ScreenShot007.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/39sxv8e542guxnt/ScreenShot001.jpg?dl=0
http://www.dropbox.com/s/0mq5lmr6ps6f1z5/ScreenShot002.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/0mq5lmr6ps6f1z5/ScreenShot002.jpg?dl=0
http://www.dropbox.com/s/1b13hbavo298dz9/ScreenShot003.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/1b13hbavo298dz9/ScreenShot003.jpg?dl=0
http://www.dropbox.com/s/2bskmh37egrg3hh/ScreenShot004.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/2bskmh37egrg3hh/ScreenShot004.jpg?dl=0
http://www.dropbox.com/s/yf0sbiewv1w25i8/ScreenShot005.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/yf0sbiewv1w25i8/ScreenShot005.jpg?dl=0
http://www.dropbox.com/s/mdt81o90jxe9h06/ScreenShot006.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/mdt81o90jxe9h06/ScreenShot006.jpg?dl=0
http://www.dropbox.com/s/hjygqp5new9uohg/ScreenShot007.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/hjygqp5new9uohg/ScreenShot007.jpg?dl=0

Aquí está el mensaje que me da:

http://www.dropbox.com/s/2sv7w2c2fc1m2qg/ScreenShot008.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/2sv7w2c2fc1m2qg/ScreenShot008.jpg?dl=0
http://www.dropbox.com/s/suuxce3suzeiwjn/ScreenShot009.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/suuxce3suzeiwjn/ScreenShot009.jpg?dl=0

Por favor, alguien que me ayude porque no veo el error.

Espero que la info aportada sea suficiente. Si necesitáis saber algo más, decidme, por favor.

Muchas gracias.



Respuestas:
Publicado por: xavi
Fecha de publicación: 04/Diciembre/2020 a las 09:02
Hola,

Me parece que el filter del AñoAñadido lo tienes delimitado con ' por lo que indicaría que el campo es un texto. ¿lo es?


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: zelarra
Fecha de publicación: 04/Diciembre/2020 a las 09:14
En problema creo que no es con el año, porque si filtro solo con el año no da error. Además de que en el otro desplegable similar funciona y es similar. He probado a poner el año como número y no funciona


Publicado por: zelarra
Fecha de publicación: 04/Diciembre/2020 a las 10:06
He probado con el año, y me sigue dando el error. El problema está en el mes

https://www.dropbox.com/s/wnk5ejendcaoc1m/ScreenShot010.jpg?dl=0


Publicado por: zelarra
Fecha de publicación: 04/Diciembre/2020 a las 11:36
Ya he detectado el error. En la consulta de origen del formulario, en el campo que utilizo para filtrar, daba un error, y claro, como que había dos tipos de datos.

Entonces, estoy intentando solucionarlo. Para ello, voy a crear una función personalizada, pero no soy capaz de jugar con las fechas. Estos son los datos:

http://www.dropbox.com/s/5d6s1zt3pv2ele1/ScreenShot011.jpg?dl=0" rel="nofollow - https://www.dropbox.com/s/5d6s1zt3pv2ele1/ScreenShot011.jpg?dl=0

Como veis, hay registros en que no hay fecha. Como hay dos fechas de añadido, quiero juntarlo en un solo campo con la siguiente función:

Function EscogerFechaAñadido(Estado As Integer, Comprar As Long, Pendiente As Long) As Date
    Select Case Estado
        Case 2
            EscogerFechaAñadido = Comprar
        Case 4
            EscogerFechaAñadido = Pendiente
        Case Else
                If Comprar < Pendiente Then
                    EscogerFechaAñadido = Comprar
                Else
                    EscogerFechaAñadido = Pendiente
                End If
    End Select
End Function

Esa es la lógica que tiene que seguir. Ahora bien, mi problema está con los tipos de variables: he probado con String, con Long, con Date, y no hay manera. También he probado a llamar a la función desde la consulta así:

EscogerFechaAñadido(Estado;Nz(Comprar;0);Nz(Pendiente;0))

Pero no salen bien los datos, además de que muestra un 0:0:0, cuando yo quiero que deje la celda vacía.

¿Alguien me puede ayudar?

Gracias.


Publicado por: zelarra
Fecha de publicación: 04/Diciembre/2020 a las 16:47
Ya lo he arreglado. La solución era esta:

Function EscogerFechaAñadido(Estado As Integer, Comprar As Date, Pendiente As Date) As Date
    Select Case Estado
        Case 2
            EscogerFechaAñadido = Comprar
        Case 4
            EscogerFechaAñadido = Pendiente
        Case Else
            If Comprar = 0 Then
                EscogerFechaAñadido = Pendiente
            ElseIf Pendiente = 0 Then
                EscogerFechaAñadido = Comprar
            Else
                If Comprar < Pendiente Then
                    EscogerFechaAñadido = Comprar
                Else
                        EscogerFechaAñadido = Pendiente
                End If
            End If
    End Select
End Function

Muchas gracias a todos.



Imprimir página | Cerrar ventana