Fórum Pergunta básica em consulta SQL #467837

24/01/2014

0

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

Responder

Posts

24/01/2014

Jaime Santos

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
Responder

Gostei + 0

24/01/2014

Douglas

Gostei da resposta Jaime.
Responder

Gostei + 0

24/01/2014

Ricardo

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.
Responder

Gostei + 0

24/01/2014

Jaime Santos

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.
Responder

Gostei + 0

24/01/2014

Jaime Santos

Obrigado Douglas.
Gostei da resposta Jaime.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar