Programar Tareas

28/02/2006 - 02:55 por Mikes | Informe spam
Hola grupo, tengo una tabla en la que pretendo que el usuario registre una
hora de ejecución y la ruta del archivo a ejecutar ya sea un powerpoitn,
excel, video,etc y que por medio de una aplicación revise cada registro y
ejecute cada archivo en la hora registrada por el usuario. Alguien me puede
ayudar con esto. Gracias
 

Leer las respuestas

#1 Luis Miguel Blanco
02/03/2006 - 20:32 | Informe spam
Hola Mikes

Una posible solución a esta situación que planteas podría consistir en el
uso combinado en tu aplicación de los objetos Timer y Process.

Mediante un Timer ejecutarías, en un intervalo de tiempo determinado, un
bloque de código que sería el encargado de obtener la hora actual del
sistema, y buscar en la tabla de la base de datos, si existe un registro que
deba ejecutarse a dicha hora; cuando se diera dicha circunstancia,
utilizarías un objeto Process, para poner en ejecución el archivo (proceso
externo) obtenido de un campo del registro.

A continuación te acompaño un ejemplo de código basado en esta propuesta. En
primer lugar tendríamos la estructura de la tabla que guarde la hora y nombre
de archivo a ejecutar:

'///////////////////////////////////
CREATE TABLE [dbo].[CalendarioApp] (
[Hora] [varchar] (6) ,
[RutaApp] [varchar] (250)
) ON [PRIMARY]
GO
'///////////////////////////////////

Para simplificar, el campo Hora lo he declarado como varchar, de modo que la
hora a introducir sería por ejemplo una cadena con el valor 19:45.

Seguidamente tenemos el código del formulario. Como aspectos a puntualizar,
en el evento Load() declaramos e instanciamos el objeto Timer, y asociamos el
evento Tick de este objeto a un método que actuará como manipulador de dicho
evento, que será ejecutado en el intervalo prefijado para el temporizador.
Podríamos haber declarado el objeto Timer a nivel de clase usando la palabra
clave WithEvents, de forma que no habríamos necesitado entonces asociar el
manipulador de evento usando la instrucción AddHandler.

En este caso hemos fijado que el temporizador se ejecute cada minuto, lo que
provocará la ejecución del método TempoTick(), que a su vez llamará al método
EjecutarApp(), este último se encargará de crear una consulta contra la tabla
de la base de datos, y en el caso de que exista un registro cuyo campo Hora
coincida con la hora actual, obtendrá el valor del campo RutaApp, que pasará
como parámetro al objeto Process.Start(), lo que provocará la ejecución de la
aplicación asociada al archivo.

'///////////////////////////////////
Imports System.Data.SqlClient

Public Class Form1
Inherits System.Windows.Forms.Form
'
'
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim oTemporizador As Timer = New Timer
AddHandler oTemporizador.Tick, AddressOf TempoTick
oTemporizador.Interval = 60000
oTemporizador.Start()
End Sub

Private Sub TempoTick(ByVal sender As Object, ByVal e As System.EventArgs)
Me.EjecutarApp()
End Sub

Private Sub EjecutarApp()
Dim oConexion As SqlConnection = New SqlConnection
oConexion.ConnectionString = "Server=localhost;" & _
"Database=Aplicaciones;uid=sa;pwd=;"

Dim sSQL As String
sSQL = "SELECT * FROM CalendarioApp WHERE Hora = '" &
DateTime.Now.ToString("H:mm") & "'"

Dim cmdDatosApp As SqlCommand = New SqlCommand(sSQL, oConexion)

Dim drDatosApp As SqlDataReader
oConexion.Open()
drDatosApp = cmdDatosApp.ExecuteReader()

Dim sAppEjecutar As String = String.Empty
If drDatosApp.Read() Then
sAppEjecutar = drDatosApp("RutaApp")
End If
drDatosApp.Close()
oConexion.Close()

If sAppEjecutar.Length > 0 Then
Process.Start(sAppEjecutar)
End If
End Sub
End Class
'///////////////////////////////////

Bien, pues esto sería todo. Espero que te sea de ayuda para lo que necesitas.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Mikes" wrote:

Hola grupo, tengo una tabla en la que pretendo que el usuario registre una
hora de ejecución y la ruta del archivo a ejecutar ya sea un powerpoitn,
excel, video,etc y que por medio de una aplicación revise cada registro y
ejecute cada archivo en la hora registrada por el usuario. Alguien me puede
ayudar con esto. Gracias

Preguntas similares