Access
 sql >> база данни >  >> RDS >> Access

Контролен изглед на дървовиден изглед Маркирайте отметка Добавяне на изтриване на възли

Въведение.

В този епизод от урока за контрол на изгледа на дървото ще научим как да Добавяме/Изтриваме възли. Позицията на кандидатския елемент Добавяне/Изтриване ще бъде маркирана, където искаме да Add() новия възел или за Премахване() маркираният възел. Добавянето на възела може да бъде на същото ниво като маркирания възел или като дъщерен възел.

Урокът за TreeView Control до момента.

  1. Урок за контрол на Microsoft TreeView
  2. Създаване на меню за достъп с TreeView Control
  3. Присвояване на изображения към TreeView Control
  4. Присвояване на изображения към TreeView Control-2

Нормалният изглед на контролата за демонстрационен изглед на дърво на MS-Access формуляр, с други контроли, е даден по-долу.

Таблицата с данни за демонстрацията на TreeView Control.

Таблицата с името Проба, използвахме в първата учебна сесия, ще използваме и тук. Това е малка таблица със записи на базата данни на Access, структурата на контролите на таблица, формуляр и отчет, подредена в йерархичен ред и лесна за разбиране.

Идентификационният номер колона (Ключ Изглед на дърво ) е поле AutoNumber.

Новите посетители се актуализират за тази сесия на урока.

Ако не сте преминали през първата учебна сесия, тогава можете да изтеглите демонстрационната база данни от втората страница на сесията:Създаване на меню за достъп с контрола на дървовидния изглед. В тази база данни има таблица с име:Проба и формуляр frmSample . Можете да ги импортирате в текущата си база данни. Има и друга форма с името frmMenu там и можете да копирате командните бутони Разгъване на всички, Свиване на всички, и техния команден бутон Щракнете върху Процедури за събитие от frmMenu към frmSample Кодов модул за продължаване с тази сесия.

Както споменах по-рано, можем да споделим ImageList Control, с качените изображения в други проекти, ще направим копие на ImageList Control от последната сесия на урока и ще го донесем тук, с всички качени изображения, и ще го използваме на Контролни възли в дървовидния изглед на frmSample .

Импортиране на контрола ImageList с изображения.

Можете да въведете контролата ImageList, която вече имате, с качени изображения в друга база данни, по следните начини:

  1. Импортирайте формуляра с контролата ImageList в активната база данни, от базата данни, където имате контролата ImageList с ръчно качени изображения. Копирайте и поставете контролата ImageList във формуляра, където искате.

  2. Или първо копирайте контролата ImageList в клипборда от базата данни, където я имате. Ако сте изтеглили демонстрационната база данни от по-ранната сесия на урока, тогава вече имате контрола ImageList с качени изображения. Затворете базата данни, след като копирате контролата ImageList в клипборда.

  3. Отворете целевата база данни и отворете формуляра, където искате ImageList Control и го поставете във формуляра.

    Със следните кодови редове в CreateTreeView() Подпрограма можете да предадете препратката към обекта ImageList на контролата за изглед на дърво.

    Dim tv като MSComctlLib.TreeViewDim ImgList като MSComctlLib.ImageListSet tv =Me.TreeView0 .Objecttv.Nodes.ClearSet ImgList =Me.ImageList0 .Objecttv.ImageList =ImgList 

Променете маркираните имена на обекти в кода, ако са различни във формуляра.

След това можете да добавите имената на ключовете на изображението в TreeView Nodes.Add() последните два параметъра на метода.

Тези упражнения вече сме правили в предишните сесии. За да ви напомним, че използваме контролата за изглед на таблица и дърво, която създадохме в първата сесия на урока и приложихме с обяснените по-горе промени.

Показване на стойностите на свойствата на маркираните възли.

