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

3    With cdsPesquisa do

 4  begin

 5   close;

 6     FetchParams;

 7     Params.ParamByName('pDATA').AsDate:= StrToDateTime(Edit1.Text);

 8    Open;

    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

3    With cdsPesquisa do

4     begin

5          close;

6          FetchParams;

7          Params.ParamByName('DATAINI').AsDate:=dtpInicial.Date;

8          Params.ParamByName('DATAFIM').AsDate:=dtpFinal.Date;

9          Open;

       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