Combobox 1 = Tabelas do banco, Combobox2 = campos tabela

Delphi

02/07/2004

Olá galera do forum, estou aqui mais uma vez para pedir a ajuda de voces, bom é o seguinte:
Estou fazendo um formulario para pesquisas onde o usuario final pode fazer a pesquisa que deseja segundo suas necessidades e pensei no seguinte:
Coloquei um combobox onde o preenchi com todas as tabelas do meu banco, para isso usei o seguinte codigo no Evento DropDown:

try
with Sender as TComboBox do
if Items.Count < 1 then
ADOConection.GetTableNames(Items);
except
{ Eat any exceptions so the combobox doesn´t paint funny }
end;

O aplicativo roida legal e as tabelas são carregadas no combo, agora eu gostaria que ao selecionar uma tabela neste combo fosse carregada no combobox2 todos os campos desta tabela, o problema é que não posso especificar uma determinada adoquery pois o usuario pode selecionar a tabela que quiser, alguem saberia como fazer isso?
Uso a paleta ado do delphi 7
Obrigada
Flavinha


Flavia_mococa

Flavia_mococa

Curtidas 0

Respostas

Reginaldo174

Reginaldo174

02/07/2004

procedure TForm1.Button1Click(Sender: TObject);
begin
WITH ADOQuery1 DO
BEGIN
CLOSE;
SQL.Clear;
SQL.Add(´SELECT * FROM ´+ComboBox1.Text);
OPEN;
END;

end;


GOSTEI 0
Flavia_mococa

Flavia_mococa

02/07/2004

Eu nao quero que seja carregado os registros da tabela e sim o nome dos campos, por exemplo: tenho uma tabela chamada forn etem os campos: cod, fornecedor, cpf, rg
eu gostaria que ao selecionar a tabela no combobox 1 aparece no combobox 2 o nome dos campos (cod, fornecedor, cpf, rg) e nao os registros da tabela...
Alguem sabe como fazer isso?


GOSTEI 0
Paulo_amorim

Paulo_amorim

02/07/2004

Olá

Imagino que deve existir uma forma direta de fazer isso, mas se não aparecer vocÊ pode dar um jeito

Quando ele escolher a tabela, vc cria a query
SELECT * FROM <tabela escolhida>

Query1.Open;

for i := 0 to Query1.Fields.Count-1 do
ComboBox2.Item.Add( Query1.Fields[i].Name );


Espero que ajude
Até+


GOSTEI 0
Flavia_mococa

Flavia_mococa

02/07/2004

Olá, pode me explicar melhor como fazer isso (criar uma query em tempo de execução)? :oops:
Obrigada
Flavinha


GOSTEI 0
Reginaldo174

Reginaldo174

02/07/2004

AGORA SIM. JÁ TESTEI E TÁ FUNCIONANDO. O QUE VC QUER MAIS ???

procedure TForm1.Button1Click(Sender: TObject);
var
i :integer;
begin
WITH ADOQuery1 DO
BEGIN
CLOSE;
SQL.Clear;
SQL.Add(´SELECT * FROM ´+ComboBox1.Text);
OPEN;
END;

for i := 0 to ADOQuery1.Fields.Count-1 do
ComboBox2.Items.Add( ADOQuery1.Fields[i].FieldName );


end;


GOSTEI 0
Paulo_amorim

Paulo_amorim

02/07/2004

Olá

Só inserindo BBCode pra ficar mais claro...

procedure TForm1.Button1Click(Sender: TObject);
var i :integer;
begin
with ADOQuery1 do
begin
  try
    Close;
    SQL.Clear;
    SQL.Add(´SELECT * FROM ´ + ComboBox1.Text);
    Open;
  except
     ShowMessage(´Erro ao exibir campos´);
  end;
  for i := 0 to Fields.Count-1 do
    ComboBox2.Items.Add( Fields[i].FieldName ); 
end;



GOSTEI 0
Paulo_amorim

Paulo_amorim

02/07/2004

:x :x :x :x Esqueci do ultimo [i:16740430f7]end;[/i:16740430f7]

Agora sim :D


GOSTEI 0
Flavia_mococa

Flavia_mococa

02/07/2004

No inicio eu me confundi um pouquinho com este cidigo, porem agora entendi, testei e funcionou perfeitamente, Obrigada.
Muito obrigada mesmo
Flavinha


GOSTEI 0
POSTAR