2014-10-29 2 views
2

두 가지 형식 중 하나는 데이터 입력 폼이고 다른 하나는 데이터베이스의 모든 레코드를 나열하는 요약 폼입니다. 요약 양식에는 모든 레코드를 나열하는 목록 상자가 있습니다. 사용자가 목록 상자에서 레코드를 선택하고 명령 단추를 사용하여 특정 레코드에 대한 두 번째 폼을 열 수있게하려고합니다. 내가 한 경우 "이름"에서 특정 필드를 사용하여 아래의 코드를 사용하여이 작업을 입수했습니다MS Access 2007 VBA를 사용하여 개별 레코드를 특정 레코드로 열기

DoCmd.OpenForm "frmEditAddPerson", acNormal, ,"[PersonName]='" & Me.listPeople.Value & "'" 

을하지만 난 깨달았을 때 두 사람이 같은 이름을 가질 수있다, 나는 그것을 사용하는 것이 합리적이라는 결정을 내 렸습니다 PersonID는 기본 키이며 해당 데이터 유형은 "일련 번호"입니다. 이게 작동하지 않는 것 같습니다 :

DoCmd.OpenForm "frmEditAddPerson", acNormal, "[PersonName] = " & SelectPersonID 

참고 : 숨겨진 열에서 ListBox를 가져 와서 SelectedPersonID를 가져옵니다. 내가 infact 디버그하는 동안 MessageBox에 표시하여 일련 번호 필드에 대한 숫자 값을 얻는 것을 확인했습니다.

이 메소드/명령의 WHERE 인수에 대해 SQL 문과 같이 문자열 값을 따옴표로 묶고,없는 정수와 날짜를 "#"와 같이 포함해야합니다. SelectedPersonID를 문자열 및 정수로 분석하려고 시도했지만 여전히 위와 같은 작업을 수행 할 수 없습니다. 나는 단지 아래를 시도해 보았습니다.

DoCmd.OpenForm "frmEditAddPerson", acNormal, "[PersonName] = " & CInt(SelectPersonID) 

"유형 불일치"가 발생할 때마다. 일련 번호 필드는 특별한 의미로 사용되는 것이거나 특별한 방법으로 처리해야합니까?

답변

3

PersonID이 자동 번호 기본 키 인 경우 네 번째 OpenForm 인수 (WhereCondition)에서 참조하십시오. OpenForm 예는 여전히 PersonID 대신 PersonName을 포함합니다.

마지막 두 예제에서 PersonID는 OpenForm 인수 (FilterName) 세 번째 항목에서 참조되었습니다.

DoCmd.OpenForm "frmEditAddPerson", acNormal, , "[PersonID] = " & SelectPersonID 

옵션이있는 옵션의 이름을 포함하여 인을 추적하는 것이 더 쉬울 수 있습니다.

DoCmd.OpenForm FormName:="frmEditAddPerson", View:=acNormal, _ 
    WhereCondition:="[PersonID] = " & SelectPersonID 
+0

고마워요! 귀하의 마지막 제안을 내 코드 묶음을 청소하는 데 도움이 지금은 오류가 발생하지 않지만 그것은 양식을 시작하면 비어/새 레코드를 선택한 하나가 아닌 그것을 시작합니다. – smk081

+1

해당 폼을 디자인보기에서 연 상태에서 해당 속성 시트의 데이터 탭을 확인하십시오. 데이터 입력 속성을 찾습니다. 예인 경우 번호를 – HansUp

+0

으로 변경합니다. 확인한 부분은 마지막 부분이었습니다. 데이터 입력 = 예는 양식이 새 레코드 만 추가 할 수 있음을 의미합니다. 기존 레코드는 표시되지 않습니다. – HansUp

관련 문제