Fórum Listar tabelas e campos do banco no Treeview #374187
27/08/2009
0
Sou iniciante no Delphi e gostaria de ajuda para listar no treeview as tabelas e campos do Banco de Dados.
Uso o SQL Server e a conexão que fiz foi pelo componente ADO.
Alguém pode me ajudar, por favor?
Aguardo
Obrigada
Jaqque
Curtir tópico
+ 0Posts
27/08/2009
Djfabioninja
ADO é legal! O Componente ADO Connection tem uma propriedade chamada GetTableNames! Não costumo usar TreeView, mas para listar as tabelas em um ListBox por exemplo, é simples! Basta colocar:
connection1.GetTableNames(listbox1.Items,false); - onde ´listbox1.items´ é a lista e o ´false´ em seguida define se serão trazidas também as tabelas internas de sistema ou não!
Espero ter ajudado... qualquer coisa, msn: djfabioninja@hotmail.com
Gostei + 0
27/08/2009
Elip2008
procedure TForm1.Button1Click(Sender: TObject); var i: Integer; s: TStringList; begin try s := TStringList.Create; cnn.GetTableNames(s); for i := 0 to Pred(s.Count) do TreeView1.Items.Add(nil, s.Strings[i]); finally FreeAndNil(s); end; end;
Gostei + 0
27/08/2009
Elip2008
naum tinha visto que vc precisava dos campos tbm.
montei outro aqui, axo q vai funcionar blz..
var i, x: Integer; s, f: TStringList; t : TTreeNode; begin try s := TStringList.Create; cnn.GetTableNames(s); for i := 0 to Pred(s.Count) do begin t := TreeView1.Items.Add(nil, s.Strings[i]); try f := TStringList.Create; cnn.GetFieldNames(s.Strings[i], f); for x := 0 to Pred(f.Count) do begin TreeView1.Items.AddChild(t, f.Strings[x]); end; finally FreeAndNil(f); end; end; finally FreeAndNil(s); end; end;
kualker coisa eh soh postar ai
Gostei + 0
29/08/2009
Jaqque
Muito obrigada mesmo!
Funcionou!
Só mais uma dúdida...como eu faço para aparecer somente as tabelas do meu banco, descartando as views e funções?
Porque listou tudo...
Obrigada.
Gostei + 0
29/08/2009
Jaqque
Muito obrigada mesmo!
Funcionou!
Só mais uma dúdida...como eu faço para aparecer somente as tabelas do meu banco, descartando as views e funções?
Porque listou tudo...
Obrigada.
Gostei + 0
29/08/2009
Elip2008
Crie duas procedures no escopo Private:
private
{ Private declarations }
procedure habilitado(con: TADOConnection);
procedure pegarTabela(conexao: TADOConnection; Lista:TStrings);Aqui vai a implementacao das procedures:
procedure TForm1.habilitado(con: TADOConnection); begin if con.Connected then Exit; con.Open; if Assigned(con.ConnectionObject) then while (con.ConnectionObject.State = adStateConnecting) do DBApplication.ProcessMessages; end; procedure TForm1.pegarTabela(conexao: TADOConnection; Lista: TStrings); var TypeField, NameField: TField; TableType: string; DataSet: TADODataSet; begin habilitado(conexao); DataSet := TADODataSet.Create(nil); try conexao.OpenSchema(siTables, EmptyParam, EmptyParam, DataSet); TypeField := DataSet.FieldByName(´TABLE_TYPE´); NameField := DataSet.FieldByName(´TABLE_NAME´); Lista.BeginUpdate; try Lista.Clear; while not DataSet.Eof do begin TableType := TypeField.AsString; if (TableType = ´TABLE´) then Lista.Add(NameField.AsString); DataSet.Next; end; finally Lista.EndUpdate; end; finally DataSet.Free; end; end;
Com a criacao das procedures o codigo antes passado, deve ficar assim:
var i, x: Integer; s, f: TStringList; t : TTreeNode; begin try s := TStringList.Create; pegarTabela(cnn, s); for i := 0 to Pred(s.Count) do begin t := TreeView1.Items.Add(nil, s.Strings[i]); try f := TStringList.Create; cnn.GetFieldNames(s.Strings[i], f); for x := 0 to Pred(f.Count) do begin TreeView1.Items.AddChild(t, f.Strings[x]); end; finally FreeAndNil(f); end; end; finally FreeAndNil(s); end; end;
Teh+++, kualker coisa eh soh postar...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)