Access에 인덱스가 포함된 메모 필드에 많은 양의 텍스트를 입력하면 "런타임 오류 '3709'"

보통: 기본 매크로, 코딩 및 상호 운용성 기술이 필요합니다.

이 문서는 Microsoft Access 데이터베이스(.mdb) 파일이나 Microsoft Access 데이터베이스(.accdb) 파일에 적용됩니다.

증상

Microsoft Access 데이터베이스에서 인덱스가 포함된 메모 필드를 만들거나 자동으로 인덱싱된 텍스트를 포함하는 필드 이름을 만들 때 필드에 약 3450자를 포함하는 텍스트를 입력할 수 없습니다. 필드에 더 많은 텍스트를 입력하거나 기존 데이터를 편집하려고 하면 다음과 같은 오류 메시지가 표시됩니다.

Run-time error '3709':

The search key not found in any record.

해결 방법

메모 필드에 많은 양의 텍스트를 입력해야 하는 경우 메모 필드의 인덱스 를 삭제합니다. 이렇게 하려면 다음 단계를 수행합니다.

  1. 디자인 보기에서 메모 필드가 있는 테이블을 엽니다.

  2. 보기 메뉴에서 인덱스를 클릭합니다.

    참고 Microsoft Office Access 2007에서 디자인 탭을 클릭한 다음 표시/숨기기 그룹에서 인덱스를 클릭합니다.

  3. 메모 필드의 인덱스 를 클릭한 다음 삭제합니다.

상태

Microsoft는 이 문서의 시작 부분에 나열된 Microsoft 제품의 문제임을 확인했습니다.

추가 정보

이 동작은 메모 필드를 Jet 3.5 이하에서 인덱싱할 수 없으므로 Microsoft Access 2000 이전 버전의 Microsoft Access에서는 발생하지 않습니다.

Access 2003에서 동작을 재현하는 단계

  1. 새 데이터베이스에서 다음 속성을 사용하여 새 테이블을 만든 다음 Table1로 저장합니다.

    Table: Table1
    ------------------------
    Field Name: Id
    Data Type: AutoNumber
    Primary Key
    
    Field Name: MyCode
    Data Type: Memo
    
  2. Table1 테이블에 다음 레코드를 추가합니다.

    Id MyCode
    ------------------------------------
    1 This is the Memo test data
    
  3. 다음 SQL 문을 복사하여 SQL 뷰의 새 쿼리에 붙여넣은 다음 쿼리를 query1로 저장합니다.

    UPDATE Table1 SET Table1.MyCode = [MyCode] & " " & [MyCode];

  4. 다음 모듈을 만든 다음 Module1에 저장합니다.

    Sub TestMemoUpdate()
        Dim i As Integer
        Docmd.setwarnings false
        For i = 1 To 10
        Docmd.openquery "Query1"   
        Next i
        Docmd.setwarnings true
    End Sub
    
    
  5. 포인터를 프로시저에 배치합니다. F5 키를 눌러 코드를 실행합니다.