Fórum Carregar campos de uma tabela em um combocox #485280
11/07/2014
0
Exemplo
Na minha tabela tem os campos assim
Exemplo:
Tabela de Clientes
Campos
CIDCliente
CFantasia
CRazaoSocial
......
Os Display name destes campo seria o renomeado por mim dentro do delphi.
Exemplo
CIDCliente = Código
CFantasia = Fantasia
CRazaoSocial = Razão Social
Ai eu tenho uma que carregar o Combo com todos os DisplayNames pois é fácil o cliente reconhecer o que é.
Só que na hora de pesquisar seja passado internamente o nome do campo original e assim seja efetuada a pesquisa.
Alguém ai pode me ajudar?
Jeová Santos
Curtir tópico
+ 0Post mais votado
11/07/2014
no OnShow do Formulário vamos popular o ComboBox com os campos do ClientDataSet.
var
I: Integer;
begin
cdsDados.CreateDataSet;
for I := 0 to cdsDados.Fields.Count - 1 do
cbbCampos.Items.Add(cdsDados.Fields[I].DisplayName);
end;
Onde cdsDados seria o teu ClientDataSet, o cbbCampos é o ComboBox que eu coloquei no formulário.
Depois no OnChange do teu ComboBox coloca isso:
var
I: Integer;
begin
for I := 0 to cdsDados.Fields.Count - 1 do
if cdsDados.Fields[I].DisplayName = cbbCampos.Text then
lblFieldName.Caption := cdsDados.Fields[I].FieldName;
end;
Onde lblFieldName é um Label que eu coloquei pra ele te mostrar o nome "Interno" do campo, agora só adaptar ao teu código, abraço.
Att,
Thiago Irrazabal de Oliveira.
Thiago Irrazabal
Gostei + 1
Mais Posts
11/07/2014
Jeová Santos
Gostei + 0
11/07/2014
Thiago Irrazabal
Att,
Thiago Irrazabal de Oliveira.
Gostei + 0
11/07/2014
Jeová Santos
unit ufrmPrincipal;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.FMTBcd, Data.DBXFirebird, Data.DB,
Data.SqlExpr, Datasnap.DBClient, Datasnap.Provider, Vcl.Grids, Vcl.DBGrids,
Vcl.StdCtrls, Vcl.Buttons;
type
TfrmClientes = class(TForm)
GroupBox1: TGroupBox;
cbxCampoFiltro: TComboBox;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
SQLDataSet1: TSQLDataSet;
DataSetProvider1: TDataSetProvider;
ClientDataSet1: TClientDataSet;
Clientes: TSQLConnection;
edPesquisa: TEdit;
btnPesquisa: TBitBtn;
ClientDataSet1CIDCliente: TIntegerField;
ClientDataSet1CFantasia: TIntegerField;
ClientDataSet1CRazao: TIntegerField;
ClientDataSet1CEndereco: TIntegerField;
ClientDataSet1CBairro: TIntegerField;
ClientDataSet1CCidade: TIntegerField;
ClientDataSet1CAtivo: TIntegerField;
procedure btnPesquisaClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure cbxCampoFiltroChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmClientes: TfrmClientes;
vCampo:string;
implementation
{$R *.dfm}
procedure TfrmClientes.btnPesquisaClick(Sender: TObject);
begin
ClientDataSet1.Locate(vCampo,edPesquisa.Text,[loCaseInsensitive,loPartialKey]);
end;
procedure TfrmClientes.cbxCampoFiltroChange(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ClientDataSet1.Fields.Count - 1 do
if ClientDataSet1.Fields[I].DisplayName = cbxCampoFiltro.Text then
vCampo := ClientDataSet1.Fields[I].FieldName;
end;
procedure TfrmClientes.FormShow(Sender: TObject);
var
I: Integer;
begin
ClientDataSet1.Open;
for I := 0 to ClientDataSet1.Fields.Count - 1 do
cbxCampoFiltro.Items.Add(ClientDataSet1.Fields[I].DisplayName);
end;
end.
Qaundo digito dentro do meu edPesquisa e peço pra localizar ele diz que :
First chance exception at $7514812F. Exception class EDatabaseError with message 'ClientDataSet1: Field 'terra' not found'. Process Cliente.exe (8876)
O que fazer?
Gostei + 0
11/07/2014
Jeová Santos
Gostei + 0
11/07/2014
Thiago Irrazabal
procedure TfrmClientes.btnPesquisaClick(Sender: TObject);
begin
ClientDataSet1.Locate(vCampo,edPesquisa.Text,[loCaseInsensitive,loPartialKey]);
end;
Troca por isso:
procedure TfrmClientes.btnPesquisaClick(Sender: TObject);
begin
if (vCampo <> '') and (edPesquisa.Text <> '') then
ClientDataSet1.Locate(vCampo, VarArrayOf([edPesquisa.Text]), []);
end;
Att,
Thiago Irrazabal de Oliveira.
Gostei + 0
14/07/2014
Jeová Santos
[img:descricao=Erro de busca locate.]http://arquivo.devmedia.com.br/forum/imagem/192675-20140714-095921.png[/img]
Gostei + 0
14/07/2014
Thiago Irrazabal
Att,
Thiago Irrazabal de Oliveira.
Gostei + 0
14/07/2014
Jeová Santos
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)