10초 결론: 행동 세 개와 표시 하나로 나눕니다
새 레코드 추가는 AllowAdditions, 저장된 레코드 수정은 AllowEdits, 레코드 삭제는 AllowDeletions가 담당합니다.
DataEntry는 권한을 하나 더 추가하는 속성이 아닙니다. 바운드 폼을 열 때 기존 레코드를 보여 줄지, 데이터 입력용 화면으로 열지를 정합니다.
문제에서는 `추가·수정·삭제`가 보이면 Allow 속성을, `기존 레코드를 표시하지 않고 입력용으로 연다`가 보이면 DataEntry를 고릅니다.
두음 암기: 추수삭·신만
`추수삭`은 추가·수정·삭제의 앞글자입니다. 순서대로 AllowAdditions·AllowEdits·AllowDeletions에 연결합니다.
`신만`은 신규 입력 화면만 보인다는 뜻으로 DataEntry에 연결합니다. 정확히는 기존 레코드 표시를 막고 데이터 입력용으로 폼을 여는 설정입니다.
암기 문장 `추가·수정·삭제는 각자 허가증, 데이터 엔트리는 신입만 입장`을 말한 뒤 네 영문 속성을 다시 복원하세요.
네 속성은 질문 자체가 다릅니다
AllowAdditions는 `새 레코드를 만들 수 있는가`, AllowEdits는 `저장된 레코드를 바꿀 수 있는가`, AllowDeletions는 `레코드를 지울 수 있는가`에 답합니다.
DataEntry는 `기존 레코드를 화면에 보여 주는가`에 답합니다. 허용 여부 세 개와 표시 방식 하나를 같은 줄에 놓고 비교하면 오답이 줄어듭니다.
속성값은 Yes·No 또는 VBA의 True·False로 다룰 수 있습니다. 이름의 동작 단어와 문제의 요구 동사를 먼저 맞춥니다.
AllowAdditions는 새 레코드 추가를 제어합니다
Microsoft Learn은 AllowAdditions를 사용자가 폼에서 레코드를 추가할 수 있는지 지정하는 읽기·쓰기 Boolean 속성으로 설명합니다.
AllowAdditions=No이면 사용자는 기존 레코드를 보거나 수정할 수는 있어도 새 레코드를 추가할 수 없습니다. 추가 금지와 기존 수정 금지는 별개입니다.
따라서 `신규 회원을 등록하지 못하게 한다`는 지시에는 AllowAdditions=No를 먼저 떠올립니다. 기존 회원 정보 수정까지 금지한다고 확대 해석하지 않습니다.
AllowAdditions=No는 기존 레코드를 숨기지 않습니다
AllowAdditions는 새 레코드 생성 권한만 막습니다. 기존 레코드의 표시 여부는 DataEntry와 다른 폼 조건이 결정합니다.
기존 레코드를 볼 수 있고 AllowEdits가 Yes라면 기존 값도 수정할 수 있습니다. `추가 금지=폼 전체 읽기 전용`이라는 선지는 틀립니다.
완전한 읽기 전용 폼을 만들려면 추가뿐 아니라 수정과 삭제도 함께 막아야 합니다. 세 Allow 속성의 조합을 끝까지 확인하세요.
AllowEdits는 저장된 레코드 수정을 제어합니다
AllowEdits는 사용자가 폼에서 저장된 레코드를 수정할 수 있는지 지정합니다. 기존 데이터 변경을 막는 폼 단위 속성입니다.
AllowEdits=No여도 AllowAdditions=Yes라면 새 레코드 입력은 가능할 수 있습니다. 저장된 레코드 수정과 새 레코드 추가를 같은 동작으로 묶지 않습니다.
문제에서 `기존 레코드는 수정하지 못하지만 신규 입력은 허용`한다고 하면 AllowEdits=No, AllowAdditions=Yes 조합을 찾습니다.
폼 전체 수정과 특정 컨트롤 잠금은 다릅니다
AllowEdits는 폼에 표시된 기존 데이터 전체의 사용자 수정을 제어합니다. 특정 텍스트 상자 하나만 바꾸지 못하게 하려는 문제와 범위가 다릅니다.
Microsoft 문서는 특정 컨트롤의 변경을 막으려면 해당 컨트롤의 Enabled 또는 Locked 속성을 사용하라고 안내합니다.
따라서 `고객번호 컨트롤만 수정 금지`라면 폼의 AllowEdits보다 그 컨트롤의 Locked 설정을 먼저 검토합니다.
AllowEdits는 코드 변경까지 완전히 봉쇄하지 않습니다
AllowEdits=No는 사용자가 기존 데이터를 수정하지 못하게 하는 설정입니다. Microsoft 문서에는 프로그램 코드로 필드 값을 바꾸면 현재 레코드가 편집 가능한 상태가 될 수 있다는 주의가 있습니다.
코드로 값을 바꾼 뒤 레코드를 저장하면 AllowEdits 설정이 다시 적용됩니다. 시험에서는 사용자 조작 제한과 VBA 코드 실행을 같은 층위로 보지 않습니다.
일반적인 속성 선택 문제에서는 `저장된 레코드의 사용자 수정 허용`이라는 정의를 우선하고, 코드 변경 예외는 심화 선지에서 확인합니다.
AllowDeletions는 레코드 삭제를 제어합니다
AllowDeletions는 사용자가 폼에서 레코드를 삭제할 수 있는지 지정하는 Boolean 속성입니다.
AllowDeletions=No이면 기존 레코드를 보거나 수정할 수는 있어도 삭제할 수 없습니다. 삭제 금지와 수정 금지는 별개입니다.
`조회와 수정은 허용하되 삭제만 금지`한다면 AllowDeletions=No를 고르고 AllowEdits까지 No로 바꾸지 않습니다.
AllowDeletions=Yes도 삭제 성공을 보장하지 않습니다
AllowDeletions=Yes는 폼에서 삭제 동작을 허용하지만 기존 참조 무결성 규칙을 깨는 삭제까지 허용한다는 뜻은 아닙니다.
관련 테이블의 레코드가 연결되어 있고 삭제 제한이 설정되어 있다면 무결성 규칙 때문에 삭제가 거부될 수 있습니다.
따라서 `AllowDeletions=Yes이면 어떤 레코드든 반드시 삭제된다`는 선지는 틀립니다. 폼 허용과 데이터베이스 규칙을 분리합니다.
DataEntry는 기존 레코드 표시 여부를 정합니다
DataEntry는 바운드 폼을 데이터 입력용으로 열지를 지정합니다. Microsoft 문서가 강조하듯 레코드 추가 가능 여부를 직접 결정하지 않고 기존 레코드 표시 여부만 정합니다.
DataEntry=Yes이면 폼을 열 때 기존 레코드를 탐색하는 화면이 아니라 신규 데이터 입력용 화면으로 사용합니다. 기존 데이터가 삭제되는 것은 아닙니다.
DataEntry=No는 폼의 일반 레코드 표시 상태로 돌아가는 쪽입니다. `기존 데이터 삭제`나 `테이블 비우기`로 해석하지 않습니다.
DataEntry=True만으로 추가 권한이 생기지 않습니다
DataEntry는 AllowAdditions=Yes일 때만 효과가 있습니다. 신규 입력 화면을 표시하더라도 실제 추가 권한은 AllowAdditions가 담당합니다.
그래서 `DataEntry=True이면 무조건 새 레코드를 추가할 수 있다`는 설명은 틀립니다. 먼저 AllowAdditions 값이 Yes인지 확인해야 합니다.
시험에서는 DataEntry를 `신규 입력용 표시`, AllowAdditions를 `신규 레코드 추가 허용`으로 짧게 나누면 됩니다.
네 속성 조합을 상황별로 읽습니다
신규 입력만 받으려면 AllowAdditions=Yes와 DataEntry=Yes 조합을 먼저 봅니다. 기존 레코드 표시는 숨기고 새 레코드 추가는 허용하는 구성입니다.
기존 레코드는 수정하되 신규 추가를 막으려면 AllowEdits=Yes, AllowAdditions=No입니다. 삭제까지 허용할지는 AllowDeletions를 따로 확인합니다.
추가·수정·삭제를 모두 막는 읽기 전용 구성은 AllowAdditions=No, AllowEdits=No, AllowDeletions=No입니다. 각 행동을 한 칸씩 끄는 방식으로 읽습니다.
Snapshot과 Allow 속성의 역할을 섞지 않습니다
Microsoft 문서는 폼을 읽기 전용으로 만드는 방법으로 세 Allow 속성을 모두 No로 설정하는 방법과 RecordsetType을 Snapshot으로 설정하는 방법을 함께 제시합니다.
Allow 속성은 사용자에게 허용할 동작을 나누고 Snapshot은 읽기 전용 레코드셋 형식입니다. 결과가 비슷해도 속성이 묻는 대상은 다릅니다.
오늘 글은 Allow 3종과 DataEntry가 주제이므로 RecordsetType 전체 유형 비교까지 범위를 넓히지 않습니다.
OpenForm의 DataMode가 폼 속성을 덮어쓸 수 있습니다
OpenForm의 DataMode 인수를 지정하면 폼에 저장된 AllowEdits·AllowDeletions·AllowAdditions·DataEntry 설정보다 그 열기 모드가 우선할 수 있습니다.
예를 들어 DataMode를 Edit로 지정하면 Microsoft 문서 기준 AllowEdits·AllowDeletions·AllowAdditions는 Yes, DataEntry는 No인 상태로 폼이 열립니다.
폼에 저장한 속성을 그대로 사용하려면 DataMode를 생략해 폼 속성 설정을 따르게 합니다. 속성 시트만 보고 실행 결과를 단정하지 말고 OpenForm 호출도 확인하세요.
acFormAdd·acFormEdit·acFormReadOnly를 연결합니다
acFormAdd는 새 레코드를 추가할 수 있지만 기존 레코드는 편집하지 않는 모드이고, acFormEdit는 기존 레코드 편집과 신규 추가를 허용하는 모드입니다.
acFormReadOnly는 레코드를 보기만 하는 모드입니다. DataMode 값은 폼을 여는 순간의 데이터 작업 범위를 정합니다.
OpenForm의 일곱 인수 순서와 WhereCondition 작성은 기존 전용 글이 담당합니다. 이 글에서는 DataMode가 네 폼 속성을 재정의할 수 있다는 경계만 기억합니다.
자주 틀리는 선지 여섯 개를 고칩니다
`AllowAdditions=No이면 기존 레코드도 수정할 수 없다`는 틀립니다. `AllowEdits=No이면 새 레코드도 추가할 수 없다`도 AllowAdditions가 Yes일 수 있어 틀립니다.
`AllowDeletions=Yes이면 참조 무결성과 관계없이 삭제된다`는 틀립니다. `DataEntry=True이면 기존 레코드가 삭제된다`도 기존 표시만 제한하므로 틀립니다.
`DataEntry=True가 추가 권한을 결정한다`와 `OpenForm DataMode는 폼 속성에 영향을 주지 않는다`도 틀립니다. 추가 권한은 AllowAdditions이고 DataMode는 설정을 덮어쓸 수 있습니다.
문제 풀이 순서와 30초 셀프 체크
1단계. 요구 동작이 추가·수정·삭제인지, 기존 레코드 표시인지 표시합니다. 2단계. 행동이면 Allow 3종, 표시이면 DataEntry를 고릅니다.
3단계. 신규 입력 화면이면 AllowAdditions=Yes 조건을 확인합니다. 4단계. OpenForm 코드가 있으면 DataMode 지정으로 폼 속성이 재정의되는지 봅니다.
셀프 체크: 추가는 AllowAdditions, 저장된 레코드 수정은 AllowEdits, 삭제는 AllowDeletions, 기존 레코드 숨김은 DataEntry, 폼 속성 재정의 가능 인수는 DataMode입니다.
Microsoft 공식 문서로 재확인했습니다
본문은 Microsoft Learn의 Form.AllowAdditions, Form.AllowEdits, Form.AllowDeletions, Form.DataEntry, DoCmd.OpenForm과 AcFormOpenDataMode 문서를 2026년 8월 23일 기준으로 대조했습니다.
새 레코드 추가·저장된 레코드 수정·삭제 허용, DataEntry의 기존 레코드 표시 역할과 AllowAdditions 조건, DataMode의 폼 속성 재정의를 공식 설명으로 확인했습니다.
실제 데이터 수정 가능성은 데이터 원본과 무결성 규칙에도 영향을 받으므로, 실습에서는 폼 속성뿐 아니라 원본 쿼리와 관계 설정도 함께 확인합니다.