none
executar somente uma vez por dia RRS feed

  • Pergunta

  • boa noite a todos, queria saber como posso executar um form somente uma vez por dia?

    ja fiz um select no meu bd, para ver se tem algum conteudo,porem ele da erro pq ele retorna null quando nao tem nada na tabela referente ao dia.


    Aprendendo e evoluindo
    quarta-feira, 4 de agosto de 2010 02:25

Respostas

  • Thiago,

     

    Segue uma solução sem que você precise utilizar o banco de dados...

     

    Crie um arquivo xml com este conteúdo:

    <configuration>
     <dataUltimaExecucao>01/01/1900</dataUltimaExecucao>
    </configuration>
    

     

    E no load da sua aplicação, antes de qualquer regra, coloque a seguinte regra:

          //coloque o caminho do xml
          string caminhoXml = @"C:\configFile.xml";
    
          XmlDocument xml = new XmlDocument();
          xml.Load(caminhoXml);
    
          //se a data armazenada é igual for menor que a data atual
          if (Convert.ToDateTime(xml.DocumentElement.GetElementsByTagName("dataUltimaExecucao").Item(0).InnerText) < DateTime.Now.Date)
          {
            //salva a data atual e prossegue a execução do Load
            xml.DocumentElement.GetElementsByTagName("dataUltimaExecucao").Item(0).InnerText = DateTime.Now.ToString("dd/MM/yyyy");
            xml.Save(caminhoXml);
          }
          else
          {
            MessageBox.Show("A aplicação já foi executada hoje!");
    
            //se a data armazenada for igual ou maior que a data atual
            //fecha a aplicação
          }
    

     

    Desta forma sua aplicação só será executada uma unica vez no dia...

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me
    quinta-feira, 5 de agosto de 2010 01:48

Todas as Respostas

  • Thiago,

    bom dia,

    Não entendi muito bem o seu problema... você disse que faz um select que retorna null? Como assim?

    O tratamento de abrir o Form somente uma vez que você quer fazer depende do retorno deste sql?

    At.,


    Rogério de Resende Ohashi blog.ohashi.com.br
    quarta-feira, 4 de agosto de 2010 09:12
  • @Thiago

    Para voce executar um form apenas por dia tens de usar data. Este data vai ser comparada com a data e hora. Primeiro o que tens de fazer e vereficar a data e se a data for igual a data actual(Now) entao seguinifca que este form ja foi aberto Hoje.

    Entao vais retornar uma messangem a dizer que o form ja foi aberto. Se a data for < Menor do que data de hoje seguinifica dizer que o form ainda nao foi aberto Hoje. Entao voce abre o form.

    Quando voce fechar o form, entao no envento_close do form, escreve o codigo que grava a data actual no campo data na tua database. Assim se o usuario tentar abrir pela segunda Vez, o codigo que compara a data vai funcionar e dizer que este form ja foi aberto hoje: Na mensagem podes mostrar a hora em que foi aberto.

    Que tipo de erro; podes colocar aqui o erro!

    Se definiste os campos da tua tabela de preenchimento obrigatorio entao e natural que este erro aconteca quando se tenta gravar informacao na tabela sem os dados de todos os campos.

    Pela sua pergunta, eu acho que a existencia de dados na tabela depende do dia anterior. Nao do actual dia(now).

    Estas a fazer procura em campos Datas?

     


    Just Be Humble Malange!
    quarta-feira, 4 de agosto de 2010 13:00
    Moderador
  • porem não queria modificar meu bd, porem se for eu mudo e dou um feddback aki

     

    falou e obrigado


    Aprendendo e evoluindo
    quarta-feira, 4 de agosto de 2010 16:52
  • Thiago,

     

    Segue uma solução sem que você precise utilizar o banco de dados...

     

    Crie um arquivo xml com este conteúdo:

    <configuration>
     <dataUltimaExecucao>01/01/1900</dataUltimaExecucao>
    </configuration>
    

     

    E no load da sua aplicação, antes de qualquer regra, coloque a seguinte regra:

          //coloque o caminho do xml
          string caminhoXml = @"C:\configFile.xml";
    
          XmlDocument xml = new XmlDocument();
          xml.Load(caminhoXml);
    
          //se a data armazenada é igual for menor que a data atual
          if (Convert.ToDateTime(xml.DocumentElement.GetElementsByTagName("dataUltimaExecucao").Item(0).InnerText) < DateTime.Now.Date)
          {
            //salva a data atual e prossegue a execução do Load
            xml.DocumentElement.GetElementsByTagName("dataUltimaExecucao").Item(0).InnerText = DateTime.Now.ToString("dd/MM/yyyy");
            xml.Save(caminhoXml);
          }
          else
          {
            MessageBox.Show("A aplicação já foi executada hoje!");
    
            //se a data armazenada for igual ou maior que a data atual
            //fecha a aplicação
          }
    

     

    Desta forma sua aplicação só será executada uma unica vez no dia...

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me
    quinta-feira, 5 de agosto de 2010 01:48