Избраният ключ на възел , Родителски ключ, и Текст Свойствата се показват в текстовите полета от дясната страна на контролата за изглед на дърво. Кутето за отметка с надпис:Дъщерски възел, Изтриване Възел, и Добавяне на възел Командните бутони са нови допълнения към формуляра. Техните функции ще бъдат обяснени след кратко.

Показване на квадратчета за отметка в контролата TreeView.

Обикновено квадратчето за отметка не се показва в контролата TreeView, освен ако не активираме свойство в листа със свойства на контрола за дървовиден изглед. Тук има само ограничена функционалност. Каквото и да правим тук, може да се направи и без квадратчето за отметка.

По-добър подход за използване на CheckBoxs може да бъде, като изготвянето на отчет за избрани клонове на бизнесите на Компанията, базиран на произволен избор на клонове, избирани от потребителя, от Access Project Menu.

Тук целта е да се запознае с тази функция и да се изпълни демонстрация на нейното използване.

  1. Отворете формуляра с контролата TreeView в Design View.
  2. Щракнете с десния бутон върху контролата TreeView, маркирайте обекта TreeCtrl , изберете Свойства опция за показване на листа със свойства.
  3. Поставете отметка в Кутчетата за отметка опция на контрола за свойства, както е показано на изображението, дадено по-долу.

Демонстрационното изображение на TreeView, дадено в горната част, Подробности.

Нека видим какво имаме в демонстрационния формуляр frmSample представени в горната част на тази страница. Контрола за изглед на дърво и горните два командни бутона, Разгъване на всички и Сгъване на всички, при Щракнете върху Разширява или свива възлите и ние видяхме функциите им в последния епизод.

От дясната страна има три текстови полета, под заглавния етикет:Стойности на свойства , за показване на маркирания Ключ на възел , ParentKey, и Текст Стойности.

Изтриване на възел Командният бутон премахва отбелязания възел или възела и неговите дъщерни възли.

Преди да изберете Командния бутон за добавяне на възел , Текст Стойността на свойството трябва да бъде редактирана, за да се замени с новата текстова стойност за новия възел.

Над Добавяне на възел Команден бутон, има Кутче за отметка с етикет Дъщерски възел. Добавяне на възел и Дъщерски възел Клетките за отметка работят заедно, за да зададат правилото за това къде трябва да се появи новият възел.

Разбиране на действието за добавяне на възел.

Да приемем, че искате да добавите нов възел за Хипервръзка поле под Полета група (или родителски възел) тип данни Списък. Вижте демонстрационното изображение, дадено в горната част на тази страница, където поставих отметка в Поле за дата Възел, наред с други дъщерни възли. Листовете със свойства от дясната страна показват неговия ключ:X15 , Родителски ключ:X4 &Текст:Поле за дата Описание.

Променете текста:Поле за дата към хипервръзка в текстовото поле на екрана на свойството и щракнете върху Добавяне на възел Команден бутон. Резултатът ще бъде както е показано по-долу:

Ако поставите отметка до Полетата родителски възел и поставете отметка в Дъщерски възел опция над Добавяне на възел Команден бутон, ще получите същия резултат.

Вместо това, ако запазите отметката за възел в Полето за дата и поставете отметката на Дъщерски възел опция над Добавяне на възел Команден бутон, ще получите резултата, както е показано по-долу.

Дъщерският възел ще бъде създаден под възела с отметка.

Действията за добавяне на възел трябва първо да създадат нов запис в основната таблица.

В Извадката се създава нов запис Таблица с новия текст:HyperLink и ParentID Стойности. Полето AutoNumber генерира ново число и ние го извличаме и го използваме като ключ-стойност за възела.

Кодът на подпрограмата за добавяне на възел на VBA е даден по-долу:

