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 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. 
       
       
    • By clecio10
      Olá pessoal sou novo no fórum e gostaria da ajuda de vocês na resolução de um exercício de estrutura de dados, não estou sabendo como implementar os métodos com base nas perguntas do exercício. Por favor, quem puder ajudar eu agradeço de coração!
       
      Enunciado:   1. Implemente o método compareTo(Object o) da classe Item ; 2. Implemente a lista duplamente encadeada para a atender a interface ILista ; 3. Implemente a lista simplesmente encadeada circular para a atender a interface ILista ; 4. Implemente a lista duplamente encadeada circular para a atender a interface ILista ;   interface ILista { /** * Adiciona um elemento na lista * * @param dado Elemento a ser adicionado * @throws ListaException Erro caso não tenha mais espaço disponível. */ void adicionar(Item dado) throws ListaException; /** * Remove um item da lista * * @param chave informar a chave de busca do item * @throws ListaException Erro caso não tenha o item informado. */ void remover(Comparable chave) throws ListaException; /** * Caso a chave seja encontrada, retorna verdadeiro * * @param chave * @return */ boolean contem(Comparable chave) throws ListaException; /** * Retorna a quantidade de elementos * * @return a quantidade de elementos */ int getQtd(); /** * Adiciona a outra lista no final da lista. * * @param outralista a outra lista a ser somada. */ void AdicionarNoFinal(ILista outralista) throws ListaException; /** * Adiciona a outra lista no final da lista. * * @param outralista a outra lista a ser somada. */ void AdicionarNoFinal(Item[] outralista) throws ListaException; /** * Adiciona a outra lista após o item chave existente na lista. * * @param outralista a outra lista a ser somada. * @param chaveDoItemDoMeio elemento chave que antecederá a outra lista */ void AdicionarNoMeio(Comparable chaveDoItemDoMeio, ILista outralista) throws ListaException; /** * Retorna outra lista com os elementos existentes da lista. * * @param posicaoInicial posição inicial da lista a ser copiada. * @param posicaoFinal posição final da lista que deve ser copiada. */ Item[] getSubLista(int posicaoInicial, int posicaoFinal) throws ListaException; /** * Retorna a quantidade de elementos que são iguais ao informado no parâmetro. * * @param item elemento de comparação. */ int getQtdElementos(Item item) throws ListaException; /** * Remove os itens duplicados * * @throws ListaException */ void removerDuplicados() throws ListaException; } public class Item implements Comparable { private Comparable chave; private Object informacaoCompleta; public Item() { } public Item(Comparable chave) { this(); this.chave = chave; this.informacaoCompleta = chave; } public Item(Comparable chave, Object dado) { this(chave); this.informacaoCompleta = dado; } public Object getInformacaoCompleta() { return informacaoCompleta; } public void setInformacaoCompleta(Object informacaoCompleta) { this.informacaoCompleta = informacaoCompleta; } public Comparable getChave() { return chave; } public void setChave(Comparable chave) { this.chave = chave; } // Implementar o método compareTo public int compareTo(Object o) { return 0; } } public class ListaException extends Exception { public ListaException(String msg) { super(msg); } }
    • By MrKintschev
      minha duvida é sobre o Kotlin, se o mercado esta bom, kotlin com spring, se compensa estudar e principalmente sobre o kotlin javascript, apps react kotlin se isso compensa se é promissor... pq eu gostei da idea, mas nao sei se vingaria
×

Important Information

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