Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как связать TreeView с подчиненой формой?
 
 автор: Мишок   (24.01.2011 в 16:10)   личное сообщение
 
 

Здравствуйте вновь прошу помощи.
создал и заселил TreeView , но вот проблема как связывать с подчинеными фрмами.

  Ответить  
 
 автор: osmor   (24.01.2011 в 17:19)   личное сообщение
 
 

http://hiprog.com/index.php?option=com_content&task=view&id=690

  Ответить  
 
 автор: Мишок   (24.01.2011 в 17:28)   личное сообщение
 
 

спасибо, попробую разобратся, но что-то сложный код как мне кажется

  Ответить  
 
 автор: osmor   (24.01.2011 в 17:32)   личное сообщение
 
 

сама связь простая
в форме создается поля которое обновляется на событие Treeview (какое точно событие не помню), и принимает значение кода выбранного узла
это поле используется как мастер поле для подчиненной формы

  Ответить  
 
 автор: Мишок   (24.01.2011 в 17:40)   личное сообщение
 
 

как получить и вывести код узла понятно, но как это связать с подчиненной, ведь там у меня есть ID и оно не будет совпадать с кодом узла

  Ответить  
 
 автор: osmor   (24.01.2011 в 17:45)   личное сообщение
 
 

почему?

  Ответить  
 
 автор: Мишок   (24.01.2011 в 17:50)   личное сообщение
 
 

т.к. код узда меняется, при внесени нового или удалении. самый верхний 1(дерево стоится по алфавиту) , а внести я его мог последним т.е. id будет 50

  Ответить  
 
 автор: osmor   (24.01.2011 в 17:54)   личное сообщение
 
 

код узла в дереве должен коррелировать со значением ключевого поля таблицы по которой он строится

  Ответить  
 
 автор: Мишок   (24.01.2011 в 18:01)   личное сообщение
14 Кб.
 
 

коррелировать т.е. изменятся со значение в таблице Правильно?
но как это сделать не понимаю.
в примере ( http://hiprog.com/index.php?option=com_content&task=view&id=690)
оч много переменных я в них потерялся

  Ответить  
 
 автор: Explorer   (24.01.2011 в 20:39)   личное сообщение
 
 

>>> оч много переменных я в них потерялся

http://hiprog.com/forum/read.php?id_forum=2&id_theme=8515&page=1

  Ответить  
 
 автор: Мишок   (25.01.2011 в 13:06)   личное сообщение
 
 

кто-нибудь может обьяснить, мне бестолковому, как это сделать. честно читал, смотрел примеры, ну не понимаю (а хочется понять).

  Ответить  
 
 автор: osmor   (25.01.2011 в 17:32)   личное сообщение
63 Кб.
 
 

на основании вот этого
http://hiprog.com/forum/read.php?id_forum=1&id_theme=3706&page=1
сделал пример.
Смотрите, что непонятно спрашивайте здесь

  Ответить  
 
 автор: Мишок   (25.01.2011 в 19:46)   личное сообщение
 
 

буду пробыат :)
Спасибо

  Ответить  
 
 автор: Мишок   (27.01.2011 в 11:48)   личное сообщение
 
 

Низкий поклон тебе osmor !!!

  Ответить  
 
 автор: Juletta   (28.02.2011 в 20:11)   личное сообщение
 
 

Доброго времени суток! Обращаюсь с подобной проблемой. Есть дерево, есть подчиненная форма-таблица и есть поле, в котором высвечивается АйДи узла дерева. Но сама таблица не связывается с деревом, как быть, подскажите, пожалуйста! Все сроки горят.

  Ответить  
 
 автор: osmor   (01.03.2011 в 17:09)   личное сообщение
 
 

Вы скачали мой пример ?
что конкретно не понятно?

  Ответить  
 
 автор: Juletta   (01.03.2011 в 17:32)   личное сообщение
30 Кб.
 
 

