-
Здравствуйте! Помогите пожалуйста, как мне добавить таблицы из базы данных Access в TreeView. Чтобы эти таблицы отображались на дереве
-
в обычном treeview есть addNode вроде. бывают dbTreeView еще.
-
Если требуется получить список таблиц базы, то можно использовать ADOConnection1.GetTableNames.
-
это что будет, свой построитель/менеджер базы? тогда не обойтись без OpenSchema (даже список таблиц лучше получать с "оригинала", т.к. там еще доп параметры есть... могут понадобится)
-
unit UDBTree;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, ComCtrls, ImgList, Grids, DBGrids;
type TForm1 = class(TForm) TreeView1: TTreeView; btTreeRefresh: TButton; ADOConnection1: TADOConnection; ImageList1: TImageList; ADOQuery1: TADOQuery; DataSource1: TDataSource; DBGrid1: TDBGrid; procedure btTreeRefreshClick(Sender: TObject); procedure TreeView1Changing(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean); private { Private declarations } tnParent : TTreeNode; // Корневой узел tnChilde : TTreeNode; // Узлы таблиц FTableName : string[30]; // Хранит уже выбранную таблицуу public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btTreeRefreshClick(Sender: TObject); var st : TStringList; i : Integer; begin Screen.Cursor := crHourGlass; TreeView1.Items.BeginUpdate; TreeView1.Items.Clear; tnParent := TreeView1.Items.Add(nil, 'Корневой элемент'); tnParent.SelectedIndex := 0; tnParent.ImageIndex := 0; st := TStringList.Create; ADOConnection1.GetTableNames(st, false); try for i := 0 to st.Count - 1 do begin tnChilde := TreeView1.Items.AddChild(tnParent, st.Strings[i]); tnChilde.SelectedIndex := 1; tnChilde.ImageIndex := 1; end; finally st.Free; TreeView1.Items.EndUpdate; Screen.Cursor := crDefault; end; end;
procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean); begin case Node.Level of 0 : Abort; 1 : begin if FTableName = Node.Text then Exit; FTableName := Node.Text; ADOQuery1.Close; ADOQuery1.SQL.Text := 'Select * ' + 'From ' + Node.Text; ADOQuery1.Open; end; end; end;
end.
|