vectorrr2007

БД в виде дерева Treeview, Как привязать таблицу Понятия к веткам в дереве бд

04.03.2011, 14:07. Показов 4077. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте уважаемые гуру delphi! Не могли бы вы мне помочь с вот такой программкой:
Мне нужно отобразить содержимое базы данных Access виде дерева. Я взял для этого компонент Treeview. Подключаюсь к базе с помощью компонентов ADO. В приложенном файле скрин связей БД. Проблема - как мне привязать Понятия к Разделам в дереве - то есть чтобы дерево строилось корректно. В моем варианте это не получается - Понятия подключаются не к тем Разделам которые на самом деле фигурируют.


Фрагмент кода:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
procedure TForm1.RzToolButton1Click(Sender: TObject);
var
  kol1, kol2, kol3, i, j, n, q: integer;
  Nod, Nod1, Nodn: TTreeNode;
  st4, st1, st2, st3: string;
begin
  Screen.Cursor := crSQLWait;
  // очистить адресное пространство
  TreeView1.Items.Clear;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Text := 'select * from [Темы]';
  ADOQuery1.Open;
 
 
  kol1 := ADOQuery1.RecordCount;
  ADOQuery1.first;
  // ADOquery2.first;
  // Adoquery3.first;
  for n := 1 to kol1 do
  begin
    st1 := trim(ADOQuery1.FieldValues['Название темы']);
    Nod := TreeView1.Items.add(nil, st1);
    ADOQuery2.SQL.Clear;
    ADOQuery2.SQL.Text :=
      'SELECT Темы.[Название темы], Темы.[Номер Темы], Разделы.[Название раздела] FROM Темы INNER JOIN Разделы ON Темы.[Номер Темы] = Разделы.[Номер темы] where [Темы].[Номер темы] like ' + '"' + inttostr(n) + '"';
    ADOQuery2.Open;
    kol2 := ADOQuery2.RecordCount; // кол-во
    for j := 1 to kol2 do // perebor razdelov
    begin
      st2 := trim(ADOQuery2.FieldValues['Название раздела']);
      Nod1 := TreeView1.Items.Addchild(Nod, st2);
      ADOQuery3.SQL.Clear;
      st4:= 'SELECT Темы.[Номер Темы], Разделы.[Название раздела], Разделы.[Номер раздела], Понятия.[Понятие] FROM Темы INNER JOIN (Разделы INNER JOIN Понятия ON';
      Adoquery3.sql.text:=st4 +
      ' Разделы.[Номер раздела] = Понятия.[№ раздела]) ON Темы.[Номер Темы] = Разделы.[Номер темы] where [Темы].[Номер темы] like ' + '"' + inttostr(n) + '" and [Понятия].[№ раздела] like ' + '"' + inttostr(j) + '"';
      ADOQuery3.Open;
      kol3 := ADOQuery3.RecordCount; // кол-во
      for i := 1 to kol3 do
      begin                                              //
        st3 := trim(ADOQuery3.FieldValues['Понятие']);
        TreeView1.Items.Addchild(Nod1, st3);
        ADOQuery3.next;
      end;
 
      ADOQuery2.next;
 
    end;
 
    ADOQuery1.next;
  end;
 
  ADOQuery1.Close;
  ADoquery2.close;
  Adoquery3.close;
  Screen.Cursor := crArrow;
end;
Миниатюры
БД в виде дерева Treeview, Как привязать таблицу Понятия к веткам в дереве бд   БД в виде дерева Treeview, Как привязать таблицу Понятия к веткам в дереве бд   БД в виде дерева Treeview, Как привязать таблицу Понятия к веткам в дереве бд  

IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.03.2011, 14:07
Ответы с готовыми решениями:

Как привязать узлы заранее составленного дерева TreeView с определенными компонентами?
Как привязать узлы заранее составленного дерева TreeView с определенными компонентами (RichEdit, Webbrowser), чтобы при нажатии на узел...

Как пройти по всем веткам дерева?
задача на логику: есть некий обьект, внутренняя структура которого представлена как дерево, примерно тоже самое, что и файловая система....

Как пройтись по всем веткам TreeView циклом?
Цикл проходит только по узлам, а до конечных веток не доходит. Подскажите, пожалуйста, как сделать чтобы цикл доходил до веток? Код: ...

3
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
04.03.2011, 18:02
Недавно обсуждалось на форуме. Поищи!
Буквально десяток полтора постов вниз по списку!
1
vectorrr2007
04.03.2011, 21:33
Просмотрел пример с интуита, что там упоминался - принцип там тот же что и у меня в коде...
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
05.03.2011, 18:05
Цитата Сообщение от vectorrr2007 Посмотреть сообщение
принцип там тот же что и у меня в коде...
1. На этом принципе строил деревья много раз. Никаких проблем не было. Покопайся в своих текстах запросов. Они где-то некорректны (мое мнение).
Не надо в приводимых строках кода использовать такие длинные строки. Очень неудобно просматривать.
3. По какой высокой идее текст SQL заносите на этапе исполнения. Для чего это надо. Во сто крат удобнее заносить(прописывать) текст SQL в соответствующем свойстве объекта на этапе разработки и использовать запросы с параметрами. Это уменьшает количество ошибок и непоняток.
4. При построении циклов по наборам данных удобнее (мое мнение) вместо
Delphi
1
2
for n := 1 to kol1 do
......
использовать
Delphi
1
2
3
4
5
ADOQuery1.first;
while not ADOQuery1.Eof do begin
  <тело цикла>
  ADOQuery1.Next;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2011, 18:05
Помогаю со студенческими работами здесь

Отображение состава изделия в виде дерева TreeView
Приветствую форумчане! Вникаю в работу с TreeView есть несколько вопросов: В файле &quot;Структура Изделия Дерево&quot; в форме...

Опросник. Создание дерева зависимостей в treeView, сохранение дерева в XML, построение дерева в treeView из XML
Всем доброго времени суток. Тема является продолжением вот этой темы. Создаю 2ю, так как там был другой вопрос, который скорее...

Построение дерева - нужно вывести формулу хождения по веткам
Я не знаю в какой раздел написать эту задачку, так как она вообще из раздела программирования Программисты не догоняют тему, видимо...

Как отключить в treeView развёртывание дерева при двойном клике по элементу дерева
Как отключить в treeView развёртывание дерева, при двойном клике по элементу дерева. нужно чтобы разворачивалось и сворачивалась только...

Как привязать данные к TreeView
Нужно сделать так у меня две переменные которые ныжно привязать к дереву, когда на водят в дереве на надпись и кликают чтобы в текст...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru