[RESUELTO] Buscar solo Mes y Año en campo fecha

Discute sobre las herramientas de la base de datos
Responder
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

[RESUELTO] Buscar solo Mes y Año en campo fecha

Mensaje por Edu9 »

Me cuesta trabajo comprender como funciona base con las fechas.
Necesito encontrar fichas donde solo el mes y el año corresponda a lo que busco.
La siguiente macro funciona muy bien con DD/MM/AAAA pero si trato de quitar -DD de la macro me da error.
¿Alguna idea como modificar esta macro?

Código: Seleccionar todo

Sub BotonFiltroFecha(Event As Object)
	Dim Form As Object
	Form=Event.Source.Model.Parent
	Form.Filter="(""FECHA-BAJA"" = {D '"& Format(InputBox("Introduzca la fecha","BUSCAR POR FECHA",""),"YYYY-MM-DD") & "' } )"
	Form.ApplyFilter=True
	Form.Reload
End Sub
Muchas gracias por adelantado, no hace falta que diga que he estado buscando en el FORUM y fuera de él y no he encontrado lo que quería.
Última edición por Edu9 el Vie Abr 05, 2019 4:36 am, editado 1 vez en total.
LibreOffice 7.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Buscar solo Mes y Año en campo fecha

Mensaje por RMG »

Hola,

Prueba esto.

Código: Seleccionar todo

Sub BotonFiltroFecha(Event As Object)
   Dim Form As Object
   Form=Event.Source.Model.Parent
   fecha = InputBox("Introduzca la fecha","BUSCAR POR FECHA","")
   mes = Format(fecha,"MM")
   anyo = Format(fecha,"YYYY")
   Form.Filter="Year(""FECHA-BAJA"") = '"& anyo &"' and  Month(""FECHA-BAJA"") = '"& mes &"'"
   Form.ApplyFilter=True
   Form.Reload
End Sub
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Edu9 »

