Извлечение выбранных элементов из списка, разрешающего несвязный выбор нескольких строк, с сохранение в виде строки с разделителями-запятыми в Microsoft Access В статье описывается, как извлечь выбранные элементы из списка, разрешающего несвязный выбор нескольких строк, а затем сохранить их как строку с разделителями-запятыми в Microsoft Access. В Microsoft Access значение свойства списка MultiSelect в форме или в отчете определяет, является ли этот список простым списком или списком, разрешающим несвязный выбор нескольких строк. В списках, разрешающих несвязный выбор нескольких строк, можно выделять несколько элементов одновременно. Свойство списка Значение можно использовать для извлечения выбранного элемента из списка. Однако если используется список, разрешающий несвязный выбор нескольких строк, при попытке извлечь выбранные элементы с помощью свойства Значение свойство Значение возвращает значение NULL. Извлечь выбранные элементы из такого списка и затем сохранить их как строку с разделителями-запятыми можно программными средствами. Для этого выполните указанные ниже действия. - Запустите Microsoft Access.
- Откройте образец базы данных "Борей".
- В разделе Объекты окна базы данных выберите пункт Формы.
Примечание. В Access 2007 нажмите кнопку Конструктор форм в группе Формы на вкладке Создание. - В правой области дважды щелкните пункт Создание формы в режиме конструктора.
Примечание. В Access 2007 пропустите это действие. - Добавьте в форму указанные ниже элементы управления, а затем задайте их свойства, как показано ниже.
List Box ---------------------------------------------------- Name : NamesList Row Source Type : Table/Query Row Source : SELECT FirstName FROM Employees Multi Select : Extended Width : 3.5" Height : 0.75" Text Box ----------------------- Name : mySelections Width : 3.5" Height : 0.25" Command Button ---------------------------------- Name : testmultiselect Caption : Display Selected Items Width : 1.375" Height : 0.3" Command Button ---------------------- Name : ClrList Caption : Clear List Width : 1.375" Height : 0.3" - В меню Вид выберите пункт Код.
Примечание. В Access 2007 нажмите кнопку Просмотреть код в группе Элементы на вкладке Конструктор. - Вставьте следующий код в редактор Visual Basic:
Option Compare Database Option Explicit Private Sub Form_Current() Dim oItem As Variant Dim bFound As Boolean Dim sTemp As String Dim sValue As String Dim sChar As String Dim iCount As Integer Dim iListItemsCount As Integer sTemp = Nz(Me!mySelections.Value, " ") iListItemsCount = 0 bFound = False iCount = 0 Call clearListBox For iCount = 1 To Len(sTemp) + 1 sChar = Mid(sTemp, iCount, 1) If StrComp(sChar, ",") = 0 Or iCount = Len(sTemp) + 1 Then bFound = False Do If StrComp(Trim(Me!NamesList.ItemData(iListItemsCount)), Trim(sValue)) = 0 Then Me!NamesList.Selected(iListItemsCount) = True bFound = True End If iListItemsCount = iListItemsCount + 1 Loop Until bFound = True Or iListItemsCount = Me!NamesList.ListCount sValue = "" Else sValue = sValue & sChar End If Next iCount End Sub Private Sub clearListBox() Dim iCount As Integer For iCount = 0 To Me!NamesList.ListCount Me!NamesList.Selected(iCount) = False Next iCount End Sub Private Sub testmultiselect_Click() Dim oItem As Variant Dim sTemp As String Dim iCount As Integer iCount = 0 If Me!NamesList.ItemsSelected.Count <> 0 Then For Each oItem In Me!NamesList.ItemsSelected If iCount = 0 Then sTemp = sTemp & Me!NamesList.ItemData(oItem) iCount = iCount + 1 Else sTemp = sTemp & "," & Me!NamesList.ItemData(oItem) iCount = iCount + 1 End If Next oItem Else MsgBox "Ничего не выбрано из списка", vbInformation Exit Sub 'Nothing was selected End If Me!mySelections.Value = sTemp End Sub Private Sub clrList_Click() Call clearListBox Me!mySelections.Value = Null End Sub
- Закройте редактор Visual Basic.
- Сохраните форму с именем Форма1.
- Закройте форму.
- Откройте форму Форма1 в представлении формы.
a. В разделе Объекты окна База данных выберите пункт Формы. Примечание. В Access 2007 в области переходов выберите группу Формы. b. В правой области щелкните правой кнопкой мыши форму Форма1 и выберите команду Открыть. Примечание. В Access 2007 щелкните правой кнопкой мыши форму Форма1 и выберите команду Открыть. - Выберите несколько элементов из списка. Для этого щелкните элемент списка, удерживая нажатой клавишу CTRL, затем выберите еще несколько элементов списка.
- Нажмите кнопку Показать выбранные элементы.
Все элементы, выбранные из списка, разрешающего несвязный выбор нескольких строк, отображаются в виде строки с разделителями-запятыми в текстовом поле. Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и не предоставляет явных или подразумеваемых гарантий относительно их пригодности для продажи или применения в тех или иных целях. Примеры в данной статье рассчитаны на пользователя, имеющего достаточный уровень знаний соответствующего языка программирования и необходимых средств разработки и отладки. Специалисты служб технической поддержки Майкрософт могут пояснить назначение тех или иных процедур, но они не предлагают услуги изменения примеров для добавления функций или создания процедур для определенных требований. Пошаговая инструкция. Источник: http://support.microsoft.com/kb/827423/ru |