Pergunta básica em consulta SQL

Delphi

24/01/2014

Pessoal uma pergunta meio idiota, mas me enrolei para explicar uma função.

Por exemplo, nessa linha abaixo qual a explicação mais lógica de se usar (:)antes das variáveis?

SELECT * FROM PRODUTOS WHERE ID_PRODUTO = :CODIGO and NOME_PRO LIKE :NOME
Ricardo

Ricardo

Curtidas 0

Respostas

Jaime Santos

Jaime Santos

24/01/2014

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);

. . .



Fonte: Passando parâmetros para uma Query https://www.devmedia.com.br/passando-parametros-para-uma-query/4186#ixzz2rJGS6cOZ
GOSTEI 0
Douglas

Douglas

24/01/2014

Gostei da resposta Jaime.
GOSTEI 0
Ricardo

Ricardo

24/01/2014

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);

. . .



Fonte: Passando parâmetros para uma Query https://www.devmedia.com.br/passando-parametros-para-uma-query/4186#ixzz2rJGS6cOZ




Bem explicado, mas o que quero dizer é que mesmo que eu não utilize " : " ou " :P " o resultado é o mesmo.
GOSTEI 0
Jaime Santos

Jaime Santos

24/01/2014

Não compreendi ainda Ricardo, a partir dos 'dois pontos' vc deve colocar o nome que utilizará representando determinado parâmetro ou então escolher o método de não utilizar parâmetros e sim passar os valores diretamente dessa forma não seria necessário você utilizar os 'dois pontos'.

Att.
GOSTEI 0
Jaime Santos

Jaime Santos

24/01/2014

Obrigado Douglas.
Gostei da resposta Jaime.
GOSTEI 0
POSTAR