Muchas gracias RMG por tu rápida respuesta.
La macro no funciona me da un error :
"LibreOffice Base _
No se pudo actualizar el contenido de los datos
Wrong data type: java.lang.NumberFormatException: For input
string: "03/2019" in statement [SELECT * FROM "PRUEBAMERG2"
WHERE YEAR( "FECHA-BAJA" ) ='03/2019' AND MONTH( "FECHA-
BAJA" ) ='03/2019']
"
Yo he tratado de hacer un slicing en fecha pero no lo he conseguido porque creo que el campo fecha está tratado de forma única.
Otro de los caminos que traté de seguir fué el convertir el campo date en texto y de ahí cortar lo que necesito pero tampoco me ha funcionado.
Lo que voy buscando es encontrar en mi fichero de socios aquellos que en un mes determinado se han dado de alta y los que se han dado de baja.
De todas formas sigo intentándolo.
Si a alguien se le ocurre una idea, bienvenida sea. Gracias a todos
LibreOffice 7.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Buscar solo Mes y Año en campo fecha

Mensaje por RMG »

Hola

Cuando te pide la fecha, debes poner una fecha normal con cualquier día del mes, lo haces así?.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Edu9 »

Hola RMG, la fecha la meto de todas las maneras posibles y en ninguna me da resultado positivo.
03/2019,03-2019,032019,2019/03,2019-03,201903 etc etc todas las ideas que se me ocurren y siempre con el mismo resultado.Desactivé una linea y probé solo con año o con fecha y tampoco me funcionó.
En el primer mensaje te digo que no entiendo muy bien como trabaja Base con las fechas pues con un texto normal o con números todo funciona perfectamente.
Trabajo con L.O. 6.0 sobre W7
Muchas gracias.
LibreOffice 7.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Buscar solo Mes y Año en campo fecha

Mensaje por RMG »

Hola,

Según muestras no pones la fecha completa como te digo arriba, solo pones mes y año. Ejemplo a poner 1/3/2017 o 01/03/17 etc, pero poniendo siempre cualquier día del mes que quieres filtrar.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Edu9 »

Hola RMG, también probé con la fecha entera y me sigue dando error. Por si me había equivocado he vuelto a probar y sigue dando error.
Estoy probando con esta macro de Mauricio que describe en su tutorial para obtener el RFC y creo que podría hacer lo que deseo.
Fué al ver la tuya y que no me funcionaba cuando pensé en esta macro.
Muchas gracias

Código: Seleccionar todo

Sub ObtenerBaj()
Dim dFechaBaja As Date
Dim Baj As String
	dFechaBaja = CDate( InputBox( "Ahora tu fecha de nacimiento", "Fecha" ))
	Baj =Format(Month(dFechaBaja),"00" ) & "/" & Right(CStr(Year(dFechaBaja)),4)
	MsgBox Baj
End Sub
Dejo el tema abierto para colgar la solución.
Otra vez muchas gracias.
LibreOffice 7.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Buscar solo Mes y Año en campo fecha

Mensaje por RMG »

Hola,

Puedes adjuntar un pequeño ejemplo donde poder ver el error?.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Longi »

Buenas!

La solución que aporto tiene su pequeña complicación, y es que cambio el tipo de origen del formulario poniéndole un SQL, y digo complicación ya que hay que tener en cuenta el origen del formulario actual, es decir, si viene de una tabla única o de una consulta de varias tablas (en este caso podemos hacer lo mismo, pero además podríamos hacer un command de la consulta de origen).
He puesto de tal modo que hay que meter el mes en formato numérico (01, 02,03....) pero se podrían hacer variaciones para otros formatos, incluso en un cuadro de diálogo se podría poner para escoger.
En el caso de que no se asigne ningún mes o ningún año, todo queda como en el segundo SQL, que se supone que sería el formato inicial del formulario (en este caso es un SQL sobre el total de la tabla).

Ya contareis!

Código: Seleccionar todo

Sub BotonFiltroFecha(Event As Object)

   form= Event.Source.Model.Parent
   Mes= InputBox("Por favor, Introduzca el mes")
   ano= InputBox("Ahora el año, si es tan amable")
   If mes<>"" and ano<>""Then
   Form.CommandType = 2                                                                   ' El origen de los datos es una orden SQL
   Form.Command="SELECT * From ""TRANSPORTISTAS2"" ""TRANSPORTISTAS2"" WHERE Month(""Alta"")='"& Mes &"' And Year(""Alta"")='"& Ano &"'"
   Form.Reload
   Else
   Form.CommandType = 2                                                                   ' El origen de los datos es una orden SQL
   Form.Command= "SELECT * From ""TRANSPORTISTAS2"" ""TRANSPORTISTAS2"""
   Form.Reload
   End if
   
End sub
Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Edu9 »

Hola RMG
Te mando un ejemplo de la base de datos.
Si pongo la fecha entera va bien pero yo necesito solo mes y año y en cuanto le meto mes y año me da error.
Un saludo y muchas gracias por tu idea.
Adjuntos
Base de datos nueva1.rar
(11.45 KiB) Descargado 277 veces
LibreOffice 7.2 en Windows 7
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Edu9 »

Hola Longi
Probaré tu idea y te cuento.
Muchas gracias por tu idea
LibreOffice 7.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Buscar solo Mes y Año en campo fecha

Mensaje por RMG »

Hola,

Si no quieres poner el día esta es otra idea, pero no se porque el no querer poner un día cualquiera.

Saludos
Adjuntos
Base de datos nueva2.zip
(11.14 KiB) Descargado 287 veces
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Edu9 »

Hola RMG
Quizás no me he explicado bien, y ante todo créeme que agradezco inmensamente la ayuda que me aportas porque ya hace un tiempo atrás me ayudaste en otro problema del fichero. Sé que vuestro tiempo es oro para nosotros los novatos ante tantas consultas que atendeis. Lo que deseo hacer es obtener un listado de las altas, de un campo fecha-entrada, y de bajas, de otro campo fecha-baja, de aquellos socios que han causado alta o baja en el fichero, pero solo necesito listarlos por el mes y el año, el día no me interesa.Llevo dos días que no he podido hacer nada pero en cuanto pueda me lanzo a aplicar vuestras soluciones.
Muchas gracias otra vez
LibreOffice 7.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Buscar solo Mes y Año en campo fecha

Mensaje por RMG »

Hola,

Ya entendí que el día no es necesario para filtrar tus datos, pero si es necesario para obtener el mes y el año con solo 1 inputbox, si no lo quieres poner debes poner 2 in putbox según te dice Longi.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Longi »

Buenas otra vez!
Si se trata de poner un solo inputBox, no hay problema, se pone uno solo, pero tener en cuenta que el origen del formulario será mejor que sea un SQL si se quiere aplicar esta solución, aunque también valdría una consulta, con una pequeña variación.
También decir que hice la chapuza de repetir el cuadro de diálogo para dejar las cosas como estaban, pero lo suyo, como hizo RMG, es el poner otro botón para rectificar, o bien poner una macro que rectifique al cargar el formulario, de tal manera que cuando lo vuelves a abrir ya se ha ido el filtro.
Pero bueno, eso son cosas a gusto del consumidor...
Dejo aquí una pequeña variante del código que ya propuse, con un solo inputbox, aunque la última opción de Ramón me parece más ordenada que la mía (como todo lo que suele hacer), aunque cuando se maneja un número considerable de registros no me gusta usar herramientas directas de formulario, sino más bien el SQL que es enórmemente más rápido y eficaz.

Código: Seleccionar todo

Sub BotonFiltroFecha(Event As Object)

   form= Event.Source.Model.Parent
   Dato= InputBox("Por favor, Introduzca el mes y el año en el formato MM/YYYY")
   If Dato<>"" and len(Dato)=7 and left(Right(Dato,5),1)="/"Then
   Mes= left(Dato,2)
   ano= right(Dato,4)
   Form.CommandType = 2                                                                   ' El origen de los datos es una orden SQL
   Form.Command="SELECT * From ""TRANSPORTISTAS2"" ""TRANSPORTISTAS2"" WHERE Month(""Alta"")='"& Mes &"' And Year(""Alta"")='"& Ano &"' ORDER BY MONTH( ""Alta"" ) ASC"
   Form.Reload
   Else
   Form.Command= "SELECT * From ""TRANSPORTISTAS2"" ""TRANSPORTISTAS2"""
   Form.Reload
   End if
   
End sub
Otro saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Longi »

También tener en cuenta que se puede hacer otro formulario basado en. Consulta con parámetros
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Buscar solo Mes y Año en campo fecha

Mensaje por Edu9 »

Muchas gracias a RMG y Longi por vuestras soluciones, al final he optado por una consulta con parámetros lo que me da más capacidad de filtrado aunque sea un poco mas manual.
En breve os pediré ayuda para enviar esta consulta a impresora a través de un informe.
Muchas gracias otra vez por todo el tiempo que nos dedicais
LibreOffice 7.2 en Windows 7
Responder