не понятно как сортируются записи в подчиненной форме относительно тривью.
вот мой код нод клик:


Private Sub ctltvwZavod_NodeClick(ByVal Node As Object)
Me.Отдел = Replace(Node.Key, "_", "")
Me.Form.Requery
Me.Сотрудники.Requery
End Sub


по клику на узле в поле ОТДЕЛ отображается АйДи узла, а связи с таблицей (подформой) нет. Как сделать? Я не понимаю, пример смотрела.

  Ответить  
 
 автор: osmor   (02.03.2011 в 08:01)   личное сообщение
 
 

о клику на узле в поле ОТДЕЛ отображается АйДи узла, а связи с таблицей (подформой) нет


В свойствах подформы нужно указать поле с "АйДи" узла в качестве основного, а поле подчиненной формы с кодом отбора как подчиненное

  Ответить  
 
 автор: Juletta   (02.03.2011 в 11:04)   личное сообщение
16 Кб.
 
 

как это понять?

  Ответить  
 
 автор: Juletta   (02.03.2011 в 15:52)   личное сообщение
 
 

Все работает!! Спасибище огромное за помощь!!!

  Ответить  
 
 автор: Гоблин   (28.02.2011 в 23:45)   личное сообщение
26 Кб.
 
 

Первый раз вижу дерево через рекордсет. Спасибо за пример. Хоть немного прояснилось это дерево. Однако, сделал по аналогии со 2 уровнем. Что за хрень выдает при нажатии на 3 кнопку? Чего ему не так?
Общее торможение работы дерева видимо из-за рекордсета.

  Ответить  
 
 автор: Explorer   (01.03.2011 в 18:30)   личное сообщение
57 Кб.
 
 

не очень понял почему жанр привязан к автору а не книге

а по существу "чего ему не так" ==>>>

  Ответить  
 
 автор: Гоблин   (01.03.2011 в 21:18)   личное сообщение
 
 

Возможно это из-за строки

Call Me.TreeView0.Nodes.Add("A" & ![КодАвтора], 4, "N" & ![КодПроизведения], ![Название]) 'добавляем узел

Первоначально пытался так:
Call Me.TreeView0.Nodes.Add("J" & ![КодЖанра], 4, "A" & ![КодАвтора], ![Автор], 4, "N" & ![КодПроизведения], ![Название])

Не работает.

  Ответить  
 
 автор: Explorer   (01.03.2011 в 23:29)   личное сообщение
 
 

у меня все отработло - стоило только добавить автора в таблицу книги :)

  Ответить  
 
 автор: Гоблин   (02.03.2011 в 10:12)   личное сообщение
 
 

Разобрался. Только пришлось разделить поля. КодАвтора отдельно числовым. Теперь все работает.
Сейчас вот занимаюсь доработкой этого примера. Что бы отрабатывали и 1 и 3 вложения. Похоже надо отрывать подчиненную таблицу от привязки к полю или просто менять источник строк.
Разбируся может быть.

  Ответить  
 
 автор: Гоблин   (06.03.2011 в 20:46)   личное сообщение
 
 

Народ, подскажите тупому. Как сделать так, что бы при добавлении записи в форме, оно автоматически отображалась в этом TreeView
Тут немного код изменил. Дерево формируется при открытии. Делал форму1 для добавления инфы с закрытием основной. Потом при закрытии формы для добавления открывалась основная. Тогда все получается. Но это все как-то через ж..
Пробовал обновить дерево, но это бред.
Для добавления инфы в 1 уровень - поле12 В таблу добавляет, а в дереве не отображает и не перезапустить рекордсет. В общем сплошная хрень. В общем по простому что можно сделать?

  Ответить  
 
 автор: Lukas   (06.03.2011 в 22:21)   личное сообщение
 
 

Так тут сложного вроде как не должно быть:
...при добавлении записи в форме...
Подпишись на событие, при возникновении добавляй узел.

  Ответить  
 
 автор: Гоблин   (06.03.2011 в 23:27)   личное сообщение
 
 

