![]() |
Problemas lanzando el ejecutable desde tarea programada
Buenos días chicos,
Os traigo otro problemilla de estos raros que me pasan. Verán, tengo una aplicación que se puede ejecutar normal o lanzarla desde tarea programada para que lo haga todos los días a cierta hora. Lo tengo en muchos clientes y en todos funciona, salvo en uno, que de repente ha empezado a no funcionar a medias. Verán, cuando arranco yo el programa y lanzo el proceso desde un botón que tengo, funciona bien, pero cuando lo lanza la tarea programada, no funciona bien. El fallo principal, es que coge una fecha guardada en un .ini. Cuando lo lanzo desde el botón, coge bien esa fecha, pero cuando lo lanza la tarea programada, no me reconoce la fecha y me guarda la fecha mínima de sql. La tarea tira del mismo ejecutable y del mismo .ini, lo he comprobado. Para leer esta fecha hago lo siguiente:
Como os comento, esto me funciona en todos los clientes, incluso en este llevaba funcionando un año hasta que ha empezado a pasar esto. Dándole vueltas a alternativas, he probado a guardar la fecha como string y luego pasarla a fecha. De esta manera, el string me lo guarda bien, pero a la hora de pasarlo a Date, el programa se para. De nuevo es muy raro, porque si lo lanzo manualmente funciona, pero a través de la tarea programada, no funciona.
Se para en el guardado en fechadate, lo he comprobado guardando logs. Me tiene un poco loco esto. Se os ocurre algo? Muchas gracias |
Sin más datos parece que se debe a una actualización reciente de Windows, seguramente un tema de permisos.
|
Lo tengo puesto como administrador y ejecutar con los privilegios más altos.
Igualmente es que es muy raro, porque no funcionan cosas como strtoDate, que no entiendo en que puede influir que lance el proceso con un botón o con tarea programada. Estoy bastante perdido. En el botón le tengo puesto simplemente lanzar el procedimiento y en la tarea programada, lanzo el procedimiento que lo puse como parámetro dentro del ejecutable. :( |
¿El formato de fechas en ese equipo?
|
Esos errores que surgen de la noche a la mañana no suelen ser por nada de tu aplicación sino por el entorno en el que se ejecuta.
Revisa (solo por descartar) si la tarea se ejecuta correctamente en otro puesto que tenga el mismo sistema operativo y la misma actualización, la misma versión de tu programa, de tu base de datos, de fecha. Si yo te contara la de cosas extrañas que me han sucedido por actualizaciones: pdfs que ya no abre acrobat, impresoras que solo imprimen la primera hoja o que dejan de imprimir después de x veces, mensajes que quedan por detrás de otra ventana... |
Voy a revisar todo eso a ver, sobre todo lo del formato de fechas porque si que veo que cuando me coge la fecha base de sql que es 30/12/1899, me pone 12/30/1899, puede ir por ahí, pero no entiendo porqué entonces falla cuando lo lanzo de una manera y no falla de la otra.
Me edito: Nada, la fecha no parece ser, es un windows server 2008. No entiendo nada, es un simple StrtoDateTime que funciona al ejecutarlo de una forma y de la otra no. No se. Debe de ir por ahí porque si hago, al coger el dato del ini. ReadString, me lo lee bien, pero si hago un .ReadDateTime para guardarlo en un TDateTime, no lo coge bien. |
Os enseño más pruebas que estoy haciendo.
El .ini tiene lo siguiente: Cita:
He hecho que me escriba mensajes en un fichero. El código es:
Si lo lanzo arrancando el exe y dándole al botón que llama al procedimiento, me escribe esto en el fichero: Cita:
Cita:
|
Perdón, copié mal la primera cita de las 2 de abajo, las horas son 12:36:13, es decir, coge bien el dato ejecutándolo así.
|
Hace unos días tuve un inconveniente parecido con el consumo de un servicio.
Al hacerlo el consumo desde la sesión de usuario el formato de decimales era con coma ",". Pero al hacerse por medio de un tarea programada el formato de decimales era con punto ".". La solución fue copiar la misma configuración regional a todos los demás usuarios y cuentas del sistema. Aplicar la configuración regional y de idioma a cuentas reservadas ![]() |
Además de lo que comenta movorack, ¿Esto está bien o falta las comillas?
|
Hola chicos,
En cuanto pueda pruebo lo que comenta movorack y os digo. Respecto a lo otro, está bien, funciona sin comillas, si le pongo comillas da error porque no espera un string. Un saludo |
Cita:
Cita:
Si quieres pasar el valor de fecha por defecto con una cadena puedes convertir el string a date |
Hola de nuevo,
Acabo de probarlo y tienen todas la misma configuración. Aún así, por si acaso, lo he hecho pero nada, no funciona. Si lo paso asi
No pasa de ahí, pero ese no es el principal problema, porque esa es la fecha por defecto si no hubiera nada en el .ini, pero si que tiene datos, el problema es que no me está cogiendo bien esos datos como fecha cuando lo ejecuto desde tarea. En vista de que sí que me coge el dato del .ini como string, he probado a guardarlo en string y luego ese valor, guardarlo en otra variable TDateTime haciendo la conversión
Pero haciendo esto, el programa se para en la instrucción como si diera error. En el fichero solo guarda hasta el 2, al 3 no llega. Esto, al igual que antes, pasa si lo lanzo desde el programador de tareas, si lo lanzo desde el botón, funciona bien, pinta el 3. |
Cita:
-- Una prueba que puedes hacer es establecer el formato que debe manejar la función StrToDateTime enviándole el formato de fecha que tienes en el .ini por medio del parámetro AFormatSettings. |
Pues nada, parece que se ha arreglado solo. Estaba haciendo pruebas y nada pero en una de las veces que he reiniciado el equipo, y han sido muchas, de repente parece que ya va bien.
|
:confused::confused::confused::confused::confused::confused::eek:
|
Cita:
Ni idea. |
La franja horaria es GMT +2. Ahora son las 04:49:24. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi