2017-04-04 1 views
0

저는 VBA를 처음 사용하는 코더입니다. 저는 Psych Lab에서 데이터 입력을위한 데이터베이스를 만들고 있습니다. 현재 데이터베이스가 생성되었지만 중복 된 항목이 데이터베이스에 저장되는 것을 방지하고자합니다. 즉, 입력 한 직후 참여자 번호를 찾아 코드를 작성합니다. 나는이 코드를 꽤 오랫동안 고치려고 노력해 왔고, 나는 최근에 벽에 부딪쳤다. 참여자 x 호를 입력하면 올 Y 른 오류 메시지가 표시되지만 모든 x 호는 이미 입력되어 있다고 표시됩니다 (실제 x 호가 없더라도). 다음은 코드입니다.Access 데이터베이스에서 중복 항목을 방지하려면 어떻게합니까?

Private Sub Participant_Number_BeforeUpdate(Cancel As Integer) 

    Dim Participant_Number As Integer 

    Dim StLinkCriteria As Integer 

    If (Not IsNull(DLookup("[Participant_Number]", "Entry Log", "[Participant_Number] ='" & Me.Participant_Number.Value & "'"))) Then 
     MsgBox "Participant Number has already been entered in the database." 
    Cancel = True 
    Me.Participant_Number.Undo 
    End If 

End Sub 

어떤 도움을 주셔서 감사합니다. 나는 전에 VBA를 사용한 적이 없으며 코드 작성법을 스스로 가르치고 있습니다.

답변

1

Participant_Number 필드는 number입니다. 기준을 작은 따옴표 '으로 묶지 마십시오.이 필드는 text 유형의 필드와 함께 사용됩니다. 당신은 VBA를 사용하지 않은 경우 디자인보기에서 테이블을 열어이 작업을 수행하려고 할 수 있습니다

"[Participant_Number] = " & Me.Participant_Number.Value))) Then 
+0

제안 해 주셔서 감사합니다. 그러나 문제가 해결되지 않았습니다. 오류 메시지가 나타날 수 있지만 이미 입력했는지 여부에 관계없이 입력 한 모든 숫자에 대해 오류 메시지가 나타납니다. –

+0

@BreannaWallbaum이 구문이 정확합니다. 데이터를 확인해야합니다 (숫자가 이미 입력 되었습니까 *?). 또한 필드 이름과 테이블 이름을 확인하십시오. –

+0

필드 이름과 테이블 이름이 올바른지 나는 긍정적입니다. 나는 이미 그들을 점검했다. 번호는 이미 입력되지 않았고 문제가 있습니다. 방금 데이터베이스를 테스트하기 위해 임의의 데이터를 입력 했으므로 2 세트의 데이터 만 입력했기 때문에 알 수 있습니다. –

0

"[Participant_Number] ='" & Me.Participant_Number.Value & "'"))) Then

에서 기준 필드를 변경해보십시오. 이 방법은 쉽고 좋은 선택입니다. 다음을 참고하십시오 : https://support.office.com/en-us/article/Prevent-duplicate-values-in-a-field-b5eaace7-6161-4edc-bb90-39d1a1bc5576?ui=en-US&rs=en-US&ad=US&fromAR=1

+0

나는 이미 그 일을했지만, 사용자가 이미 입력되었다는 오류 메시지가 필요합니다. 또한 입력을 위해 데이터베이스를 설정하는 방법은 평가자에게 화면 상단의 리본에 대한 액세스 권한을 부여하지 않습니다. 그들이 할 일은 모두 Enter 키를 눌러 다음 양식으로 이동하기 (색인 옵션이 작동하지 않음)입니다. 그래도 도움을 주셔서 감사합니다. –

+0

은 평가자가 다음 버튼을 누르면 오류 메시지가 나타나게하는 방법이 있습니까? –

관련 문제