[Delphi] Pesquisa entre datas

"Nesse Tutorial estarei ensinando a fazer pesquisa de datas só pelo mês ou pela data completa, um código muito importante em um sistema com certeza todo sistema precisa realizar uma consulta por data, seja em relatórios, ou em uma outra tela qualquer de seu sistema."




Primeiro coloque 2 Maskedit ou DateTimePicker em seu sistema,

declare a uses DateUtils, e pode colocar o seguinte código em um button

Só pelo mês


TABELA.Close;
TABELA.SQL.Clear;
TABELA.SQL.Add(' Select *');
TABELA.SQL.Add(' From tabela where (DatePart(month, campo) * 100 + DATEPART(day, campo) between :Dataini and :Datafim)');
TABELA.Parameters.ParamByName('dataini').Value := MonthOf(DateTimePicker1.Date) * 100 + DayOf(DateTimePicker1.Date);
TABELA.Parameters.ParamByName('datafim').Value := MonthOf(DateTimePicker2.Date) * 100 + DayOf(DateTimePicker2.Date);
TABELA.open; 



Pela data completa


TABELA.Close; 
TABELA.SQL.Clear; 
TABELA.SQL.Add(' Select *'); 
TABELA.SQL.Add(' From  TABELA  where CAMPO between :dataini and :datafim'); 
TABELA.Parameters.ParamByName('dataini').Value := StrToDate(MaskEdit1.Text); 
TABELA.Parameters.ParamByName('datafim').Value := StrToDate(MaskEdit2.Text); 
TABELA.open; 

Bom pessoal era isso que eu tinha para compartilhar com vocês, qualquer duvida pode comentar ai que estarei ajudando no que puder, ate a próxima postagem.



2 comentários:

João disse... [Responder Mentira]

Qunando o Banco de Dados for SQL SERVER isso dá problemas em capo DateTime, ainda mais se usar valor padrão ou inserir valores com o comando GETDATE().
GETDATE() pega a DataHora do Sistema operacional.
EX: 04/06/2013 16:52:00.00
Para pesquisar em campos como esse vc deve colocar a hora no fim de cada data.
Por exemplo:
... WHERE DataVenda BETWEEN '01-06-2013 00:00:00' AND '01-06-2013 23:59:59'

Jhonatan Felipe disse... [Responder Mentira]

Toda Coreção é bem vinda amigo :)

Postar um comentário