Access VBA를 사용하여 ListBox에서 지정된 항목 삭제를 제한하는 방법

StackOverflow https://stackoverflow.com//questions/22054129

  •  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되면 더 이상 나타나지 않습니다.

양식 종료시 모든 쿼리를 다시 예로 변경하려면 다른 쿼리를 실행해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top