-
Здравствуйте! Я создал базу данных. Теперь мне необходимо вывести в TreeView базу данных SQl Server с которым я работаю вместе с таблицами. Чтобы при нажатии на базу в дереве раскрывались его таблицами. Пожалуйста помогите. Если можно с исходником
-
Не парься, а бери, к примеру: - Enterprise Manager для MSSQL; - IBExpert для Firebird; - Enterprise Manager Console для Oracle и т.д.
-
н-р, TADOConnection GetTableNames
-
-
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.
-
> Кайрат (30.11.10 09:04) [4]
Ну да, как-то так. Только я бы ещё ADOConnection1.GetTableNames(st, false) и ADOQuery1.Open в try..except обернул бы. И TADOQuery на TADODataSet заменил бы. И всё вот это Screen.Cursor := crHourGlass;
TreeView1.Items.BeginUpdate;
TreeView1.Items.Clear;
tnParent := TreeView1.Items.Add(nil, 'Корневой элемент');
tnParent.SelectedIndex := 0;
tnParent.ImageIndex := 0;
st := TStringList.Create; в разные try..finally обернул бы.
|