Подпишись на событие, при возникновении добавляй узел.

Инфу добавляю запросом на добавление. А дальше что? Запускал рекордсет для обновления как при открытии, так он ругается: Key is not unique in collection

И так пробовал: Call Me.TreeView0.Nodes.Add(, , "a" & ![КодЖанра], ![Жанр])
Да чего только не было. Не хочет.
И как на событие подписаться?

  Ответить  
 
 автор: Lukas   (07.03.2011 в 01:35)   личное сообщение
 
 


...Инфу добавляю запросом на добавление...


Ну тогда сразу после выполнения запроса проверяй, не было ли ошибки, и добавляй узел.


Запускал рекордсет для обновления как при открытии, так он ругается: Key is not unique in collection...


Коллекцию нодов очистить нужно перед повторной полной заливкой.

  Ответить  
 
 автор: Гоблин   (07.03.2011 в 14:54)   личное сообщение
 
 

Вот! Запрос выполняется без ошибок и все добавляет. Для отображения в дереве новой инфы - вопрос. Много примеров просмотрел, там черт ногу сломит. А все должно быть проще как в данном примере осмора.
Что надежнее будет. Тупо добавить узел?
или
Очистить коллекцию нодов и снова залить при каждом добавлении или удалении инфы?
Делаю так

Call Me.TreeView0.Nodes.Add(, , "a" & Me.Поле12, Me.Поле12) 'добавляем узел

Me.Form.Refresh

А правильно ли это? Вроде работает не хило.

  Ответить  
 
 автор: Lukas   (07.03.2011 в 17:18)   личное сообщение
 
 


Что надежнее будет. Тупо добавить узел?
или
Очистить коллекцию нодов и снова залить при каждом добавлении или удалении инфы?


Если делать "тупо", о надежности можно забыть вооПще. :)
Делать все надо осознанно, понимая суть происходящего.

С добавлением просто - добавить новый нод без полного построения дерева.
С удалением сложнее:
1. Если нод не имеет потомков - просто удалить.
2. Если нод имеет потомков - что делать с ними?

Если дерево предполагается слишком большим, то заливать можно постепенно,
сначала корень+1уровень. Далее, по мере раскрытия, подливаются нижние уровни.

Либо пользовать ADO SHAPE
http://support.microsoft.com/default.aspx?scid=http%3A%2F%2Fsupport.microsoft.com%2Fsupport%2Fkb%2Farticles%2FQ189%2F6%2F57.ASP&NoWebContent=1

  Ответить  
 
 автор: Гоблин   (07.03.2011 в 17:45)   личное сообщение
 
 

Да так-то понятно, что совсем уж тупо не стоит. Узел добавляю после добавления инфы в таблицу. С этим разобрался. Удалять тоже стоит только после удаления из таблиц. (Связаный таблиц)
Но проблема в том, что получается добавлять только узел первого уровня, а во второй - не хочет. Примеров куча, поисковик дал. А все как-то недорассказано. Проблема с добавлением узла во второй уровень
В данном примере добавил поле14 для добавки инфы во 2-ю таблицу (Автор) запросом. Это добавляет. А вот с узлом проблема.

Call Me.TreeView0.Nodes.Add("a", 4, "b" & Me.Поле14, Me.Поле14)
Чего не так? Всякие варианты перепробовал. Как указать в какой из первых узлов добавлять подузел?

  Ответить  
 
 автор: Lukas   (07.03.2011 в 17:51)   личное сообщение
 
 

Здесь доступно описано:
http://www.hot.ee/jurisfox/vfpplus/ax_treeview_03_ru.htm

  Ответить  
 
 автор: Гоблин   (07.03.2011 в 20:02)   личное сообщение
 
 

Вот за такую ссылку спасибо. То что надо. Ща натворю.

И буду разбираться.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList