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

(Resolvido) Pesquisa por intervalo de datas


Tatiane.InterArt

Pergunta

Para otimização de código, consegui encontrar na Net uma forma de somar dias a uma data fixa e pesquisar por ele, porém o que preciso agora é comparar duas datas:

sendo Data1 < Data2, já manipulei os MaskEdits para não deixar inserir data inicial maior que a final, sei que há uma forma de se fazer isso, só não estou sabendo como!

Bem, nas pesquisas por períodos fixos, tipo 15,20,25 e 30 dias à partir do dia informado estou usando:

Data=DateToStr(IncDay(StrToDate(MaskEdit1.Text), StrToInt(Edit1.Text)));

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('Select * from Ligacao where Data='''+Data+'''');

IBQuery1.Open;

Na verdade acredito que o período deva ser um pouco diferente, consegui encontrar na net uma função que me retorne a quantidade de dias entre o período:

Var Dia:Integer;

Begin

Dia:=DaysBetween(StrToDate(MaskEdit1.Text),StrToDate(MaskEdit2.Text));

O que preciso agora é saber como faço para montar o código SQL para esta pesquisa, relembrando que minha variável Data é string e já trabalho com esse software a algum tempo e não há uma maneira de mudar agora!

Uso Delphi6 e InterBase

A tabela em questão:

LIGACAO

Codigo

Data

Hora

Solicitado

Telefone

Falou

nesta tabela existirá toda a relação de ligações feitas, e a pesquisa é para facilitar a visualização das ligações dentro do período da conta telefônica para comparação.

Se alguém puder me ajudar nesta questão agradeço!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Pessoal resolvido...

conheci um comando chamado between que mudou meu conceito! huahuahua

no fim a pesquisa funciona e o código ficou assim:

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add(' Select * from Ligacao where Data between '''+MaskEdit1.Text+''' and '''+MaskEdit2.Text+'''');

IBQuery1.Open;

Fica aí a dica para outros iniciantes como eu que possam precisar!

Link para o comentário
Compartilhar em outros sites

  • 0
conheci um comando chamado between que mudou meu conceito! huahuahua

no fim a pesquisa funciona e o código ficou assim:

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add(' Select * from Ligacao where Data between '''+MaskEdit1.Text+''' and '''+MaskEdit2.Text+'''');

IBQuery1.Open;

Fica aí a dica para outros iniciantes como eu que possam precisar!

Tatiane, dê preferência a utilizar a parametrização. É um bom hábito e que poderá evitar futuras dores de cabeça.

Alguns bancos, como o MySQL espera a formatação da data yyyy-mm-dd. Com certeza diferente da que você está usando na concatenação e isto resultaria em erro caso este fosse o seu banco.

Posts que citam estas situações:

http://scriptbrasil.com.br/forum/index.php...st&p=421910

http://scriptbrasil.com.br/forum/index.php...st&p=379915

http://scriptbrasil.com.br/forum/index.php...st&p=341003

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...