Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   hacer una tarea programada (https://www.clubdelphi.com/foros/showthread.php?t=48037)

Patricio 13-09-2007 20:41:36

hacer una tarea programada
 
hola gente como andan, tengo una consulta, hay ciertas actividades que necesitaria que mi sistema hiciera una vez sola x cada dia. Tengo un sistema hecho en delphi 5, con interbase 6, pensaba en hacer una tabla con dos campos por ej, fecha y realizacion, entonces al iniciar alguien el sistema chequearia si en esta tabla esta cargada la fecha de hoy, en caso negativo quiere decir que las tareas programadas no se realizaron, entonces procederia a ejecutarlas y luego cargaria en dicha tabla la fecha de hoy con una indicacion en realizacion que se hizo. A alguien se le ocurre otra manera o que ventajas y desventajas puedo tener, en cuanto a lentitud, que pasaria si un puesto de trabajo tiene una fecha incorrecta (1 dia mas o...) y me hace tareas x adelantado.
Ya que estoy les hago otra pregunta:
Como se manejan ustedes en sistemas en red, de donde sacan la fecha y hora? de cada pc en particular o de una sola?
Saludos y espero se entienda

fer21unmsm 13-09-2007 21:01:01

Hola, la verdad no entendí mucho tu o tus primeras preguntas, pero en la última, sucede que en mi empresa tenemos todos los ordenadores sincronizados con un servidor central, y este servidor conversa con otro servidor en Miami, para lo de la diferencia horario, y ver el estado de la hora.

Si pudieras explicarte mejor ...

Bicho 13-09-2007 22:43:49

Hola,

has probado en:

Inicio => Todos los programas => Accesorios => Herramientas del sistema => Tareas programadas

La verdad es que nosotros lo usamos en el trabajo para este tipo de menesteres en distintos servidores (Windows XP y 2003 Server) y no tenemos problemas al respecto.

Saludos

Patricio 18-09-2007 19:54:58

me exprese mal...
 
bueno, antes q nada gracias x contestar, lo que quiero es q mi sistema haga 1 cjto de tareas 1 vez al dia, y para eso habia propuesto hacer una tabla en donde chequear cada vez q se abre el programa si se realizaron o no las tareas.
Habia propuesto en una tabla poner fecha/realizo, entonces cuando se abriria hoy el sistema chequearia si en esa tabla esta la fecha de hoy, y como no va a estar se ejecutarian las tareas esa vez, el resto de veces q los usuarios ingresen al sistema no va a ejecutar dichas tareas porque al tener en la tabla auxiliar la fecha de hoy cargada significa q se ejecutaron.

Quedaria comentarlo con ustedes para q me diga alguno como hace cosas similares, el problema es q si x algun motivo alguien cambia puede hacer cosas mal.....por ej, si alguien atrasa 1 semana, no va a ejecutar las tareas pq ese dia (hace 1 semana) ya se hicieron, y si adelanta la fecha va a hacer cosas mal en los calculos de ese conjunto de operaciones a realizar...
espero se entienda, SLDS

duilioisola 18-09-2007 20:32:36

Yo sacaría la fecha actual del servidor Interbase de esta manera:
Código SQL [-]
select 'NOW' from rdb$database
De esta manera me aseguro de que la fecha para comparar sea una sola (la del servidor IB), sin importar desde qué ordenador esté realizando la tarea.

Luego compararía esta fecha con la tabla que tienes y realizaría la tarea, si corresponde.

Si se realiza la tarea con éxito, haría un update poniendo realizó con esta fecha que he extraído del servidor IB anteriormente. (si pones la del ordenador, puede que sea erronea)

Espero que sea la respuesta a tu pregunta :)

duilioisola 18-09-2007 20:36:30

Si solo uno de todos los ordenadores de la red es el que hace la taréa, el update para marcar la tabla como realizado lo deberás hacer antes de realizarla.

Si realizas la tarea antes de marcar, puede darse el caso de que otro ordenador empiece a hacer la tarea al mismo tiempo.

duilioisola 18-09-2007 20:39:21

De todos modos, el servidor (que es el que tiene la base IB) debe tener la fecha y hora sincronizada.
Si es un XP o un server, donde cambias la hora, hay una solapa que se llama "Hora de Internet" y donde puedes marcar un check para que mantenga el ordenador sincronizado.


La franja horaria es GMT +2. Ahora son las 17:58:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi