|
|
|
|
| http://hiprog.com/index.php?option=com_content&task=view&id=690 | |
|
| |
|
|
|
| спасибо, попробую разобратся, но что-то сложный код как мне кажется | |
|
| |
|
|
|
| сама связь простая
в форме создается поля которое обновляется на событие Treeview (какое точно событие не помню), и принимает значение кода выбранного узла
это поле используется как мастер поле для подчиненной формы | |
|
| |
|
|
|
| как получить и вывести код узла понятно, но как это связать с подчиненной, ведь там у меня есть ID и оно не будет совпадать с кодом узла | |
|
| |
|
|
|
|
| т.к. код узда меняется, при внесени нового или удалении. самый верхний 1(дерево стоится по алфавиту) , а внести я его мог последним т.е. id будет 50 | |
|
| |
|
|
|
| код узла в дереве должен коррелировать со значением ключевого поля таблицы по которой он строится | |
|
| |
|
14 Кб. |
|
| коррелировать т.е. изменятся со значение в таблице Правильно?
но как это сделать не понимаю.
в примере ( http://hiprog.com/index.php?option=com_content&task=view&id=690)
оч много переменных я в них потерялся | |
|
| |
|
|
|
| >>> оч много переменных я в них потерялся
http://hiprog.com/forum/read.php?id_forum=2&id_theme=8515&page=1 | |
|
| |
|
|
|
| кто-нибудь может обьяснить, мне бестолковому, как это сделать. честно читал, смотрел примеры, ну не понимаю (а хочется понять). | |
|
| |
|
63 Кб. |
|
| на основании вот этого
http://hiprog.com/forum/read.php?id_forum=1&id_theme=3706&page=1
сделал пример.
Смотрите, что непонятно спрашивайте здесь | |
|
| |
|
|
|
|
| Низкий поклон тебе osmor !!! | |
|
| |
|
|
|
| Доброго времени суток! Обращаюсь с подобной проблемой. Есть дерево, есть подчиненная форма-таблица и есть поле, в котором высвечивается АйДи узла дерева. Но сама таблица не связывается с деревом, как быть, подскажите, пожалуйста! Все сроки горят. | |
|
| |
|
|
|
| Вы скачали мой пример ?
что конкретно не понятно? | |
|
| |
|
30 Кб. |
|
| не понятно как сортируются записи в подчиненной форме относительно тривью.
вот мой код нод клик:
Private Sub ctltvwZavod_NodeClick(ByVal Node As Object)
Me.Отдел = Replace(Node.Key, "_", "")
Me.Form.Requery
Me.Сотрудники.Requery
End Sub
|
по клику на узле в поле ОТДЕЛ отображается АйДи узла, а связи с таблицей (подформой) нет. Как сделать? Я не понимаю, пример смотрела. | |
|
| |
|
|
|
| о клику на узле в поле ОТДЕЛ отображается АйДи узла, а связи с таблицей (подформой) нет
|
В свойствах подформы нужно указать поле с "АйДи" узла в качестве основного, а поле подчиненной формы с кодом отбора как подчиненное | |
|
| |
|
16 Кб. |
|
| как это понять? | |
|
| |
|
|
|
| Все работает!! Спасибище огромное за помощь!!! | |
|
| |
|
26 Кб. |
|
| Первый раз вижу дерево через рекордсет. Спасибо за пример. Хоть немного прояснилось это дерево. Однако, сделал по аналогии со 2 уровнем. Что за хрень выдает при нажатии на 3 кнопку? Чего ему не так?
Общее торможение работы дерева видимо из-за рекордсета. | |
|
| |
|
57 Кб. |
|
| не очень понял почему жанр привязан к автору а не книге
а по существу "чего ему не так" ==>>> | |
|
| |
|
|
|
| Возможно это из-за строки
Call Me.TreeView0.Nodes.Add("A" & ![КодАвтора], 4, "N" & ![КодПроизведения], ![Название]) 'добавляем узел
Первоначально пытался так:
Call Me.TreeView0.Nodes.Add("J" & ![КодЖанра], 4, "A" & ![КодАвтора], ![Автор], 4, "N" & ![КодПроизведения], ![Название])
Не работает. | |
|
| |
|
|
|
| у меня все отработло - стоило только добавить автора в таблицу книги :) | |
|
| |
|
|
|
| Разобрался. Только пришлось разделить поля. КодАвтора отдельно числовым. Теперь все работает.
Сейчас вот занимаюсь доработкой этого примера. Что бы отрабатывали и 1 и 3 вложения. Похоже надо отрывать подчиненную таблицу от привязки к полю или просто менять источник строк.
Разбируся может быть. | |
|
| |
|
|
|
| Народ, подскажите тупому. Как сделать так, что бы при добавлении записи в форме, оно автоматически отображалась в этом TreeView
Тут немного код изменил. Дерево формируется при открытии. Делал форму1 для добавления инфы с закрытием основной. Потом при закрытии формы для добавления открывалась основная. Тогда все получается. Но это все как-то через ж..
Пробовал обновить дерево, но это бред.
Для добавления инфы в 1 уровень - поле12 В таблу добавляет, а в дереве не отображает и не перезапустить рекордсет. В общем сплошная хрень. В общем по простому что можно сделать?
| |
|
| |
|
|
|
| Так тут сложного вроде как не должно быть:
...при добавлении записи в форме...
Подпишись на событие, при возникновении добавляй узел. | |
|
| |
|
|
|
| Подпишись на событие, при возникновении добавляй узел.
Инфу добавляю запросом на добавление. А дальше что? Запускал рекордсет для обновления как при открытии, так он ругается: Key is not unique in collection
И так пробовал: Call Me.TreeView0.Nodes.Add(, , "a" & ![КодЖанра], ![Жанр])
Да чего только не было. Не хочет.
И как на событие подписаться? | |
|
| |
|
|
|
|
...Инфу добавляю запросом на добавление...
|
Ну тогда сразу после выполнения запроса проверяй, не было ли ошибки, и добавляй узел.
Запускал рекордсет для обновления как при открытии, так он ругается: Key is not unique in collection...
|
Коллекцию нодов очистить нужно перед повторной полной заливкой. | |
|
| |
|
|
|
| Вот! Запрос выполняется без ошибок и все добавляет. Для отображения в дереве новой инфы - вопрос. Много примеров просмотрел, там черт ногу сломит. А все должно быть проще как в данном примере осмора.
Что надежнее будет. Тупо добавить узел?
или
Очистить коллекцию нодов и снова залить при каждом добавлении или удалении инфы?
Делаю так
Call Me.TreeView0.Nodes.Add(, , "a" & Me.Поле12, Me.Поле12) 'добавляем узел
Me.Form.Refresh
А правильно ли это? Вроде работает не хило. | |
|
| |
|
|
|
|
Что надежнее будет. Тупо добавить узел?
или
Очистить коллекцию нодов и снова залить при каждом добавлении или удалении инфы?
|
Если делать "тупо", о надежности можно забыть вооПще. :)
Делать все надо осознанно, понимая суть происходящего.
С добавлением просто - добавить новый нод без полного построения дерева.
С удалением сложнее:
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 | |
|
| |
|
|
|
| Да так-то понятно, что совсем уж тупо не стоит. Узел добавляю после добавления инфы в таблицу. С этим разобрался. Удалять тоже стоит только после удаления из таблиц. (Связаный таблиц)
Но проблема в том, что получается добавлять только узел первого уровня, а во второй - не хочет. Примеров куча, поисковик дал. А все как-то недорассказано. Проблема с добавлением узла во второй уровень
В данном примере добавил поле14 для добавки инфы во 2-ю таблицу (Автор) запросом. Это добавляет. А вот с узлом проблема.
Call Me.TreeView0.Nodes.Add("a", 4, "b" & Me.Поле14, Me.Поле14)
Чего не так? Всякие варианты перепробовал. Как указать в какой из первых узлов добавлять подузел? | |
|
| |
|
|
|
| Здесь доступно описано:
http://www.hot.ee/jurisfox/vfpplus/ax_treeview_03_ru.htm | |
|
| |
|
|
|
| Вот за такую ссылку спасибо. То что надо. Ща натворю.
И буду разбираться. | |
|
| |