Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Hartigan

#51
jejeje, el problema estaba en que el valor de la duración tenia que ser mayor que la del intervalo de repetición por eso me daba error. Lo he dejado así:

Código (csharp) [Seleccionar]


....

TaskSchedulerClass scheduler = new TaskSchedulerClass();
           scheduler.Connect(null, null, null, null);

           ITaskDefinition task = scheduler.NewTask(0);
           
           task.RegistrationInfo.Author = autor;
           task.RegistrationInfo.Description = descripcion;

           ITaskSettings settings = task.Settings;
           settings.Enabled = true;
           settings.Hidden = false;

           try
           {

               switch (recurrencia)
               {
                   case "horaria":

                       ITimeTrigger timeTrigger = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                       timeTrigger.Enabled = true;
                       timeTrigger.Id = nombre;

                       timeTrigger.StartBoundary = fecha.Substring(6, 4).ToString() + "-" + fecha.Substring(3, 2).ToString() + "-" + fecha.Substring(0, 2).ToString() +
                           "T" + hora;
                       if (fechaFin != string.Empty)
                       {
                           timeTrigger.EndBoundary = fechaFin.Substring(6, 4).ToString() + "-" + fechaFin.Substring(3, 2).ToString() + "-" + fechaFin.Substring(0, 2).ToString() +
                               "T" + horaFin;
                       }

                       if (checkBoxRepetir.Checked == true)
                       {
                           if (duracion != string.Empty)
                               timeTrigger.Repetition.Duration = duracion;
                           timeTrigger.Repetition.Interval = "PT" + repeticion.ToString() + "M";
                       }
                       break;

                   case "diaria":

                       IDailyTrigger dailyTrigger = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
                       dailyTrigger.Enabled = true;
                       dailyTrigger.Id = nombre;
                       dailyTrigger.StartBoundary = fecha.Substring(6, 4).ToString() + "-" + fecha.Substring(3, 2).ToString() + "-" + fecha.Substring(0, 2).ToString() +
                           "T" + hora;
                       if (fechaFin != string.Empty)
                       {
                           dailyTrigger.EndBoundary = fechaFin.Substring(6, 4).ToString() + "-" + fechaFin.Substring(3, 2).ToString() + "-" + fechaFin.Substring(0, 2).ToString() +
                               "T" + horaFin;
                       }
                       dailyTrigger.DaysInterval = Convert.ToInt16(textBoxDia.Text.ToString());

                       if (checkBoxRepetir.Checked == true)
                       {
                           if (duracion != string.Empty)
                               dailyTrigger.Repetition.Duration = duracion;
                           dailyTrigger.Repetition.Interval = "PT" + repeticion.ToString() + "M";
                       }

                       break;

.....
...



Espero que le sirva a alguien.

Salu2 ;)
#52
Bueno me respondo diciendo que ya me ha funcionado. ya programo tareas en mi agenda. xDD ;-)
#53
Cita de: ssccaann43 en  9 Septiembre 2010, 16:50 PM
Insertale un 0 ó un 1...! Y ya...!

Sí,, es lo que hice y me funcionó. xD
#54
HOla compis bueno pues os comento que al final he decidido programar yo mismo las tareas de mi agenda usando las clases del programador de tareas de windows. Entonces he conseguido ya programar algunas tareas pero no consigo establecer algunos parametros referentes al IRepetitionPattern y son el Duration y el INterval.

mi código:

Código (csharp) [Seleccionar]

