|
Вопрос # 181/ вопрос открыт / |
|
Как возможно таблицу БД представить в виде дерева с возможностями модификации данных? Как просто сделать дерево понятно.
 |
Вопрос задала: Наташа (статус: Посетитель)
Вопрос отправлен: 30 ноября 2006, 14:59
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Помфюк Владимир Степанович
Здравствуйте, Наташа!
Дерево можно сделать в двух случаях:
1)есть серия таблиц которые ссылаются друг на друга (Задача->Работник->Отдел)
2)есть набор данных с полями, которые можно сгрупировать(select City, Department, FIO, ID from workers order by 1,2,3)
Рисовать дерево надо перебирая в данные цикле (или вложеных циклах). При создании каждого TreeNode в его свойство Data (тип - Pointer) надо занести указатель на record в который стоит записать начальное значение и условие которое идентифицирует запись (группу записей) и, при необходимости, таблицу. Тогда в событии OnEdited Вы легко сможете написать SQL-запрос обновления таблицы.
Еще: на OnDeletion всем этим датам надо сделать dispose.
Приложение: Переключить в обычный режим- TRecData=record
- InitialVal:String;
- WhereCond:String;
- end;
- PRecData=^TRecData;
- ............................
-
- procedure PaintTree;
- var
- NodeData:PRecData;
- .........................
- begin
- ......................
- NewNode:=TreeView.Nodes.AddChild(PrevNode,qryWorkerDepartment.asString);
- new(NodeData);
- NodeData.InitialVal:=qryWorkerDepartment.asString;
- NodeData.WhereCond:='DEPARTMENT='''+qryWorkerDepartment.asString+'''';
- NewNode.Data:=NodeData;
- ......................
- end;
-
- procedure TfrMy.TreeViewDeletion(Sender: TObject;
- Node: TTreeNode);
- var
- Data:PRecData;
- begin
- Data:=Node.Data;
- if Data<>nil Then dispose(Data);
- end;
-
Ответ #2. Отвечает эксперт: Alex Van Glukhman
Здравствуйте, Наташа!
Создать структуру дерева в зависимости от того что должно появиться в представлении например варианты
1.имя таблицы - поля - значения
2.имя таблицы - номер записи - значения полей
и т.д.
А далее структурой
Tbl.first;
while not Tbl.eof do
begin
...
//Переносим значения таблицы в TTreeView у каждого
//TreeViewItem есть свойство Text
...
Tbl.next
end;
 |
Ответ отправил: Alex Van Glukhman (статус: 7-ой класс)
Время отправки: 30 ноября 2006, 16:39
Оценка за ответ: 5
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|