Private Sub cmdAdd_Click()Dim strKey As StringDim lngKey As LongDim strParentKey As StringDim lngParentkey As LongDim strText As StringDim lngID As LongDim strIDKey As StringDim childflag As StringDim childflag As StringDim childflag As IntegerDim As QaoDimD IntegerDim IntegerDimD. Като цяло число =0За всеки tmpnode В tv.Nodes Ако tmpnode.Checked Тогава tmpnode.Selected =True i =i + 1 End IfNextIf i> 1 Тогава MsgBox "Избрани възли:" &i &vbCr &"Изберете само един възел за маркиране на добавяне .", vbCritical, "cmdAdd()" Exit SubEnd If'Read Property Values ​​from FormstrKey =Trim(Me![TxtKey])lngKey =Val(Mid(strKey, 2))strParentKey =Trim(Me![TxtParent])lngKey =Val(Mid(strKey, 2))strParentKey =Trim(Me![TxtParent])lng. =IIf(Len(strParentKey)> 0, Val(Mid(strParentKey, 2)), 0)strText =Trim(Me![Text])'Опция за четене на дъщерен възел settingchildflag =Nz(Me.ChkChild.Value, 0)intflag =0strSql ="INSERT INTO Sample ([Desc], [ParentID] ) "Ако lngParentkey =0 и childflag =0, тогава 'Добавяне на възел на коренно ниво, ParentKey i s Празен strSql =strSql &"SELECT '" &strText &"' AS [Desc], '" &" " strSql =strSql &"' КАТО идентификатор на родител ОТ проба WHERE ((Sample.ID =1));" intflag =1ElseIf (lngParentkey>=0) И (childflag =True) След това 'Вмъква дъщерен възел към отбелязания с отметка възел, тук Ключова стойност, използвана като ParentKey strSql =strSql &"SELECT '" &strText &"' AS [Desc ], '" &lngKey strSql =strSql &"' КАТО идентификатор на родител ОТ проба WHERE ((Sample.ID =1));" intflag =2ElseIf (lngParentkey>=0) И (childflag =False) След това 'Вмъква възел на ниво с отметка, Добавете елемент под същия ParentKey strSql =strSql &"SELECT '" &strText &"' AS [Desc], '" &lngParentkey strSql =strSql &"' КАТО идентификатор на родител ОТ проба WHERE ((Sample.ID =1));" intflag =3End IfSet db =CurrentDbdb.Execute strSql'Вземете новосъздадения автономер, който да използвате като KeylngID =DMax("ID", "Sample")strIDKey =KeyPrfx &CStr(lngID)При грешка GoTo IdxOutofBoundSelect Case in Root1 Case ниво възел, ParentKey е празен tv.Nodes.Add , , strIDKey, strText, "folder_close", "folder_open" Случай 2 'Вмъква дъщерен възел към отбелязания с отметка възел, тук Ключова стойност, използвана като ParentKey tv.Nodes.Add strKey , tvwChild, strIDKey, strText, "left_arrow", "right_arrow" Случай 3 'Вмъква възел на ниво с отметка, Добавяне на елемент под същия ParentKey tv.Nodes.Добавяне на strParentKey, tvwChild, strIDKey, strText, "left_arrow", "left_arrow", right_arrow"End Selecttv.Refresh 'Erase Property Values ​​from Form With Me .TxtKey ="" .TxtParent ="" .Text ="" End WithSet db =NothingcmdExpand_Click cmdAdd_Click_Exit:Exit SubIdxEndxEndreck_Exit:Exit SubIdxEndreck_Exit:Exit SubIdxEndreck_Review 

Нека разгледаме VBA кода. След декларациите на локални променливи възлите на TreeView се сканират за отметки и се отчитат маркирани елементи. Ако маркираните възли са повече от един, това показва съобщение и прекратява програмата.

Забележка: Вместо да поставяме отметка, можем директно да щракнем върху възел, за да го изберем. И в двата случая провереният/кликнат възел се предава като параметър на процедурата за събитие. Отметката е добра, когато трябва да изберете повече от един елемент от менюто на проекта, например:за избор на различен набор от данни за конкретен отчет и т.н.

Стойностите на свойствата на проверения възел се четат от контролите на формуляра в strKey , strParentKey, и strText. Числовите стойности на ID, ParentID се извличат и записват в lngKey и lngParentKey Променливи за използване в SQL низ.

