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.
[RESUELTO] Manejador error fechas
[RESUELTO] Manejador error fechas
Ú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.
Re: Manejador error fechas
Hola,
Puedes probar preguntando si el valor es una fecha, si es una fecha devuelve true y si no false.
IsDate ("fecha")
Saludos
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)
Re: Manejador error fechas
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!
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
Libreoffice 6.4.2, en Windows 10
Re: Manejador error fechas
Gracias por vuestra rápida respuesta. Efectivamente, se ha resuelto con If IsDate por lo que puedo seguir adelante.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
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
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.