Fórum Como pegar o nome do campo da tabela? #262275
16/12/2004
0
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
Curtir tópico
+ 0Post mais votado
16/12/2004
Query.GetFieldNames(ComboBox1.Items);
Rômulo Barros
Gostei + 1
Mais Posts
16/12/2004
Reginaldo174
Gostei + 0
16/12/2004
Lucianob
r.rdb$field_name as CAMPO
from rdb$relation_fields r
where (r.rdb$relation_name=:Tabela)
para banco Interbase / Firebird
Gostei + 1
16/12/2004
Douglasf
Gostei + 0
16/12/2004
Tinorj
... 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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)