След това Дъщерският възел Стойността на квадратчето за отметка се запазва в ChildFlag Променлива.

Три различни набора от SQL низове се създават въз основа на избрания възел и Дъщерски възел Опция в квадратчето за отметка над командния бутон Добавяне на възел.

  1. Ако ParentID Стойността на свойството във формуляра е празна и Дъщерният възел квадратчето за отметка не е отметнато, тогава ще бъде създаден нов запис на коренно ниво, тъй като потребителят е маркирал възел на коренно ниво.
  2. Ако ParentID Стойност на свойството>=0 и Дъщерски възел е избрано квадратчето за отметка (отметнато ), след което се създава нов запис като Child-Node към маркирания възел. С отметка Ключ на възел (ID) се използва като ParentID в новия запис за новия възел.
  3. Ако ParentID Стойност >=0 и Дъщерски възел опцията за отметка не е избрана (не е маркирана ), след което новият запис се създава за новия възел, на същото ниво като отбелязания възел.

intFlag Променливата се задава с една от трите стойности:1,2 или 3, в зависимост от изпълнението на SQL, като индикация за типа възел, който трябва да се създаде в контролата на дървовидния изглед.

След това, въз основа на избора на опции, SQL се изпълнява за създаване на нов запис в Проба Таблица с нова стойност на полето за идентификатор на автономер.

След това DMax() Функцията връща уникалния идентификатор на запис като ключ-стойност за новия възел.

Въз основа на опцията за тип възел (1,2 или 3) възелът се създава в контролата за изглед на дърво.

Съдържанието на текстовото поле на дисплея на свойствата се изчиства.


Изтриване на възел или възел с деца.

Изтриване на възел Вариантът е много по-лесен от по-ранното упражнение. Просто изтрива маркирания с отметка възел и неговите дъщерни елементи, ако има такива, от контролата на дървовидния изглед. Свързаните записи също се изтриват от таблицата.

VBA кодът за премахване на възел е даден по-долу:

Private Sub cmdDelete_Click()Dim nodId As Long, nodParent Като LongDim strSql Като StringDim db Като DAO.DatabaseDim j As IntegerDim tmpnode Като MSComctlLib.NodeDim strKey As StringDim strMsg Вземете отметка за StringDim strMsg В Вземете като No. tv.Nodes Ако tmpnode.Checked Тогава tmpnode.Selected =True strKey =tmpnode.Key j =j + 1 End IfNext Ако j> 1 Тогава MsgBox "Избрани възли:" &j &vbCr &"Изберете само един възел за изтриване." , vbCritical, "cmdDelete()" Exit Sub End IfSet tmpnode =tv.Nodes.Item(strKey)tmpnode.Selected =TrueSet db =CurrentDb'проверете наличието на Child Node(s) на маркиран NodeIf Тогава tmpnode.Children> Предупреждения:„Изтриването на произволни възли ще остави осиротели възли“ в таблицата и ще завърши с грешки по време на следващия процес на зареждане на Tree View strMsg =„Маркираният възел има „ &tmpnode.Children &„ Children.“ &vbCr &„Изтриване на Детски възли също?" Ако MsgBox(strMsg, vbYesNo + vbCritical, "cmdDelete()") =vbYes Тогава „Проверете два пъти и получете потвърждение. strMsg ="Изтриване само на най-дълбокия набор от дъщерни възли" &vbCr strMsg =strMsg &"и техния родителски възел наведнъж." &vbCr &vbCr strMsg =strMsg &"Сигурни ли сте, че ще продължите...?" Ако MsgBox(strMsg, vbYesNo + vbCritical, "cmdDelete()") =vbYes Тогава Направете до tmpnode.Children =0 nodId =Val(Mid(tmpnode.Child.Key, 2)) 'Изтриване на дъщерен възел.mpnode tvmove.Nodes .Child.Index 'Изтриване на свързания запис strSql ="ИЗБИРАНЕ на проба.*, Sample.ID ОТ проба WHERE (((Sample.ID)=" &nodId &"));" db.Execute strSql Loop Else Exit Sub End If Else Exit Sub End IfEnd If nodId =Val(Mid(tmpnode.Key, 2)) 'Delete Parent tv.Nodes.Remove tmpnode.Key tv.Refresh 'Delete Marked Record strSql =" ИЗТРИВАНЕ на проба.*, Sample.ID ОТ проба КЪДЕ (((Sample.ID)=" &nodId &"));" db.Execute strSql 'Erase Property Values ​​from Form With Me .TxtKey ="" .TxtParent ="" .Text ="" End With Set db =Nothing End Sub

