나는 것을 : 내가 액세스 입력 양식이액세스 VBA - 입력 양식은 중복 기록을 표시 한 후 복제를 검색 및
, 사용자는 양식에 데이터를 채우는 VBA 스크립트를 트리거 버튼을 밀어하는 [전화] 컨트롤의 입력 된 전화 번호가 테이블의 항목과 일치하는지 확인합니다. 중복이 있으면 MsgBox를 트리거하고, 그렇지 않으면 테이블에 데이터를 커밋합니다. 이것은 효과적이고 훌륭합니다. 내가를 수행하려고 무엇
Option Compare Database
Private Sub buttonNewRecord_Click()
Dim ErrorInt As Integer
Dim TeleCheck As Variant
TeleCheck = DLookup("[Telephone]", "tblLog", "[Telephone] = '" & Me.Telephone & "'")
If Not IsNull(TeleCheck) Then
MsgBox "Telephone number already exists in the database!"
ErrorInt = ErrorInt + 1
End If
If ErrorInt < 1 Then
DoCmd.GoToRecord , , acNewRec
MsgBox "Record Added!"
End If
End Sub
: 다음은 스크립트 표에서
는 [전화]과 함께하는 [날짜]와 [Customer_Name 제] 필드가있다. 중복 된 전화 번호가 감지되면 트리거 된 MsgBox에 복제본이있는 레코드의 [Date] 및 [Customer_Name]을 표시하고 싶습니다. 마찬가지로 :
MsgBox "Telephone number already exists for [Customer_Name] added on [Date]!"
내가 봤어 무엇 :
많이 안 나는 시도 모르겠어요 때문이다. 인터넷 검색은 중복을 감지하는 여러 가지 방법을 제공하지만 발견 된 복제의 레코드에서 데이터를 반환하려는 사용자는 없습니다.
왜 테이블의 해당 필드에 고유 제한 조건을 추가하지 않습니까? 그러면 명시 적으로 검사하지 않고도 중복을 방지 할 수 있습니다. 중복을 시도 할 때 오류를 포착하고 메시지 상자 만 표시하면됩니다. –
나는 오류를 잡는 것이 가치가있는 것보다 훨씬 더 어려움을 발견했기 때문에. 또한 문제와 관련이 없기 때문에 여기에 나열되어 있지 않은 VBA에 추가 오류 처리 및 제약이 있습니다. – ETP
어떻게 그렇게? 그것은 꽤 구체적인 오류 번호를 던져야합니다. –