여러 선택 목록 상자에서 선택한 항목을 Microsoft Access에서 쉼표로 구분된 문자열로 검색하는 방법
이 문서는 Microsoft Access 데이터베이스(.mdb) 파일이나 Microsoft Access 데이터베이스(.accdb) 파일에 적용됩니다.
보통: 기본 매크로, 코딩 및 상호 운용성 기술이 필요합니다.
요약
이 문서에서는 여러 선택 목록 상자에서 선택한 항목을 검색한 다음 선택한 항목을 Microsoft Access에 쉼표로 구분된 문자열로 저장하는 방법을 설명합니다.
추가 정보
Microsoft Access에서 양식 또는 보고서의 목록 상자의 MultiSelect 속성 값은 목록 상자가 단일 선택 목록 상자인지 아니면 여러 선택 목록 상자인지를 결정합니다. 여러 선택 목록 상자에서 여러 목록 항목을 한 번에 선택할 수 있습니다.
목록 상자의 Value 속성을 사용하여 목록 상자에서 선택한 항목을 검색할 수 있습니다. 그러나 여러 선택 목록 상자를 사용하고 Value 속성을 사용하여 선택한 항목을 검색하려고 하면 Value 속성이 Null을 반환합니다.
선택한 항목을 여러 선택 목록 상자에서 검색한 다음 선택한 항목을 프로그래밍 방식으로 쉼표로 구분된 문자열로 저장할 수 있습니다. 이렇게 하려면 다음과 같이 하십시오.
Microsoft Access를 시작합니다.
Northwind 샘플 데이터베이스를 엽니다.
데이터베이스 창의 개체 섹션에서 폼을 클릭합니다.
참고 Access 2007의 만들기 탭에 있는 양식 그룹에서 양식디자인을 클릭합니다.
오른쪽 창에서 디자인 보기에서 양식 만들기를 두 번 클릭합니다.
참고 Access 2007에서 이 단계를 건너뜁니다.
폼에 다음 컨트롤을 추가한 다음 지정된 대로 컨트롤의 속성을 설정합니다.
List Box ---------------------------------------------------- Name : NamesList Row Source Type : Table/Query Row Source : SELECT First Name 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 "Nothing was selected from the list", 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 편집기 닫습니다.
양식을 Form1로 저장합니다.
양식을 닫습니다.
양식 보기에서 Form1 양식을 엽니다.
데이터베이스 창의 개체 섹션에서 폼을 클릭합니다.
참고 Access 2007의 탐색 창에서 양식 그룹을 클릭합니다.
오른쪽 창에서 Form1을 마우스 오른쪽 단추로 클릭한 다음 열기를 클릭합니다.
참고 Access 2007에서 Form1을 마우스 오른쪽 단추로 클릭한 다음 열기를 클릭합니다.
목록 상자에서 여러 항목을 선택합니다. 이렇게 하려면 목록 상자에서 항목을 클릭하고 Ctrl 키를 누른 채 목록 상자에서 더 많은 항목을 클릭합니다.
선택한 항목 표시를 클릭합니다.
여러 선택 목록 상자에서 선택한 항목은 텍스트 상자에 쉼표로 구분된 문자열로 표시됩니다.
Microsoft에서 제공하는 프로그래밍 예제는 예시를 위한 것일 뿐이며 이와 관련하여 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다. 이는 상품성이나 특정 목적에 대한 적합성의 묵시적인 보증을 포함하며 이에 제한되지 않습니다. 이 문서에서는 예제에 사용되고 있는 프로그래밍 언어와 프로시저를 만들고 디버깅하는 데 사용되는 도구를 사용자가 잘 알고 있는 것으로 가정합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 프로시저에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기