Pegar campos de uma tabela dinamicamente...

Delphi

10/08/2005

Olá,


Gostaria de saber se tem como eu pegar em tempo de execução os campos de uma determinada tabela de meu banco access.

obs: gostaria de pegar não só o nome do campo, mas seu tipo, valor padrão, etc....


desde já muito obrigado.


Balceiro

Balceiro

Curtidas 0

Respostas

Balceiro

Balceiro

10/08/2005

Gente será que ninguem se habilita a responder?


GOSTEI 0
L3gion4rio

L3gion4rio

10/08/2005

eu uso esse código para pegar os campos da tabela


var
i: integer;
begin
Combobox1.SetFocus;
for i:= 0 to DMDados.QryCliente.FieldCount-1 do
Combobox1.Items.Add(DMDados.QryCliente.Fields[i].FieldName);
for i:= 0 to DMDados.QryCliente.FieldCount-1 do
Combobox2.Items.Add(DMDados.QryCliente.Fields[i].FieldName);


GOSTEI 0
Balceiro

Balceiro

10/08/2005

obrigado, mas o que quero na verdade é pegar a estrutura dos campos...

será que alguém poderia me ajudar...


GOSTEI 0
Balceiro

Balceiro

10/08/2005

Será que estou sendo muito insistente ou ninguém sabe mesmo?


GOSTEI 0
Andremuller

Andremuller

10/08/2005

para qual banco de dados?
Generalizando você deve fazer uma pesquisa nas tabelas de sistema
ex.: no firebird nas tabelas rdb... e no sql server nas tabelas sys...


GOSTEI 0
Andremuller

Andremuller

10/08/2005

ops, desculpe, não vi que tu tinha postado que o banco era access.
Bom aí eu não sei, nunca usei access (e não pretendo usar)

Talvez seja algo parecido com o SQLServer onde tu pesquisa em tabelas como:
sysobjects
sysconstraints
syscolumns
systypes
(...)


GOSTEI 0
Balceiro

Balceiro

10/08/2005

Cara, estou precisando para access... como seria?


GOSTEI 0
Andremuller

Andremuller

10/08/2005

colega só pra não deixar de responder:

eu realmente nunca usei access.
Verifique se tu não cosegue alterar alguma opção para visualizar as tabelas de sistema. Nessas tabelas os bancos de dados armazenam as informações da base, incluíndo nome de tabelas, contraints, campos....
Para todos os bancos que conheço é assim, para access não deve ser diferente.

Desculpe se não te ajudei muito, mas é melhor do que não dizer nada.
Espero que resolva teu problema, mas eu não poderei te ajudar mais que isso.


GOSTEI 0
Balceiro

Balceiro

10/08/2005

Ok, até agora nada, parece que o interesse da comunidade no assunto, visto pelo número de views que este post está tendo, não é pequeno, mas até agora nada.

Será que não dá para fazer isso?


GOSTEI 0
Marco Salles

Marco Salles

10/08/2005

procedure TForm1.Button1Click(Sender: TObject);
var
 i:Integer;
begin
ListBox1.Clear;
For i:=0 to Table1.FieldCount -1 do
 begin
  ListBox1.Items.Add(´Nome : ´+Table1.fields[i].FieldName);
  ListBox1.Items.Add(´Classe : ´+Table1.fields[i].ClassName);
  ListBox1.Items.Add(´Size : ´+inttostr(Table1.Fields[i].Size));
 // ListBox1.Items.Add(´ ?´+(Table1.Fields[i].Veja outras Propreidades));
  ListBox1.Items.Add(´´);
end;
end;



GOSTEI 0
POSTAR