![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Neivin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.10.2009 Репутация: нет Всего: нет |
Скачала из инета пример с древовидным списокм, под свою базу я его без проблем переделала, но хотелось бы еще и понять как он работает. Можете помочь? очень надо в пятницу предзащита.. была бы вам очень благодарна ))
Целиком базочку тоже прикрепила Option Compare Database Option Explicit Dim tab_1 As String, Kod_1 As String, Name_1 As String Dim tab_2 As String, Kod_2 As String, Name_2 As String Dim tab_3 As String, Kod_3 As String, Name_3 As String Dim tab_4 As String, Kod_4 As String Private Sub Form_Load() ' îáúÿâëÿåì êîíñòàíòû. Çäåñü íóæíî ïðîñòî ïðîïèñàòü èìåíà Âàøèõ òàáëèö è ïîëåé ' ó÷àñòâóþùèõ â çàïðîñå tab_1 = "tab_1" Kod_1 = "Kod_1" Name_1 = "Name_1" tab_2 = "tab_2" Kod_2 = "Kod_2" Name_2 = "Name_2" tab_3 = "tab_3" Kod_3 = "Kod_3" Name_3 = "Name_3" tab_4 = "tab_4" Kod_4 = "Kod_4" lst_TList.RowSource = "SELECT Kod_1 AS Kod, 'Level_1_' AS Levels, ('' & ChrW(9658) & ' ' & Name_1) AS NameL FROM tab_1" lst_TList.Selected(0) = True End Sub Sub LoadLevels() Dim kod As Long Dim Kod_2 As Long kod = lst_TList Select Case lst_TList.Column(1, lst_TList.ListIndex) Case "Level_1_back" lst_TList.RowSource = "SELECT Kod_1 AS Kod, 'Level_1_' AS Levels, ('' & ChrW(9658) & ' ' & Name_1) AS NameL FROM tab_1" Case "Level_1_", "Level_2_back" If lst_TList.Column(1, lst_TList.ListIndex) = "Level_2_back" Then kod = lst_TList.Column(0, 0) End If lst_TList.RowSource = "SELECT Kod_1 AS Kod, 'Level_1_back' AS Levels, ('' & ChrW(9660) & ' ' & Name_1) AS NameL FROM tab_1 WHERE (Kod_1=" & kod & ") " & _ "UNION SELECT Kod_2 AS Kod, 'Level_2_' AS Levels, (' ' & ChrW(9658) & ' ' & Name_2) AS NameL FROM tab_2 INNER JOIN tab_1 ON tab_2.Kod_1 = tab_1.Kod_1 WHERE (tab_2.Kod_1=" & kod & ") ORDER BY Levels, NameL;" Case "Level_2_" Kod_2 = lst_TList.Column(0, 0) lst_TList.RowSource = "SELECT Kod_1 AS Kod, 'Level_1_back' AS Levels, ('' & ChrW(9660) & ' ' & Name_1) AS NameL FROM tab_1 WHERE (Kod_1=" & Kod_2 & ") " & _ "UNION SELECT Kod_2 AS Kod, 'Level_2_back' AS Levels, (' ' & ChrW(9660) & ' ' & Name_2) AS NameL FROM tab_2 WHERE (Kod_2=" & kod & ") ORDER BY NameL " & _ "UNION SELECT Kod_3 AS Kod, 'Level_3_' AS Levels, (' - ' & Name_3) AS NameL FROM tab_3 INNER JOIN tab_2 ON tab_3.Kod_2 = tab_2.Kod_2 WHERE (tab_3.Kod_2=" & kod & ") ORDER BY Levels, NameL;" End Select End Sub Private Sub lst_TList_KeyDown(KeyCode As Integer, Shift As Integer) Dim LvlNum As Integer, Lvl As String Lvl = Nz(lst_TList.Column(1, lst_TList.ListIndex), "") If Lvl = "" Then LvlNum = 1 Else LvlNum = Val(Split(Lvl, "_")(1)) End If Select Case KeyCode Case vbKeyReturn 'Îòêðûâàåì/çàêðûâàåì ïîäâåòêó Call LoadLevels Case vbKeyBack 'Çàêðûâàåì ïîäâåòêó lst_TList.Selected(NumRow(LvlNum)) = True Call LoadLevels Case vbKeyLeft If Split(Lvl, "_")(2) = "back" Then 'Çàêðûâàåì âåòêó Call LoadLevels Else 'Óñòàíàâëèâàåì êóðñîð íà ðîäèòåëüñêóþ âåòêó LvlNum = NumRow(LvlNum) lst_TList.Selected(LvlNum) = True End If Case vbKeyRight If Split(Lvl, "_")(2) = "back" Then If lst_TList.ListCount > LvlNum Then 'Ïåðåõîä íà ïîäâåòêó lst_TList.Selected(LvlNum) = True End If Else 'Îòêðûâàåì ïîäâåòêó Call LoadLevels End If Case vbKeyHome 'Óñòàíàâëèâàåì êóðñîð íà ïåðâóþ âåòêó lst_TList.Selected(0) = True Case vbKeyEnd 'Óñòàíàâëèâàåì êóðñîð íà ïîñëåäíþþ âåòêó lst_TList.Selected(lst_TList.ListCount - 1) = True End Select End Sub Private Function NumRow(ByVal LvlNum As Integer) As Integer If LvlNum > 1 Then Do If lst_TList.Column(1, NumRow) = "Level_" & LvlNum - 1 & "_back" Then Exit Do End If NumRow = NumRow + 1 Loop End If End Function Private Sub lst_TList_DblClick(Cancel As Integer) Call LoadLevels End Sub Private Sub lst_TList_AfterUpdate() If Nz(lst_TList.Column(1, lst_TList.ListIndex), "") = "Level_3_" Then frm_subForm.Form.RecordSource = "SELECT * FROM tab_4 WHERE (Kod_3=" & lst_TList & ");" frm_subForm.Form.RecordsetType = 0 Else If frm_subForm.Form.RecordsetType = 0 Then frm_subForm.Form.RecordSource = "SELECT * FROM tab_4 WHERE (0=1)" frm_subForm.Form.RecordsetType = 2 End If End If End Sub Присоединённый файл ( Кол-во скачиваний: 7 )
db2_mdb.zip 41,25 Kb |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |