Fórum SQL - ADOQuery #296317

21/09/2005

0

Amigos,
Coloquei em uma aplicação um ADOQuery onde em sua propriedade SQL coloquei esse código:
select * from Tab_Edificacoes where cod_Campo like sEd+´¬´
onde cod_Campo é o compo e sEd é uma variavel para o parâmetro.
Eu gostaria de que o campo também fosse uma variavel!

Como fazer isso???


Caezar

Caezar

Responder

Posts

21/09/2005

Michelli88

select * from Tab_Edificacoes where cod_Campo like sEd+´¬´


Voce esqueceu do ´:´

select * from Tab_Edificacoes where cod_Campo like :sEd+´¬´ 


mas... nao entendo... como assim o campor ser uma variavel??


Responder

Gostei + 0

21/09/2005

Caezar

Porque eu coloquei em um coboBox os campos da tabela!
Então na hora da busca quero escolher o compo em que eu vou fazer a busca!


Responder

Gostei + 0

21/09/2005

Michelli88

No combo vc tem tipo: Nome, Codigo, Tipo e vc quer na hora decidir se vai pesquisar por codigo ou por nome?

Se for isso, vc vai ter q ter um select pra cada um...


Responder

Gostei + 0

21/09/2005

Rogick

Vc pode fazer assim:

ADOQuery1.SQL.Add(´Select * from Tab_Edificacoes where ´ + combo.Items[combo.ItemIndex] + ´ like :sEd´´¬´´´);


Onde [i:df22aef36b]combo[/i:df22aef36b] é a combobox e [i:df22aef36b]ADOQuery1[/i:df22aef36b] é sua query(lógico né? :wink: ) onde está os campos.

Espero ter ajudado.


Responder

Gostei + 0

21/09/2005

Caezar

Amigo,
Tentei esse jeito e não deu muito certo!
Ele não faz nenhuma busca!


Responder

Gostei + 0

21/09/2005

Rjun

Tente fazer assim:

ADOQuery1.SQL.Add(´Select * from Tab_Edificacoes where ´ + combo.Items[combo.ItemIndex] + ´ like :sEd); 


E quando for passar o parâmetro, faça assim:

ADOQuery1.Parameters.ParamByName(´sEd´).Value := QuotedStr(valor + ´¬´);



Responder

Gostei + 0

21/09/2005

Rogick

Antes de Executar a query faça o seguinte:

ADOQuery1.SQL.SaveToFile(´C:\sql.txt´);


[i:9f67b68cbd]O [u:9f67b68cbd]C:\[/u:9f67b68cbd] pode ser substituído por qq pasta de sua preferencia.[/i:9f67b68cbd]

Abra o arquivo [u:9f67b68cbd]sql.txt[/u:9f67b68cbd] gerado e veja como está saindo a query.

Ah, siga o exemplo de sql do Rjun. O meu estava errado. :lol:


Responder

Gostei + 0

22/09/2005

Caezar

Amigos,
Alguem pode ver o que acontece com esse código?
Estou tentando passar o campo a ser pesquisado do ComboBox(cbCampoBusca) para a variavel sCampo
procedure TformAbrir.btBuscarClick(Sender: TObject);
var
sCampo:string;
begin
  dmConex.tb_Edific.SQL.Clear;
  dmConex.tb_Edific.SQL.Add(´Select * from Tab_Edificacoes where ´ + sCampo + ´ like :sEd´);
  CASE cbCampoBusca.ItemIndex OF
    0:sCampo:=´cod_Laudo´;
    1:sCampo:=´EmpresaSolicitante´;
    2:sCampo:=´EmpresaAvalianda´;
    3:sCampo:=´Cidade´  ;
    END;
    with dmConex.tb_Edific do
      begin
        close;
        Parameters.ParamByName(´sEd´).Value:=edPalavraBusca.Text;
        open;
      end;

end;



Responder

Gostei + 0

22/09/2005

Rjun

Qual o problema que está acontecendo? Está dando algum erro?


Responder

Gostei + 0

22/09/2005

Caezar

Ele diz:
Erro de sintaxe, operador faltando na expressão like?


Responder

Gostei + 0

22/09/2005

Rjun

Altere a linha em que você passa o parâmetro:

Parameters.ParamByName(´sEd´).Value := QuotedStr(edPalavraBusca.Text);



Responder

Gostei + 0

22/09/2005

Caezar

Memo problema, será que não é a variavel sCampo???


Responder

Gostei + 0

22/09/2005

Rjun

Agora que eu fui reparar. Coloque o case onde você atribui um valor para sCampo antes da linha que você monta o SQL.


Responder

Gostei + 0

22/09/2005

Caezar

Agora não dá mais erro nenhum!
Porem ele não faz a busca e quando eu faço um debug e percebo que o comando sql não recebe nenhum valor!


Responder

Gostei + 0

22/09/2005

Rjun

procedure TformAbrir.btBuscarClick(Sender: TObject); 
var 
  sCampo:string; 
begin 
  // Acho que você poderia por esse items no combobox e 
  // substituir esse case 
  // 
  //case cbCampoBusca.ItemIndex OF 
  // 0: sCampo := ´cod_Laudo´; 
  // 1: sCampo := ´EmpresaSolicitante´; 
  // 2: sCampo := ´EmpresaAvalianda´; 
  // 3: sCampo := ´Cidade´  ; 
  //end;
  
  sCampo := cbCampoBusca.Items[cbCampoBusca.ItemIndex];

  dmConex.tb_Edific.SQL.Clear; 
  dmConex.tb_Edific.SQL.Add(´Select * from Tab_Edificacoes where ´ + sCampo + ´ like :sEd´); 

  // Eu não gosto de usar WITH. Veja que aqui você está usando 3 
  // linhas a mais.
   dmConex.tb_Edific.close; 
   dmConex.tb_Edific.Parameters.ParamByName(´sEd´).Value := edPalavraBusca.Text; 
   dmConex.tb_Edific.open; 
end;


Quem não recebe valor? O parâmetro sED?


Responder

Gostei + 0

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

Aceitar