Access VBA를 사용하여 ListBox에서 지정된 항목 삭제를 제한하는 방법
-
21-12-2019 - |
문제
18 개 항목이 들어있는 목록 상자가 있습니다.선택한 항목은 '삭제'버튼을 클릭하여 목록 상자에서 삭제할 수 있습니다.사용자가 지정한 특정 항목을 삭제하지 못하도록하는 방법은 무엇입니까?
Private Sub cmdDelete_Click()
Dim i As Integer
With Me.listbox1
For i = .ListCount - 1 To 0 Step -1
If .Selected(i) = True Then
.RemoveItem i
End If
Next i
End With
End Sub
. 해결책
테이블에 값을 저장할 수 있습니까? 그런 다음 필드를 삭제할 수 있는지 여부를 지정한 테이블에 열을 가질 수 있습니다. 이는 VBA에 쉽게 빌드 할 수 있습니다.
추가 설명 :
ListBox가 언 바운드되기를 없게하십시오 (즉, DataSource로서의 특정 필드가 없음).
AUTONUMBER (텍스트 상자)에 표시하려는 값, (텍스트 상자)에 표시하려는 값을 포함하는 테이블을 만듭니다 (텍스트 상자로 표시 할 수 있습니다. / 없음 필드). 예를 들어.
ID Values Allow deletion?
1 Example Yes
2 Another example No
3 Yes another example Yes
.
목록 상자의 rowsource에서 해당 테이블을 선택하십시오.
삭제 하위는 이제 다음 코드를 실행할 수 있습니다.
dim qry as string
dim strLookup as string
strLookup = dlookup("[Allow deletion]","[Your Table]", YOURSELECTEDFIELDHERE & "=[Values]")
if strLookup = "No" Then
msgbox "You're not allowed to delete this field."
exit sub
else
qry = "DELETE * FROM [Your Table] WHERE [Values] = YOURSELECTEDFIELDHERE"
CurrentDB.Execute qry
Me.YourListBoxName.Requery
end if
.
ListBox에서 사용할 수있는 값을 찾아 삭제 허용 필드와 일치 시키거나 해당 필드가 예로 표시되거나 삭제되거나 No로 표시된 경우 삭제합니다.
필드를 일시적으로 삭제하고 다음에 폼을로드 할 때만 필드를 삭제하고 숨길 때 숨길 수 있습니다. "쇼"라는 테이블에 추가 열을 추가해야합니다. 예 / 아니요 필드를 사용하고 기본값을 예로 설정합니다.
rowsource를 SELECT * FROM [YOURTABLE] WHERE [Show] = "Yes"
로 설정합니다.
그런 다음 위의 코드의 qry
는 대신 다음으로 설정해야합니다.
UPDATE [YOURTABLE] SET [YOURTABLE].[Show] = "No" WHERE ((([YOURTABLE].[Values])=YOURSELECTEDFIELD));
.
이것은 쇼의 값을 아니오로 변경하므로 ListBox가 requeried되면 더 이상 나타나지 않습니다.
양식 종료시 모든 쿼리를 다시 예로 변경하려면 다른 쿼리를 실행해야합니다.