** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - [Resuelto] Problema con tipo de datos en un filtro
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerrado[Resuelto] Problema con tipo de datos en un filtro

 Responder Responder
Autor
Mensaje
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Tema: [Resuelto] Problema con tipo de datos en un filtro
    Enviado: 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.


Aquí está el mensaje que me da:


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.


Editado por zelarra - 04/Diciembre/2020 a las 16:48
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 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
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 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
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 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:


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.
Arriba
zelarra Ver desplegable
Habitual
Habitual


Unido: 21/Octubre/2020
Localización: España
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 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.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable