"Körningsfel '3709'" när du anger en stor mängd text i ett PM-fält som innehåller ett index i Access

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Måttlig: Kräver grundläggande makron, kodning och kompatibilitetsfärdigheter.

Den här artikeln gäller en Microsoft Access-databasfil (.mdb) eller en Microsoft Access-databasfil (.accdb).

Symptom

När du skapar ett PM-fält i en Microsoft Access-databas som innehåller ett index eller skapar ett fältnamn som innehåller den automatiskt indexerade texten kan du inte skriva in texten som innehåller mer än 3 450 tecken i fältet. När du försöker skriva in mer text i fältet eller försöka redigera befintliga data får du följande felmeddelande:

Run-time error '3709':

The search key not found in any record.

Lösning

Om du måste ange en stor mängd text i PM-fältet tar du bort indexet för PM-fältet. Följ de här anvisningarna:

  1. Öppna tabellen med fältet PM i designvyn.

  2. Klicka på Index på Visa-menyn.

    Obs! I Microsoft Office Access 2007 klickar du på fliken Design och sedan på Index i gruppen Visa/dölj.

  3. Klicka på indexet för PM-fältet och ta sedan bort det.

Status

Microsoft har bekräftat att det här är ett problem i de Microsoft-produkter som listas i början av den här artikeln.

Mer information

Det här beteendet inträffar inte i versioner av Microsoft Access före Microsoft Access 2000 eftersom PM-fält inte kunde indexeras i Jet 3.5 och tidigare.

Steg för att återskapa beteendet i Access 2003

  1. Skapa en ny tabell i en ny databas med följande egenskaper och spara den som Tabell1:

    Table: Table1
    ------------------------
    Field Name: Id
    Data Type: AutoNumber
    Primary Key
    
    Field Name: MyCode
    Data Type: Memo
    
  2. Lägg till följande post i tabellen Table1:

    Id MyCode
    ------------------------------------
    1 This is the Memo test data
    
  3. Kopiera följande SQL, klistra in den i en ny fråga i SQL och spara sedan frågan som fråga1:

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

  4. Skapa följande modul och spara den sedan Modul1:

    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. Placera pekaren så att den står med i proceduren. Kör koden genom att trycka på F5.