TaskSchedulerClass scheduler = new TaskSchedulerClass();
           scheduler.Connect(null, null, null, null);

           ITaskDefinition task = scheduler.NewTask(0);
           
           task.RegistrationInfo.Author = autor;
           task.RegistrationInfo.Description = descripcion;

           ITaskSettings settings = task.Settings;
           settings.Enabled = true;
           settings.Hidden = false;
           
          switch(recurrencia)
           {
               case "horaria":
                   
                  ITimeTrigger trigger = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                  trigger.Enabled = true;
                  trigger.Id = nombre;
                 
                  trigger.StartBoundary = fecha.Substring(6, 4).ToString() + "-" + fecha.Substring(3, 2).ToString() + "-" + fecha.Substring(0, 2).ToString() +
                      "T" + hora;
                  if(fechaFin != string.Empty)
                  {
                      trigger.EndBoundary = fechaFin.Substring(6, 4).ToString() + "-" + fechaFin.Substring(3,2).ToString() + "-" + fechaFin.Substring(0, 2).ToString() +
                          "T" + horaFin;
                  }
                  break;

              case "diaria":
                  IDailyTrigger dailyTrigger = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
                  dailyTrigger.Enabled = true;
                  dailyTrigger.Id = nombre;
                  dailyTrigger.DaysInterval = Convert.ToInt16(textBoxDia.Text.ToString());
                  IRepetitionPattern rp = (IRepetitionPattern)dailyTrigger.Repetition;
                /*  if (checkBoxRepetir.Checked == true)
                  {
                      rp.Duration = TimeSpan.FromMinutes(int.Parse(this.textBoxDuracion.Text.ToString());
                      rp.Interval = TimeSpan.FromMinutes(60);
                     
                  }*/
                  dailyTrigger.StartBoundary = fecha.Substring(6, 4).ToString() + "-" + fecha.Substring(3, 2).ToString() + "-" + fecha.Substring(0, 2).ToString() +
                      "T" + hora;
                  if (fechaFin != string.Empty)
                  {
                      dailyTrigger.EndBoundary = fechaFin.Substring(6, 4).ToString() + "-" + fechaFin.Substring(3, 2).ToString() + "-" + fechaFin.Substring(0, 2).ToString() +
                          "T" + horaFin;
                  }
                 
                  break;
           }

           
           IShowMessageAction mensaje = (IShowMessageAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_SHOW_MESSAGE);
           mensaje.Id = "My mensaje";
           mensaje.Title = titulo;
           mensaje.MessageBody = mensaje.ToString();

           ITaskFolder root = scheduler.GetFolder("\\");
           IRegisteredTask regTask = root.RegisterTaskDefinition(nombre, task, (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_NONE, "");
         ...
....



Lo que está comentado es lo que no consigo hacer funcionar he visto algunos ejemplos y debería estar bien pero a mi no me funcoina porque me dice que no se puede convertir el tipo string en TimeSpan. Como podria hacerlo???

Salu2.
#55
Vale ya lo he solucionado. Basta con hacer un select de todas las filas y luego hacer un count. xDD

Salu2.
#56
Pues eso, como puedo hacer para seleccionar la última fila de la bdd???

me habian dicho que era select TOP 1 pero eso selecciona la primera, no la última...

gracias de antemano.
#57
Cita de: Novlucker en  7 Septiembre 2010, 23:31 PM
En sql server el tipo de dato bool es bit, así que por la manera en la que lo estas haciendo, inserta un 0 o un 1
Y por el bien de la humanidad, deja de usar esos arrays de datos :-(

Saludos

jajajajaja, esque me es más cómodo hacerlo así que pasar todos los valores uno por uno a las funciones... xDD

En cuanto a la pregunta, no se supne que si yo le paso un true o un false automaticamente lo entiende como 1 o 0 respectivamente???
#58
Pues eso, os parecerá una bobada pero he buscado y no he dado con la solución. Como leñe inserto un valor bool en sql server????

Yo tengo lo siguiente en c#:

Código (csharp) [Seleccionar]

sentenciaSql = "INSERT into avisos(loginUsuario,autor,nombre,descripcion,fecha,hora,accion,recurrencia,sonido) values('" + login + "','" + datos[0] + "','" + datos[1] + "','" +
                    datos[2] + "','" + datos[3] + "','" + datos[4] + "','" + datos[5] + "','" + datos[6] + "'," + valorBool + ")";
           


pero no me funciona...

Gracias de antemano.
#59
Cita de: [D4N93R] en  6 Septiembre 2010, 18:24 PM
Lo mejor es que lo hagas tú a mano, usa una base de datos, y cuando la aplicación arranque cargas todo en memoria, y chequeas cada cierto tiempo comparado con los valores y si ya se ejecutó esa alarma.

Un saludo.

sí, sería lo suyo pero el problema es la falta de tiempo....
#60
Cita de: [D4N93R] en  6 Septiembre 2010, 18:04 PM
Eso te hace todo, cual es la gracia entonces xD

Jajajaja pues que necesitaba algo así para programar mis alarmas porque no he sido capaz de hacerlo manualmente. De todos modos como digo no he conseguido que me funcione, las tareas no arrancan y no se porqué!!!! xDD