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

(Resolvido) Comparar datas


Mario Lopes

Pergunta

Boa tarde amigos

Porque o código seguinte não funciona para comprar datas. Isto é o resultado é nulo e não devia ser.

var data:Tdatetime;
var compoedata:string;
begin

compoedata:='01'+'-'+inttostr(combobox1.ItemIndex+1)+'-'+edit1.Text;
data:=strtodate(compoedata);
    //------------procurar apenas os contrato validos

Queryg.SQL.Clear;
Queryg.SQL.Add('SELECT *');
Queryg.SQL.Add('FROM contrato');
Queryg.SQL.Add('WHERE data_inicio>=:a' );
Queryg.SQL.Add('and data_fim <= :a');
queryg.Params[0].AsDate:=data;
queryg.Params[1].asdate:=data;
queryg.Open;

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

compoedata:='01'+'-'+inttostr(combobox1.ItemIndex+1)+'-'+edit1.Text;

data:=strtodate(compoedata);

vamos supor que sua data seja

data := '01-01-2012' // isso dependendo do banco de dados poderia ser '01/01/2012'

se data tem o mesmo valor, ao executar a sql, os registros retornariam somente no intervalo de 1 dia ( ou seja, na mesma data )

Queryg.SQL.Clear;
Queryg.SQL.Add('SELECT *');
Queryg.SQL.Add('FROM contrato');
Queryg.SQL.Add('WHERE data_inicio>=:data1' );
Queryg.SQL.Add('and data_fim <= :data2');
queryg.Params[0].AsDate:=data;
queryg.Params[1].asdate:=data;
queryg.Open;
se quiser um intervalo maior deveria ser
Queryg.SQL.Clear;
Queryg.SQL.Add('SELECT *');
Queryg.SQL.Add('FROM contrato');
Queryg.SQL.Add('WHERE data_inicio>=:data1' );
Queryg.SQL.Add('and data_fim <= :data2');
queryg.Params[0].AsDate:=data;
queryg.Params[1].asdate:=data + 30; // data inicial + 30 dias
queryg.Open;

OBS: Procure não usar o mesmo nome para os parametros

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
compoedata:='01'+'-'+inttostr(combobox1.ItemIndex+1)+'-'+edit1.Text;

data:=strtodate(compoedata);

vamos supor que sua data seja

data := '01-01-2012' // isso dependendo do banco de dados poderia ser '01/01/2012'

se data tem o mesmo valor, ao executar a sql, os registros retornariam somente no intervalo de 1 dia ( ou seja, na mesma data )

Queryg.SQL.Clear;
Queryg.SQL.Add('SELECT *');
Queryg.SQL.Add('FROM contrato');
Queryg.SQL.Add('WHERE data_inicio>=:data1' );
Queryg.SQL.Add('and data_fim <= :data2');
queryg.Params[0].AsDate:=data;
queryg.Params[1].asdate:=data;
queryg.Open;
se quiser um intervalo maior deveria ser
Queryg.SQL.Clear;
Queryg.SQL.Add('SELECT *');
Queryg.SQL.Add('FROM contrato');
Queryg.SQL.Add('WHERE data_inicio>=:data1' );
Queryg.SQL.Add('and data_fim <= :data2');
queryg.Params[0].AsDate:=data;
queryg.Params[1].asdate:=data + 30; // data inicial + 30 dias
queryg.Open;

OBS: Procure não usar o mesmo nome para os parametros

abraço

Ok Jhonas

Peço desculpa, a sua resposta diz tudo. Pura e simples distracção minha.

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...