Jump to content
Donizera

Parâmetro em Querry DELPHI [como usar paramentros do tipo string?] [HELP]

Recommended Posts

Tenho tentado criar uma procedimento para busca dentro de um tabela de um banco;
E adotei o seguinte código para o procedimento;

procedure Busca(campo:string);
begin
    DM.qtester.Active :=false ;
    DM.qtester.ParamByName('campo').AsString := campo;// PARAMETRO CAMPO , RECEBE A INFORMAÇÃO DE QUAL COLUNA SERA SELECIONADA
    DM.qtester.ParamByName('valor').Value := frmTabelaFuncionario.Edit1.Text;// PARAMENTRO VALOR, RECEBE A INFORMAÇÃO DO VALOR DE COMPARAÇÃO 
    DM.qtester.Active := true ;
    frmTabelaFuncionario.gridExibeFuncionario.DataSource :=  DM.dsTester;// TABELA RECEBE A NOVA QUERY ADOTADA PARA EXIBIÇÃO

end;

QUERRY MENCIONADA NO METODO BUSCA
 

[code=sql]
select 
codFuncionario, 
nome, 
idade, 
cpf, 
endereco, 
numero,
cep, 
telefone,
codSetor 
from projetoestacionamento.funcionario 

where  
:campo = :valor and
excluido <> 'e' order by (codFuncionario)

 

O problema é que, quando executo o método tudo ocorre certo até o ponto da onde a tabela exibirá as informações da busca; 
Acontece que o teste feito no sql(where) acaba dando falso. (Pelo fato de que eu entendi o paramentro :campo esta vazio)

Testando o codigo percebi que, ao passar somente o valor de comparação (no caso o paramentro :valor), a tabela exibe corretamente a busca,

e pesquisando descobri q parametros podem ser tipados;

 

  • Tenho que estipular algum tipo pra o meu parametro campo ?
  • existe outro método mais eficiente que esse, para busca em tabela ?

Desde ja agracedo!

Share this post


Link to post
Share on other sites

Não é possível referenciar um campo da tabela utilizando um parâmetro, da forma que você está fazendo a consulta executada está sendo.

SELECT 
  codFuncionario, 
  nome, 
  idade, 
  cpf, 
  endereco, 
  numero,
  cep, 
  telefone,
  codSetor 
FROM
  projetoestacionamento.funcionario 
WHERE  
  /*:campo = :valor */
  'Campo selecionado' = 'Texto do Edit'
  AND excluido <> 'e'
ORDER BY
  (codFuncionario)

Está comparando dois valores do tipo string.

 

A solução que me passa pela cabeça seria ajustar a consulta do qtester dependendo do campo selecionado, algo como:

procedure Busca(campo:string);
const
  cSQL: string = 
    'SELECT ' +
    '  codFuncionario, nome, idade, cpf, endereco, numero,cep, telefone,codSetor ' +
    'FROM ' +
    '  projetoestacionamento.funcionario ' +
    'WHERE ' +
    '  %s = :valor AND excluido <> ''e'' ' +
    'ORDER BY ' +
    '  (codFuncionario)';
begin
  DM.qtester.Active :=false;
  //Dependendo do componente utilizado DM.qtester.SQL.Text pode ser DM.qtester.CommandText
  DM.qtester.SQL.Text := Format(cSQL, [campo]);
  {
    Equivalente a
    DM.qtester.SQL.Text := 'SELECT ' +
    '  codFuncionario, nome, idade, cpf, endereco, numero,cep, telefone,codSetor ' +
    'FROM ' +
    '  projetoestacionamento.funcionario ' +
    'WHERE ' +
    '  ' + campo + ' = :valor AND excluido <> ''e'' ' +
    'ORDER BY ' +
    '  (codFuncionario)';
  }
  DM.qtester.ParamByName('valor').Value := frmTabelaFuncionario.Edit1.Text;// PARAMENTRO VALOR, RECEBE A INFORMAÇÃO DO VALOR DE COMPARAÇÃO 
  DM.qtester.Active := true ;
  frmTabelaFuncionario.gridExibeFuncionario.DataSource :=  DM.dsTester;// TABELA RECEBE A NOVA QUERY ADOTADA PARA EXIBIÇÃO
end;

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By DanielleN
      Boa tarde pessoal!
      Preciso de uma ajuda urgente.O contexto é o seguinte: Acabo de pegar toda uma estrutura pronta de integração, que se conecta ao repo Azure DevOps, cada commit dispara a execução com parâmetros automatizados em Jenkins.
      Tive um problema em um dos step e gostaria de ver os arquivos que estão gerando. Mas meu job está ligado a um master e não possui a opção de gerar os artefacts. Alguém poderia me dizer o que posso fazer? Como listar os arquivos que estão sendo gerados?
      Obrigada 
    • By Mozelli
      Olá pessoal.
       
      Estou com o seguinte problema.
      Foi formatado o computador da empresa sem fazer o backup da base de dados do sistema que consiste em dois arquivos, segundo o proprietário do sistema informou: um arquivo .mdf e outro .ldf.
      Através de programas de recuperação de dados, consegui encontrar esses arquivos.
      Preciso recuperar esses dados. Há alguma maneira de eu abrir esses aquivos e tentar recuperar essa base de dados? Algum programa?
       
      Desde já agradeço.
    • By samueloliveir
      Primeiramente, OBRIGADO pra quem me ajudar. Não estou conseguindo fazer, quem puder me ajudar a fazer me explicando !! Agradeço mt
       
       
      Então, tenho umas 12 tarefas que preciso entregar ate semana que vem, você poderia me ajudar com 2 tarefas que estou com dificuldades ? preciso que me ajude no visualg 
       
      Questão 1
      Crie um algoritmo que leia um número entre 2 e 20 e gere uma tela com a seguinte configuração:
       
      Digite um número:
      4
      Saída do algoritmo:
      1
      12
      123
      1234
      123
      12
      1
    • By brunoaires
      Boa tarde amigos,
      Estou com uma pequena duvida, preciso elaborar um algoritmo que busque a (latitude e longitude) de um dono de cachorro e a posição do respectivo cachorro, e preciso determinar a distância segura de 20 metros, se a distância for ultrapassada terá que emitir um alerta para o dono do cachorro
    • By Claudia França
      prezados como eu altero de loked para unloked do arro para não carregar o java e seguir com o procedimento. 
       
       
      ?Veja nesse link https://drive.google.com/drive/u/0/folders/1h0EbUoz3UOL8j9orWirUAPILt7cg7q-p 
      minhas imagens não estao subindindo aqui, não sei porque, acho que tenho limitação. 
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.