След местните декларации на променлива For Every . . . Следващата Цикълът преброява възлите с отметки. Ако е намерен повече от един елемент с отметка, тогава се показва съобщение и програмата се прекратява.

Ако има само един елемент, отбелязан, тогава втората стъпка Проверка за валидиране търси наличието на дъщерния възел(и) на избрания възел. Ако бъдат намерени дъщерни възли, тогава се показва съобщение за този ефект. Потребителят трябва да потвърди отново намерението си да продължи с изтриването първо на дъщерните възли, а след това на отбелязания родителски възел.

Забележка: На потребителите се препоръчва първо да изтрият най-дълбокото ниво на дъщерния възел(и) или всички дъщерни възли с най-дълбоко ниво с техния непосредствен родителски възел, като маркират само родителския възел, без да маркират възела на прародителя. Ограничаването на правилото за изтриване на това ниво ще запази кода прост и лесен за разбиране. Нарушаването на това правило може да остави някои възли осиротели и да завърши с грешки, когато изгледът на дървото се отвори следващия път .

Дъщерните възли се премахват един по един и съответните записи в таблицата също се изтриват един след друг. След това изтрива маркирания родителски запис.

Ако маркираният възел няма дъщерен възел(и), тогава той се изтрива веднага след проверките за валидиране и съответният запис в таблицата също се изтрива.

Съдържанието на текстовото поле за показване на свойства във формуляра се изчиства.


Формулярът frmSample's Complete Class Module VBA Code.

Следва пълният VBA код в frmSample Модул за клас на 's, с други малки подпрограми за разширяване на свиващи възли, TreeView0_NodeCheck Процедура за събитие, cmdExit Събитие за щракване върху команден бутон, Form_Load() Процедури и CreateTreeView() Подпрограма:

