Olá a todos.

Todos sabem que quando fazemos consultas onde retornamos muitos valores devemos parametriza-las, porém uma dúvida muito grande em programadores iniciantes é como passar os parâmetros que definimos em uma Query, através de SQL, para ações realizadas, por exemplo, ao clicarmos em um botão "PESQUISAR" ou "GRAVAR".

Vou dar um exemplo simples para um fácil entendimento.

Supondo que temos uma Query de nome qryClientes em um DATA MODULE de nome DM, onde definimos na Query a seguinte instrução SQL:

select * from tbClientes

where nomecliente =:Pnomecliente

Nessa instrução SQL estamos trazendo todos os registros da tabela CLIENTES, porém estamos parametrizando a consulta para que só retorne os dados em que o nome do Cliente seja igual ao parâmetro Pnomecliente. O Delphi já vai entender que Pnomecliente é parâmetro pois ele está após os dois pontos, ou seja, o que estiver após dois pontos ele entende como parâmetro.

Agora precisamos passar um valor para esse parâmetro:

Também para passar o valor vou dar um exemplo simples, onde teremos um Edit para entrarmos com o nome do cliente a ser pesquisado e um Button para pesquisar esse cliente.

No evento OnClick do botão entramos com o seguinte código:

procedure TPrincipal.Button1Click(Sender: TObject);
begin

   DM.qryClientes.Close;
   DM.qryClientes.ParamByName('Pnomecliente').Value:=(edit1.Text);
   DM.qryClientes.Open;

end;

end.

Nessa codificação começamos fechando a Query que está localizada no DATA MODULE, definimos que o parâmetro Pnomecliente da Query que está no DATA MODULE receberá o valor do EDIT1.TEXT e por fim abrimos essa Query.

Uma observação muito importante: se por acaso tivéssemos definido um parâmetro, por exemplo, de data, teríamos que transformar o valor de String para Data da seguinte forma:

. . .

DM.qryClientes.ParamByName('Pdata').Value := strtodate (edit1.Text);

. . .

Bom, espero que essa dica possa ajudar...

Abraço a todos,

Fernando Carmo.