PDA

Ver la Versión Completa : hacer una tarea programada


Patricio
13-09-2007, 20:41:36
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
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:

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.