Option Compare DatabaseOption ExplicitDim tv As MSComctlLib.TreeViewDim ImgList As MSComctlLib.ImageListConst KeyPrfx As String ="X"Private Sub cmdAdd_Click()Dim strKey As StringDim lngKey As LongDim strParentKey As StringDim lngParentkey As LongDim strText As StringDim lngID As LongDim strIDKey As StringDim childflag As IntegerDim db As DAO.DatabaseDim strSql As StringDim intflag Като IntegerDim tmpnode Като MSComctlLib.NodeDim i As Integeri =0For Every tmpnode In tv.Nodes If tmpnode.Nodes If tmpnode.Checked I If tmpnode.Checked I If tmpnode. 1 След това MsgBox "Избрани възли:" &i &vbCr &"Изберете само един възел за маркиране на добавяне.", vbCritical, "cmdAdd()" Изход SubEnd If'Read Property Values ​​от FormstrKey =Trim(Me![TxtKey])lngKey. =Val(Mid(strKey, 2))strParentKey =Trim(Me![TxtParent])lngParentkey =IIf(Len(strParentKey)> 0, Val(Mid(strParentKey, 2)), 0)strText =Trim(Me![] Text])'Опция за четене на дъщерен възел settingchildflag =Nz(Me.ChkChild.Value, 0)intflag =0strSql ="INSERT INTO Sample ([Desc], [ParentID] ) "Ако lngParentkey =0 и childflag =0, тогава 'Добавяне на възел на коренно ниво, ParentKey е празен strSql =strSql &"SELECT '" &strText &"' AS [ Desc], '" &" " strSql =strSql &"' КАТО идентификатор на родител ОТ проба WHERE ((Sample.ID =1));" intflag =1ElseIf (lngParentkey>=0) И (childflag =True) След това 'Вмъква дъщерен възел към отбелязания с отметка възел, тук Ключова стойност, използвана като ParentKey strSql =strSql &"SELECT '" &strText &"' AS [Desc ], '" &lngKey strSql =strSql &"' КАТО идентификатор на родител ОТ проба WHERE ((Sample.ID =1));" intflag =2ElseIf (lngParentkey>=0) И (childflag =False) След това 'Вмъква възел на ниво с отметка, Добавете елемент под същия ParentKey strSql =strSql &"SELECT '" &strText &"' AS [Desc], '" &lngParentkey strSql =strSql &"' КАТО идентификатор на родител ОТ проба WHERE ((Sample.ID =1));" intflag =3End IfSet db =CurrentDbdb.Execute strSql'Вземете новосъздадения автономер, който да използвате като KeylngID =DMax("ID", "Sample")strIDKey =KeyPrfx &CStr(lngID)При грешка GoTo IdxOutofBoundSelect Case in Root1 Case ниво възел, ParentKey е празен tv.Nodes.Add , , strIDKey, strText, "folder_close", "folder_open" Случай 2 'Вмъква дъщерен възел към отбелязания с отметка възел, тук Ключова стойност, използвана като ParentKey tv.Nodes.Add strKey , tvwChild, strIDKey, strText, "left_arrow", "right_arrow" Случай 3 'Вмъква възел на ниво с отметка, Добавяне на елемент под същия ParentKey tv.Nodes.Добавяне на strParentKey, tvwChild, strIDKey, strText, "left_arrow", "left_arrow", right_arrow"End Selecttv.Refresh 'Erase Property Values ​​from Form With Me .TxtKey ="" .TxtParent ="" .Text ="" End WithSet db =NothingcmdExpand_Click cmdAdd_Click_Exit:Exit SubIdxEdxEndreck_Exit:Exit SubIdxEndreck_Exit:Exit SubIdxEndreck_SubIdxEndreck_Exit Click() DoCmd.CloseEnd SubPrivate Sub cmdDelete_Click()Dim nodId As Long, nodParent Като LongDim strSql Като StringDim db Като DAO.DatabaseDim j Като IntegerDim tmpnode Като MSComctlLib.NodeDim като strKey Вземете StDim strKey проверете StDim 0 Всеки tmpnode В tv.Nodes Ако tmpnode.Checked Тогава tmpnode.Selected =True strKey =tmpnode.Key j =j + 1 End IfNext Ако j> 1 Тогава MsgBox "Избрани възли:" &j &vbCr &"Изберете само един възел Delete.", vbCritical, "cmdDelete()" Exit Sub End IfSet tmpnode =tv.Nodes.Item(strKey)tmpnode.Selected =TrueSet db =CurrentDb'проверете наличието на Child Node(s) на маркиран NodeIf tmpnode.Children> 0 Тогава „Предупреждения:“ Изтриването на произволни възли ще остави осиротели възли“ в таблицата и ще завърши с грешки по време на следващия процес на зареждане на изглед на дърво strMsg =„Маркираният възел има „ &tmpnode.Children &„ Children. " &vbCr &"Изтриване на дъщерните възли?" Ако MsgBox(strMsg, vbYesNo + vbCritical, "cmdDelete()") =vbYes Тогава "Проверете два пъти и получете потвърждение. strMsg ="Изтриване само на най-дълбокия набор от дъщерни възли" &vbCr strMsg =strMsg &"и техния родителски възел наведнъж." &vbCr &vbCr strMsg =strMsg &"Сигурни ли сте, че ще продължите...?" Ако MsgBox(strMsg, vbYesNo + vbCritical, "cmdDelete()") =vbYes След това Направете до tmpnode.Children =0 nodId =Val(Mid(tmpnode.Child.Key, 2)) 'Delete Child Node tv.Nodes.Remove tmpnode.Child.Index 'Изтрийте свързания запис strSql ="DELETE Sample.*, Sample.ID FROM Sample WHERE (((Sample.ID)=" &nodId &"));" db.Execute strSql Loop Else Exit Sub End If Else Exit Sub End IfEnd If nodId =Val(Mid(tmpnode.Key, 2 )) 'Delete Parent tv.Nodes.Remove tmpnode.Key tv.Refresh 'Delete Marked Recor d strSql ="ИЗТРИВАНЕ на проба.*, Sample.ID ОТ проба WHERE (((Sample.ID)=" &nodId &"));" db.Execute strSql 'Изтриване на стойности на свойства от формуляр с мен .TxtKey ="" . TxtParent ="" .text ="" Завършете с Set DB =Нищо край на подценка sub cmdexpand_click () dim nodexp като mscomctllib.node за всеки nodexp в tv.nodes nodexp.expanded =true nextend subprivate sub cmdcollapse_click () dim nodexp като mscomctllib. Възел за всеки nodExp в tv.Nodes nodExp.Expanded =False NextEnd SubPrivate Sub Form_Load() CreateTreeView cmdExpand_ClickEnd SubPrivate Sub CreateTreeView()Dim db As DatabaseDim rst As RecordsetDim nodKey като RecordsetDim nodKey As string As strim St. St. .Objecttv.Nodes.Clear'Pass ImageList контролна препратка към свойството ImageList на TreeView.Set ImgList =Me.ImageList0.Objecttv.ImageList =ImgListstrSql ="SELECT ID, Desc, ParentID FROM Sample;"Set db =CurrentDbSet rst =db.OpenRecordset("sample", dbOpenTable)Прави, докато не rst.EOF И не rst.BOF Ако Nz(rst!ParentID, "") ="" Тогава nodKey =KeyPrfx &CStr(rst!ID) strText =rst!desc tv.Nodes.Add , , nodKey, strText, "folder_close", "folder_open" Else ParentKey =KeyPrfx &CStr(rst!ParentID) Key(rst!ParentID) nodPrfx &Strfx rst!ID) strText =rst!desc tv.Nodes.Add ParentKey, tvwChild, nodKey, strText, "left_arrow", "right_arrow" Край Irst.MoveNextLooprst.CloseOn Грешка GoTo 0Set rst =NothingBetSetPrick NothingB. Като обект)Dim xnode Като MSComctlLib.NodeSet xnode =Node Ако xnode.Checked Тогава xnode.Selected =True With Me .TxtKey =xnode.Key Ако xnode.Text =xnode.FullPath Тогава .TxtParent ="tx" Else. Parent.Key End If .Text =xnode.Text End With Else xnode.Selected =False With Me .TxtKey ="" .TxtParent ="" .Text ="" End WithEnd IfEnd Sub

Изгледът за проектиране на формуляра frmSample е даден по-долу:

Вашите наблюдения, коментари, предложения са добре дошли.

Демо базата данни е прикачена за изтегляне.


РЕЧНИК ОБЕКТ

  1. Основи на обектите на речника
  2. Основи на обекта на речника-2
  3. Сортиране на ключове и елементи в речника
  4. Показване на записи от речника
  5. Добавяне на обекти на клас като елементи от речника
  6. Актуализиране на елемент от речника за обект на клас


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вече можете да използвате Access с Microsoft Azure MFA!

  2. Защо архивирането на данни е важно за вашата организация

  3. Защо трябва да използвате PHPs PDO за достъп до база данни

  4. Избягвайте конфликти на числа с Microsoft SQL последователности

  5. 7 стратегии, за да извлечете максимума от срещите си