[RESUELTO] Manejador error fechas

Discute sobre las herramientas de la base de datos
Responder
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

[RESUELTO] Manejador error fechas

Mensaje por pmartimor »

Buenos días:
Tengo un formulario con cajas de texto. Algunas de ellas es para introducción de fechas, que luego son tratadas en una macro al pulsar un botón.
Cuando la fecha eserrónea, LibreOffice lanza un mensaje de error; acepto pero no recupero la funcionalidad del formulario, es decir, dejan de hacer su función los botones (no entran en la macro).

https://1drv.ms/u/s!AunCKwQ5K6u4h0QjENyRVF5-zWed

He probado con 'on error goto...' para crear un manejador de errores, pero parece no dar resultado en este caso.
Saludos y gracias.
Última edición por pmartimor el Mar Mar 27, 2018 9:29 pm, editado 3 veces en total.
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Manejador error fechas

Mensaje por RMG »

Hola,

Puedes probar preguntando si el valor es una fecha, si es una fecha devuelve true y si no false.

IsDate ("fecha")

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: Manejador error fechas

Mensaje por Longi »

Hablando por no estar callado.....!
No estoy seguro de cual es el problema, pero me llama la atención del uso de un formulario con origen en un SQL vacío (frmInicio), que será lo más normal del mundo, pero a mi me resulta complicado.
Al tener dos campos de fecha, pero sin origen de datos, es posible (y recalco lo de que es posible) que el tratamiento que haga finalmente el sistema es el de un texto, y no el de una fecha (internamente el sistema funciona con fecha americana (aaaa,dd,mm), por lo que habría que hacer una modificación (CDate, o algo bastante más complejo) a lo que recoge de los campos de fecha, para terminar añadiéndolo a las tablas con el formato adecuado.
De todos modos esto es pura especulación. Habría que verlo en detalle, hasta ver hasta qué punto meto la pata.

Un saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

Re: Manejador error fechas

Mensaje por pmartimor »

RMG escribió:Hola,
Puedes probar preguntando si el valor es una fecha, si es una fecha devuelve true y si no false.
IsDate ("fecha")
Saludos
Gracias por vuestra rápida respuesta. Efectivamente, se ha resuelto con If IsDate por lo que puedo seguir adelante.
La macro ha quedado de la siguiente forma:

Código: Seleccionar todo

REM ************ INFORME BAJAS ENTRE FECHAS ***************************************************
Sub InformeBajasEntreFechas (Evento)
 Dim oConsulta As Object
 Dim Form as Object
 Dim sSQL As String
 Dim Inicio As String
 Dim Fin As String
 Form = Evento.Source.Model.Parent
 Inicio = Form.inicio.Text
 Fin = Form.fin.Text
 If IsDate(Inicio) AND IsDate(Fin) Then
 sSQL = "SELECT datosninos.*, CASEWHEN( IDNINOS >= 0, '"& Inicio &"', ' ' ) AS Inicio, CASEWHEN( IDNINOS >= 0, '"& Fin &"', ' ' ) AS Fin FROM datosninos"&_
 " WHERE FECHA_BAJA >= '" & Format(Form.inicio.Text,"YYYY-MM-DD") & "' AND FECHA_BAJA <= '" & Format(Form.fin.Text,"YYYY-MM-DD") & "'"
 oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("conBajasEntreFechas")
 oConsulta.Command = sSQL
 ThisDatabaseDocument.ReportDocuments.GetByName("infBajasEntreFechas").Open
 Else
 msgbox ("Fecha de Inicio o Fin inválida")
End If
End Sub
No obstante, seguiré investigando, para una versión posterior, en lo del manejador de errores, ya que esto haría que identificando los posibles errores mediante un número de error se pudiese centralizar la gestión de errores con llamadas a una función o sub.
En cuanto a las indicaciones de Longi, pues sí, realmente las cajas de texto o controles de fecha los he puesto en el formulario frmBajasEntreFechas, en vez del inicio, pues en dicho formulario -que sí está basado en una consulta- puedo primero filtrar con una llamada a una macro y ver los resultados y si lo deseo mostrar el informe.
No obstante, sigo con el problema de la aplicación de esta SQL ya que tengo los datos en una base MySQL y CASEWHEN lanza error, pero esto viene en el otro hilo que he tenido que reabrir, pues al utilizar la forma CASE ... WHEN... END de MySQL no se vuelcan los campos de fecha inicio y fin en el informe. Doy este hilo por cerrado y reabro el otro https://forum.openoffice.org/es/forum/v ... 31&t=13586, dándoos las gracias de nuevo por mantener este foro.
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
Responder