Pesquisa Data: Delphi
Veja nesta quick como pesquisar por campo Date.
Precisamos localizar quando um cliente foi cadastrado, para isso iremos aprender como pesquisar por campo Date.
Na nossa aplicação exemplo temos um banco de dados com a tabela Pessoa contendo os seguintes campos:
TABELA PESSOA
| IDPESSOA | INTEGER |
| NOME | VARCHAR(30) |
| ENDERECO | VARCHAR(45) |
| BAIRRO | VARCHAR(25) |
| CIDADE | VARCHAR(25) |
| TELEFONE | VARCHAR(10) |
| SALARIO | NUNERIC(10,2) |
| DATACADASTRO | DATE |
Em nosso SqlDataSet coloque a seguinte instrução SQL:
SqlDataSet
| Name | sdsPesquisa |
| SqlConnection | O nome da sua conexão |
| CommandText | select BAIRRO, CIDADE, DATACADASTRO, ENDERECO, IDPESSOA, NOME, SALARIO, TELEFONE from PESSOA Where DATACADASTRO =:pDATA |
Nesta instrução fazemos a comparação e passamos o parâmetro.
No Evento OnKeyPress do Edit coloque o seguinte código:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
1 if key = #13 then
2 begin
3With cdsPesquisa do
4 begin
5 close;
6FetchParams;
7Params.ParamByName('pDATA').AsDate:= StrToDateTime(Edit1.Text);
8Open;
end;
end;
end;
Mudamos somente a linha 7, ou seja, pegamos a data provida o do edit e passamos a por parâmetro para a nossa instrução SQL.
DATETIMEPICKER: O Delphi possui o componente DateTimePicker, que nos mostra um calendário com as datas, assim não precisamos digitar a data e sim selecioná-la em nosso componente.
Adicione um DateTimePicker da paleta WIN32, e mude a propriedade name pata dtpInicial. Coloque também um buttom e mude a propridade name btnOK e a caption Para OK. Dê dois clique no botão OK e coloque o seguinte código:
procedure TForm1.btnOKClick(Sender: TObject);
begin
begin
With cdsPesquisa do
begin
close;
FetchParams;
Params.ParamByName('pDATA').AsDate:=dtpInicial.Date;
Open;
end;
end;
end;
BETWEEN: Da maneira anterior precisamos saber a data que foi cadastrado a pessoa, mas e se nós não sabermos, para encontrar precisamos fazer um busca entre intervalos, ou seja, eu quero todas as pessoas cadastradas entre 01/08/2005 até 27/08/2010, para isso iremos utilizar o operador BETWEEN, ele nos retorna um resultado entre intervalos, não precisa ser somente de datas, mas também campos numéricos, como por exemplo: Queremos saber quais são as pessoas que tem o salário entre 1200,00 e 3000,00 reais.
Retorne em nossa instrução SQL e altere clausula WHERE, deixando-a de acordo a descrito a seguir:
Where DATACADASTRO BETWEEN :DATAINI AND :DATAFIM
O que acabei de fazer é passar dois parâmetros um para receber a data inicial e o outro para receber a data final, o restante o operador BETWEEN faz.
Obs.: Precisamos conferir sempre se o delphi definiu os parâmetros, caso o nome do parâmetro seja diferente do campo ele costuma não defini-lo para isso com o compoenente SqlDataSet selecionado dê dois clique na reticência em frente a propriedade Params e abrirá a uma tela, preencha de acordo com a tela a seguir:
DataType: É o tipo do parâmetro, ou seja, ele poderá ser string, integer e outros.
Name: O Nome do parâmetro.
ParamType: Se o parâmetro será do tipo de entrada ou saída, ptInput é Saída e ptOutput para entrada, ele poderá ser os dois também.
Em nosso formulário adicione mais um DateTimePicker e a mude a propriedade name para dtpFinal. No código do botão OK deixe o código como o descrito a seguir:
procedure TForm1.btnOKClick(Sender: TObject);
begin
1 if key = #13 then
2 begin
3With cdsPesquisa do
4 begin
5 close;
6FetchParams;
7Params.ParamByName('DATAINI').AsDate:=dtpInicial.Date;
8 Params.ParamByName('DATAFIM').AsDate:=dtpFinal.Date;
9Open;
end;
end;
end;
Neste código na linha 7 o parâmetro DATAINI receberá a primeira a o parâmetro DATAFIM receberá a segunda data.
DateTimiPicker: Este componente tem diversas propriedade uma delas a propriedade Data, essa propriedade uma data, você pode modificá-la mas seria mais prudente se fizermos isso em nosso formulário.
No eventro OnShow do Formulário coloque o seguinte código:
procedure TForm1.FormShow(Sender: TObject);
begin
dtpInicial.Date:=Date;
end;
Ele adicionará a data do dia no primeiro DateTimePicker, mas queremos colocar a data de 30 dias atrás no primeiro e no segundo a data atual:
procedure TForm1.FormShow(Sender: TObject);
begin
dtpInicial.Date:=Date - 30;
dtpFinal.Date:=Date;
end;
Fico por aqui e até o próximo artigo.
Rubens Antunes
Autor do Livro: Delphi – Faça Uma Aplicação Comercial
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo