"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:
Öppna tabellen med fältet PM i designvyn.
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.
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
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: MemoLägg till följande post i tabellen Table1:
Id MyCode ------------------------------------ 1 This is the Memo test dataKopiera 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];
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 SubPlacera pekaren så att den står med i proceduren. Kör koden genom att trycka på F5.