powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Коллеги, подскажите, что делаю не так TreeView VBA
8 сообщений из 8, страница 1 из 1
Коллеги, подскажите, что делаю не так TreeView VBA
    #35719190
Nektov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю примерно следующее. Есть рекордсет (rs) и есть TreeView контрол (tv). Использую рекурсию для построения всего дерева, в функцию передается iParentID, который для корневого элемента равен 0.

когда пробую добавить в него элемент следующим способом:
Код: plaintext
set nd = tv.nodes.add( , ,"t1","SomeText")
Добавляет
Когда пробую добавить в него элемент из записи рекордсета
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
if iParentID =  0  then
   strParentID = ""
   iChild = ""
else
   strParentID = "t" & rs![ID]
   iChild = tvwChild
endif

set nd = tv.nodes.add(strParentID, iChild, "t" & rs![ID], rs![Name])
На корневом же элементе вылетает ошибка "35603. Invalid key".
Но тогда чем отличается первый вариант от второго?
...
Рейтинг: 0 / 0
Коллеги, подскажите, что делаю не так TreeView VBA
    #35719227
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем, что параметр, равный пустой строке, не тоже самое, что отсутствие параметра.
...
Рейтинг: 0 / 0
Коллеги, подскажите, что делаю не так TreeView VBA
    #35719237
Nektov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
А можно как-то с этим справиться, чтобы не писать один и тот же код 2 раза?
...
Рейтинг: 0 / 0
Коллеги, подскажите, что делаю не так TreeView VBA
    #35719291
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
if iParentID =  0  then
   set nd = tv.nodes.add(, , "t" & rs![ID], rs![Name])
else
   strParentID = "t" & rs![ID]
   iChild = tvwChild
   set nd = tv.nodes.add(strParentID, iChild, "t" & rs![ID], rs![Name])
endif
...
Рейтинг: 0 / 0
Коллеги, подскажите, что делаю не так TreeView VBA
    #35719312
Nektov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Спасибо, вы правы.
...
Рейтинг: 0 / 0
Коллеги, подскажите, что делаю не так TreeView VBA
    #35799153
Sergiol72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, добрый день.

имеется цикл заполнения TreeView1:

Код: plaintext
1.
2.
3.
4.
For a =  0  To UBound(obj,  2 )
        ...
        Set nodx = TreeView1.Nodes.Add(obj( 2 , a), tvwChild, obj( 3 , a), obj( 3 , a))
        ...
Next a

Проблема в том, что если ключ obj(3, a) уже есть (в другой ветви obj(2, a)!!!), возникает ошибка: "Run-Time Error 35072 - Key is not unique in collection".

пример:
Что делать, если нужно отобразить в дереве так:

Код: plaintext
1.
2.
3.
4.
Russia------,
            Saint-Petersburg

USA---------,
            Saint-Petersburg



спасибо.
...
Рейтинг: 0 / 0
Коллеги, подскажите, что делаю не так TreeView VBA
    #35799162
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergiol72,
используйте составной ключ, например obj(3, a)+obj(2, a)
...
Рейтинг: 0 / 0
Коллеги, подскажите, что делаю не так TreeView VBA
    #35799203
Sergiol72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-duke,

спасибище большущее, получилось.

Код: plaintext
1.
2.
3.
4.
For a =  0  To UBound(obj,  2 )
        ...
        Set nodx = TreeView1.Nodes.Add(obj( 2 , a), tvwChild, obj( 3 , a)+obj( 2 , a), obj( 3 , a))
        ...
Next a
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Коллеги, подскажите, что делаю не так TreeView VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]