• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Заполнение Treeview из запроса

  • Автор темы Ayria
  • Дата начала
A

Ayria

Здравствуйте, у меня вот какая проблема, мне надо заполнить дерево TreeView из запроса в с++ Builder 6
Сам запрос

Код:
select Главная_тема, Наименование, Текст
FROM Тема
GROUP BY Главная_тема, Наименование, Текст

группировка идет по Главная_тема, потому что значение этого поля может повторяться и сгруппировались значения по одинаков, и потом что бы значение этого поля шло как родительские, а вот значение поля "Наименования" шло дочерним от каждого поля Главная_тема соответственно

я думаю что наверно как то через Items надо будет, но я не знаю как правильно свойство прописать в скобках
TreeView1->Items->Add();
 
S

Sergei100

Приветствую.
Как всё запущено... Я пошел по такому пути и вовремя понял, что это ложный путь.
1) Надо правильно создать базу.
Таблица:
1.1__Главная_тема1
2.2___________Наименование1
3.3________________Текст1
4.3________________Текст2
...3________________Текст...
...2___________Наименование2
...3________________Текст1
...3________________Текст2
...3________________Текст...
...2__________Наименование...
...3_______________Текст1
...3_______________Текст2
...4_______________Текст...
...1__Главная_тема2
...1__Главная_тема...
Всё построено как в TreeView!

2) Вносим содеожимое таблицы (база) в двухмерный массив, например Array2(Ni, Njd), (основа для заполнения TreeView). Всё так же построено как и в дереве:

Array2(1, 1)=Главная_тема1; Array2(2, 1)=пробел; Array2(3, 1)=пробел;
Array2(1, 2)=пробел; Array2(2, 2)=Наименование; Array2(3, 2)=пробел;
Array2(1, 3)=пробел; Array2(2, 3)=пробел; Array2(3, 3)=Текст;

3) Дальше - считаем ноды...

Dim Array3() As String 'Создание одномерного массива дерева со значениями
ReDim Array3(1 To Ni)
Dim Array4() As String 'Создание одномерного массива дерева с нодом
ReDim Array4(1 To Ni)
For i = 1 To Ni
For j = 1 To Njd
If Array2(i, j) <> "" Then
Array3(i) = Array1(i, j)
If Array2(i, j) = -1 Then
Array4(i) = "" 'Поправка для заголовка "Главная_тема..."
End If
If Array2(i, j) > -1 Then
Array4(i) = Array2(i, j) 'Создание одномерного массива дерева с именем
End If
End If
Next j
Next i

4) Дальше - Загружаем TreeView1

For i = 1 To Ni
If Array4(i) = "" Then
UserForm1.TreeView1.Nodes.Add(, , "R." & (i - 1), Array3(i)).Expanded = False
End If
If Array4(i) <> "" Then
UserForm1.TreeView1.Nodes.Add("R." & Array4(i), tvwChild, "R." & (i - 1), Array3(i)).Expanded = False
End If
Next i

Вроде бы всё... Я так себе сделал - без проблем...
А далее воткнёшься в другую проблемку: как правильно редактировать базу через TreeView, как сделать это универсальной функцией, чтобы не загромождаться. Над этим я пока работаю, времени не хватает программировать - это не моё, я - технолог.
 
A

Ayria

я создала "конструктор", таблицу в приложении где все вносится, она связана с таблицей в базе, потом из этой таблицы идет выборка в дерево, так что мне редактирование таблицы через дерево не нужно, и не будет в этом проблемы
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!