Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Коллеги, подскажите, что делаю не так TreeView VBA / 8 сообщений из 8, страница 1 из 1
17.12.2008, 10:47
    #35719190
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллеги, подскажите, что делаю не так TreeView VBA
Делаю примерно следующее. Есть рекордсет (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
17.12.2008, 11:01
    #35719227
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллеги, подскажите, что делаю не так TreeView VBA
Тем, что параметр, равный пустой строке, не тоже самое, что отсутствие параметра.
...
Рейтинг: 0 / 0
17.12.2008, 11:05
    #35719237
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллеги, подскажите, что делаю не так TreeView VBA
Antonariy,
А можно как-то с этим справиться, чтобы не писать один и тот же код 2 раза?
...
Рейтинг: 0 / 0
17.12.2008, 11:21
    #35719291
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллеги, подскажите, что делаю не так TreeView VBA
Код: 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
17.12.2008, 11:26
    #35719312
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллеги, подскажите, что делаю не так TreeView VBA
Antonariy,
Спасибо, вы правы.
...
Рейтинг: 0 / 0
05.02.2009, 14:09
    #35799153
Sergiol72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллеги, подскажите, что делаю не так TreeView VBA
Коллеги, добрый день.

имеется цикл заполнения 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
05.02.2009, 14:12
    #35799162
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллеги, подскажите, что делаю не так TreeView VBA
Sergiol72,
используйте составной ключ, например obj(3, a)+obj(2, a)
...
Рейтинг: 0 / 0
05.02.2009, 14:18
    #35799203
Sergiol72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллеги, подскажите, что делаю не так TreeView VBA
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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Коллеги, подскажите, что делаю не так TreeView VBA / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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