Verificar no banco apenas 1 vez com OnTimer
Olá, eu tenho uma rotina na minha agenda de eventos que estou criado que verifica no meu manco MySQL se a data de inicio do meu evento estiver próxima do horário, 30 min antes ela ira me exibir uma mensagem porém neste periodo de 30 min ela não para de me enviar a mensagem, alguem sabe com fazer esta rotina verificar apenas uma vez só?
Obs: Banco MySQL, Componente Zeos, e Delphi7
Obs: Banco MySQL, Componente Zeos, e Delphi7
procedure TFrmAgenda.Timer1Timer(Sender: TObject);
var
query: TZQuery;
begin
try
query := TZQuery.Create(nil);//oncreate
query.Connection := DM_Agenda.db_Agenda;//oncreate
query.SQL.Add('SELECT codigo_compromisso as compromisso FROM compromisso WHERE data_inicio_compromisso'+
' = :PDataInicio AND hora_inicio_compromisso < :PHoraFim2 AND hora_fim_compromisso > :PHoraFim1');
query.ParamByName('PDataInicio').AsString := FormatDateTime ('yyyy/mm/dd', Now);
query.ParamByName('PHoraFim1').AsString := FormatDateTime ('HH:mm:ss', Now);
query.ParamByName('PHoraFim2').AsString := FormatDateTime ('HH:mm:ss',(IncMinute(now, 30)));
query.Open;
if (query.FieldByName('compromisso').AsString <> '') then
ShowMessage ('Evento proximo de começar: ' + query.FieldByName('compromisso').AsString);
finally
FreeAndNil(query);
end;
end;
Lucas Mees
Curtidas 0
Respostas
Jocelio Silva
28/06/2014
Tente desligar o timer após o procedimento.
GOSTEI 0
Itamar Souza
28/06/2014
Boa tarde
Você pode tentar fechar o time logo após a mensagem. Só que ele pode não mais retornar a chama a mensagem, faz um teste.
Você pode tentar fechar o time logo após a mensagem. Só que ele pode não mais retornar a chama a mensagem, faz um teste.
procedure TForm1.ConsultaEvento;
begin
//seu código aqui
// if (query.FieldByName('compromisso').AsString <> '') then
// ShowMessage ('Evento proximo de começar: ' + query.FieldByName('compromisso').AsString);
Timer1.Enabled :=false;
// finally
// FreeAndNil(query);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//consulta evento
ConsultaEvento;
end;
GOSTEI 0