Usuário com melhor resposta
executar somente uma vez por dia

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
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- Sugerido como Resposta RicardoAlves quinta-feira, 5 de agosto de 2010 12:33
- Marcado como Resposta Harley AraujoModerator sexta-feira, 6 de agosto de 2010 00:10
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 -
@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! -
-
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- Sugerido como Resposta RicardoAlves quinta-feira, 5 de agosto de 2010 12:33
- Marcado como Resposta Harley AraujoModerator sexta-feira, 6 de agosto de 2010 00:10