Chyba 3709 za běhu, když zadáte velké množství textu do pole Memo, které obsahuje index v Accessu

Střední: Vyžaduje základní dovednosti v makrech, kódování a interoperabilitě.

Tento článek se týká souboru databáze Microsoft Access (MDB) nebo souboru databáze Microsoft Access (.accdb).

Příznaky

Když v databázi Microsoft Accessu vytvoříte pole Memo, které obsahuje index, nebo vytvoříte název pole, které obsahuje automaticky indexovaný text, nemůžete do pole zadat text, který obsahuje více než přibližně 3450 znaků. Při pokusu o zadání dalšího textu do pole nebo při pokusu o úpravu existujících dat se zobrazí následující chybová zpráva:

Run-time error '3709':

The search key not found in any record.

Řešení

Pokud musíte do pole Memo zadat velké množství textu, odstraňte index pole Memo. Postupujte takto:

  1. Otevřete tabulku s polem Memo v návrhovém zobrazení.

  2. V nabídce Zobrazení klikněte na Indexy.

    Poznámka V aplikaci Microsoft Office Access 2007 klikněte na kartu Návrh a potom klikněte na Indexy ve skupině Zobrazit nebo skrýt .

  3. Klikněte na index pole Memo a odstraňte ho.

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny na začátku tohoto článku.

Další informace

K tomuto chování nedochází ve verzích aplikace Microsoft Access před aplikací Microsoft Access 2000, protože pole Memo nelze indexovat v jet 3.5 a starší.

Kroky pro reprodukci chování v Accessu 2003

  1. V nové databázi vytvořte novou tabulku s následujícími vlastnostmi a pak ji uložte jako tabulku Table1:

    Table: Table1
    ------------------------
    Field Name: Id
    Data Type: AutoNumber
    Primary Key
    
    Field Name: MyCode
    Data Type: Memo
    
  2. Do tabulky Table1 přidejte následující záznam:

    Id MyCode
    ------------------------------------
    1 This is the Memo test data
    
  3. Zkopírujte následující příkaz SQL, vložte ho do nového dotazu v zobrazení SQL a pak dotaz uložte jako dotaz1:

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

  4. Vytvořte následující modul a pak ho uložte 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. Umístěte ukazatel tak, aby byl v proceduře. Stisknutím klávesy F5 spusťte kód.