GARANTIR DESCONTO

Fórum Como pegar o nome do campo da tabela? #262275

16/12/2004

0

Pessoal,

Estou fazendo uma pesquisa na meu banco onde o usuário pega o campo desejado e procura um certo dado.

O problema é o seguinte:

tenho o seguinte comando SQL:


  with qryPedido, qryPedido.SQL do
  begin
    Active:=false;
    Clear;
    Add(´select cli.Nome as Cliente, rev.Nome as Revenda, pabx.nome as PABX,´);
    Add(´produto.nome as Produto, versao as Versão, tipo_pedido.nome as Tipo,´);
    Add(´pedido.quantidade, pedido.NumeroSerie, pedido.desconto,´);
    Add(´pedido.data, pedido.datafim, pedido.preco, pedido.FaixaVenda´);
    Add(´from pedido´);
    Add(´left join tipo_pedido on (tipo_pedido.TipoPedidoID=pedido.TipoPedidoID)´);
    Add(´left join empresa cli on (cli.EmpresaId=pedido.EmpresaID)´);
    Add(´left join empresa rev on (rev.EmpresaId=pedido.RevendaID)´);
    Add(´left join pabx on (pabx.numero=pedido.pabxID)´);
    Add(´left join produto on (produto.produtoId=pedido.produtoID)´);
  end;


e tenho um ComboBox que recebe as campos desta maneira:

  cbPesquisa.Items := qryPedido.FieldList;


No momento da pesquisa o usuário escolhe qual campo deseja pesquisar e o valor do campo ele digita no Edit.

fiz então desta forma:

 with qryPedido, qryPedido.SQL do
  begin
    Active:=True;
    Add(´where ´ + qryPedido.Fields[cbPesquisa.ItemIndex].FieldName
       +´ like´+ ´"¬´ + edtPesquisa.Text + ´¬"´);
    ....


Porem ao invez de ser passado para o comando sql o nome do campo é passado o rótulo que dei a ele.

por exemplo se eu escolher no ComboBox o Cliente é passado para a intrução SQL o Campo Cliente e não o campo Cli.Nome, pois no select eu coloquei desta forma :

[color=red:5040b7e7c2]cli.Nome as Cliente[/color:5040b7e7c2]

Alguem poderia me falar como eu faço para peguar o nome do Campo ou fazer o comando SQL saber que estou usando o Rótulo do campo e não e Campo?

não sei se expliquei direito.


Douglasf

Douglasf

Responder

Post mais votado

16/12/2004

Para alimentar o ComboBox com os nomes do campo de sua query, faça:

Query.GetFieldNames(ComboBox1.Items);



Rômulo Barros

Rômulo Barros
Responder

Gostei + 1

Mais Posts

16/12/2004

Reginaldo174

Qual banco de dados ?


Responder

Gostei + 0

16/12/2004

Lucianob

select
r.rdb$field_name as CAMPO
from rdb$relation_fields r
where (r.rdb$relation_name=:Tabela)

para banco Interbase / Firebird


Responder

Gostei + 1

16/12/2004

Douglasf

Uso o banco de dados Mysql.


Responder

Gostei + 0

16/12/2004

Tinorj

No seu caso, já que o TQuery já está carregado, basta você usar as propriedade Filter do TQuery.

...
type
  Form1: class(TForm)
...
  private
    procedure AtivarFiltro(Filtro: String = ´´);
...
procedure Form1.AtivarFiltro(Filtro: String);
begin
  with qryPedido do try
    Filtered := False;
    Filter := Filtro;
    Filtered := (Filtro <> ´´);
  except
    Filtered := False;
    ShowMessage(´Filtros de dados inválidos´);
  end;
end;
...


Agora, maiores detalhes sobre o filtro, vai no help do delphi sobre a propriedade filter do componente TQuery.


Responder

Gostei + 0

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

Aceitar