С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 70

Treeview для базы данных

27.07.2014, 13:24. Показов 3172. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток, понимаю, что тема избита, но не могу толком разобраться мне нужно отобразить в treeview delphi все таблицы из бд access, получилось открыть только одну, самую верхнюю в иерархии, а как сделать чтоб отображались и остальные данные, заранее благодарен, код выкладываю ниже.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
type
 PItemData=record
      Index: integer;
end;
...
procedure TForm3.FormShow(Sender: TObject);
var
 tNew: TTreeNode;
 idItem: PItemData;
 i: integer;
begin
   TreeView1.Items.Clear;
   AdoTable1.Active:= true;
   AdoTable1.First;
   while AdoTable1.Eof<>true do
     begin
         tNew:=nil;
         If AdoTable1.Fields[2].Asstring<>' ' then
           for i:= 0 to TreeView1.Items.Count-1 do
             If PItemData(TreeView1.Items[i].Data).Index=AdoTable1.Fields[2].Asinteger then
                 tNew:=TreeView1.Items[i];
          with TreeView1.Items.AddChildObject(tNew, AdoTable1.Fields[1].AsString,nil)
          do Tag := AdoTable1.Fields[0].AsInteger;
          //TreeView1.Items.AddChildObject(tNew, AdoTable1.Fields[1].AsString, );
      AdoTable1.Next;
     end;
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.07.2014, 13:24
Ответы с готовыми решениями:

Treeview, из базы данных ADO!
3-ий день голову ломаю не могу сообразить, дело в том что необходимо что бы дерево создавалось из базы данных путем перебора каждой записи...

Вывод данных с базы данных в TreeView
Здравствуйте! Помогите разобраться и подкорректировать код, вывожу данные с БД в TreeView , по нажатию на выбранную категорию происходит...

Создать приложение с использованием компонентов TreeView и ListView данные взять из базы данных
Создать приложение с использованием компонентов TreeView и ListView отобразить список групп товаров. В ListView отобразить список товаров...

7
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
28.07.2014, 10:11
Цитата Сообщение от Мстом Посмотреть сообщение
TreeView1.Items.AddChildObject
а почему не просто add?
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,505
28.07.2014, 10:56
а что не получается? точно так же как для ADOTable1 сделать и для остальных таблиц, т.е. в "корень" дерева добавить название таблицы, а в дочерние Nodes этого узла содержание таблицы.
0
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 70
30.07.2014, 18:57  [ТС]
у меня сложная иерархия, я могу выложить БД, чтоб было понятно, в основном используются связи один ко многим и идентификаторы, просто нужно чтобы в treeview отображалась вся база с дочерними соответствсенно связями
Вложения
Тип файла: zip kdb.zip (32.6 Кб, 55 просмотров)
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
31.07.2014, 10:05
Лучший ответ Сообщение было отмечено Мстом как решение

Решение

Взглянем на базу.
Есть 4 таблицы (fio_kl, fio_f, fio_m и siblings), которые имеют абсолютно одинаковую структуру.
Вопрос. Зачем нужно иметь четыре одинаковых таблицы?
Это не принято в цивилизованном обществе разработчиков БД.
Проблемы различия "кто есть кто" в одной такой таблице не существует, т.к. по ссылке в таблице client: сам клиент, мать, отец или родственник однозначно идентифицируется в объединенной таблице по полю Код.

Имя поля id не позволяет понять к какой таблице эта ссылка относится.
Обычно имена полям-ссылкам дают более понятные: КодМатери, КодКлиента, КодГруппы (или IDMather, IDFather, IDClient) и т.п.

Не стоит смешивать латинские и русские имена полей/таблиц (самому потом при работе в Дельфи не понравится).

Во всех таблицах есть поле id, но в одних оно ссылается на другую таблицу, в других нет.
Зачем они тогда нужны, если не задействованы?

В общем, структуру базы нужно привести в нормальное состояние (можно почитать про нормальные формы БД, это так, на всякий случай). И потом уже пытаться с ней что-то делать.

По вопросу темы. Непонятна задача. Схема данных в Аксессе никакой ясности не приносит.
Нужен пример ветки или пары веток дерева, чтобы было понятно чего автор хочет отобразить в дереве.

Кстати, сами по себе связи в Аксессе будут только мешать и схему эту из БД надо удалить.
Или держать схему в копии базы для того чтобы самому разработчику понимать что с чем логически связано.
Хотя бы потому, что имя id несет мало информации.
1
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 70
31.07.2014, 10:24  [ТС]
Посмотрите пожалуйста другую, структуру, которая была изначально, то что я выставил в предыдущий раз была одобрена учителем в курсовой))), а пример ветки такой нужно чтобы отображала база к которой относиться группа к которой относиться клиент(СК-> малообеспеченные-> Иванов( и тут должна быть вся информация по нему), сейчас скину скриншот рабочей программы но в виде трёх dbgrid их надо объединить в один treeview
Миниатюры
Treeview для базы данных  
Вложения
Тип файла: zip kdb.zip (30.8 Кб, 35 просмотров)
0
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 70
12.08.2014, 11:44  [ТС]
попробовал по другому, связи в таблице не отображаются подскажите как быть
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: integer;
  Node: TTreeNode;
begin
  output := ADOTables(ADOConnection1, [ttTable, ttView, ttSynonym]);
  for i := Low(output) to High(output) do
    begin
      Node := TreeView1.Items.Add(TreeView1.Selected, output[i].ItemName);
      SetNodeState(Node, TVIS_BOLD or TVIS_CUT);
      ADOTable1.Connection := ADOConnection1;
      ADOTable1.TableName := output[i].ItemName;
      ADOTable1.Active := true;
      for j := 1 to ADOTable1.FieldCount do
        TreeView1.Items.AddChildObject(Node,
          ADOTable1.Fields.FieldByNumber(j).DisplayText);
      ADOTable1.Active := false;
    end;
end;
В результате выводятся все таблицы, со значением первой строки, ни остальных строк, ни связей между ними нет
0
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 70
12.08.2014, 13:01  [ТС]
вот новая база данных
Вложения
Тип файла: zip book.zip (45.6 Кб, 65 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.08.2014, 13:01
Помогаю со студенческими работами здесь

При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных (8961)
При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных (8961) Код программы такой unit...

Связать TreeView с базой данных Access / Delphi для начинающих
Здравствуйте, уважаемые! Есть база Access, программа подключается к ней. В базе две таблицы: с ноутбуками и телефонами. На форме...

Есть ли способ связать Grid базы данных с TreeView?
subj.

Treeview из базы данных
Добрый день прошу помощи. Пишу прогу RadStudio10 SQL=&gt;ADOconnection=&gt;ADOquery=&gt;Datasoure. Можете подсказать как с двух таблиц загрузить...

Treeview и базы данных
Где можно найти уроки с примерами исходного кода по работе с treeview и базами данных без установки сервера баз данных (используем базы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru