Ir para conteúdo
Fórum Script Brasil
  • 0

Trabalhando com datas


João Paulo Taraciuk

Pergunta

Boa tarde a todos, estou trabalhando em uma agenda, onde coloquei uma função que faz a leitura do banco de dados de 5 em 5 minutos para verificar se tem algum compromisso nos próximos cinco minutos e mostra um form e um Beep, estou encontrando dificuldades na hora de fazer comparar a data do banco com a data atual, estou utilizando a seguinte função

function Tfrm_principal.lendobanco: Boolean;

var

dia : TDate;

begin

dia:=Date;

DM_agenda.ZQry_consulta.Active:=False;

DM_agenda.ZQry_consulta.SQL.Clear;

DM_agenda.ZQry_consulta.SQL.Add('select * from cadastro_eventos where data =:date');

DM_agenda.ZQry_consulta.ParamByName('date').Value:=dia;

DM_agenda.ZQry_consulta.Active:= True;

ShowMessage(IntToStr(DM_agenda.ZQry_consulta.RecordCount));

então, se eu coloco desta maneira, como está, não retorna valor nenhum, agora se eu coloco na linha

DM_agenda.ZQry_consulta.ParamByName('date').Value:=Edit1.text;

e insiro uma data desta maneira 2007/12/20 no edit, ele retorna exatamente o número de eventos cadastrados para esta data, aí eu pensei, se tivesse como mudar o formato da data que será recebida pela variável, por que ela é inserida em um MaskEdit, __/__/_____

E também gostaria de saber como faço uma função para subtrair da hora normal 5 minutos, tentei esta função mas não deu certo, retorna 01/12/188/99 , neste sistema, mas em um outro ela funciona perfeitamente, alguém saba me dizer por quê?

var

Hora : TTime;

Hora := IncMinute(Hora, 5);

Se alguém puder me ajudar eu agradeço, valeu

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
então, se eu coloco desta maneira, como está, não retorna valor nenhum, agora se eu coloco na linha

DM_agenda.ZQry_consulta.ParamByName('date').Value:=Edit1.text;

e insiro uma data desta maneira 2007/12/20 no edit, ele retorna exatamente o número de eventos cadastrados para esta data, aí eu pensei, se tivesse como mudar o formato da data que será recebida pela variável, por que ela é inserida em um MaskEdit, __/__/_____

João, primeiro, você não precisa da variável dia para o uso que você faz dela - pode atribuir direto Date.

Segundo, experimente passar o parâmetro indicando seu tipo (algo que vivo pregando por aqui):

DM_agenda.ZQry_consulta.ParamByName('date').AsDate := Date;

isto deverá resolver esta questão de não funcionar com um campo TDataTime, mas funcionar com uma data String corretamente formatada.

Mas, uma informação se faz importante: Como está declarado o tipo de dados para Data em seu banco? (timestamp, date)

e confirme se seu banco é MySQL (parece ser, devido ao uso de ZeosLib)

E também gostaria de saber como faço uma função para subtrair da hora normal 5 minutos, tentei esta função mas não deu certo, retorna 01/12/188/99 , neste sistema, mas em um outro ela funciona perfeitamente, alguém saba me dizer por quê?

var

Hora : TTime;

Hora := IncMinute(Hora, 5);

se você utilizar apenas um campo TTime, quando avaliar seu valor do ponto de vista da data, realmente você obterá: 01/12/1889. (dê uma olhada neste post para entender um pouco mais sobre o tipo TDateTime)

Então, para você ter a data atual e junto a ela o horário, você deverá utilizar uma variável do tipo TDateTime e fazer uso da função Now, que retorna a Data e Hora atuais.

A função Date retorna a data atual e a parte fracionária zerada (ou seja, sem horas); A função Time, retorna a parte inteira zerada (ou seja, sem data setada e que neste caso representa 01/12/1889).

Assim, para pegar a hora atual (com data e hora) e subtrair os 5 minutos, basta utilizar: IncMinute(Now, 5);

Isto deve retornar a data e hora atual, diminuida de 5 minutos conforme você precisa.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...