Oprava: #DELETED Chyba při vkládání záznamů s CHAR primární klíč

ID článku: 264766 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Vložíte-li nový záznam do propojené tabulky ODBC, který má pevnou délkou textového pole (CHAR) jako primární klíč, #DELETED, zobrazí se ve všech polích v nového záznamu.

Poznámka: Potom zavřete a znovu otevřete propojenou tabulku nově vložených záznamu se zobrazí a je správně vloženo.

Příčina

Mnoho ovladačů ODBC přidání mezer (nebo "plocha") pole typu CHAR, pokud je počet znaků, které vkládají, nižší než maximální délka pole. Microsoft Jet 4.0 nesprávně přečte zpět vložené, čalouněný hodnotu a porovná jej s původní hodnota unpadded. Vzhledem k tomu, že dvě hodnoty jsou odlišné, Jet zprávy do aplikace Microsoft Access, který nově vložený záznam nebyl nalezen.

Řešení

Tento problém vyřešíte instalací nejnovější aktualizace service pack pro stroj Jet 4.0. Další informace získáte následujícím článku báze Microsoft Knowledge Base:
239114Jak: Získat nejnovější aktualizaci Service Pack pro databázový stroj Microsoft Jet 4.0

Jak potíže obejít

Textové proměnné délky pole (VARCHAR) lze použít jako primární klíč pro tabulku.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku. Tento problém byl opraven v Jet 4.0 Service Pack 6 (SP6).

Další informace

Kroky pro reprodukci chování

Tento problém lze reprodukovat propojením k databázi DB2 a Oracle Microsoft SQL Server. Potíže pravděpodobně dojít, pokud nemáte alespoň 60 nebo více záznamů v propojené tabulce.

Přezkoumat trasování ODBC odebraných během operace vkládání uvidíte, že Jet vloží a správně reselects záznam a žádné chyby ve sledování. K problému dochází po Jet načte záznam a pokusí porovnat reselected hodnotu klíče s hodnotou, která byla zadána uživatelem.

Pro reprodukci tohoto chování, proveďte následující kroky:
  1. Spusťte následující kód jazyka Microsoft Visual Basic k vytvoření tabulky test a záznamy:
    Sub GenerateTestTable()
    Dim conn As Object
    Dim i As Long, sql as String
       Set conn = CreateObject("adodb.connection")
       ' Change connection string to point to your SQL Server if needed.
       conn.Open "Provider=SQLOLEDB;Server=(Local);Database=Pubs;UID=sa;PWD=;"
       On Error Resume Next
       conn.Execute "drop table tmp_chartest"
       On Error GoTo 0
       sql = "create table tmp_chartest(f1 char(5) primary key, f2 char(10))"
       conn.Execute sql
        For i = 1 To 70
            sql = "insert into tmp_chartest (f1,f2) values ('"
            sql = sql & Format(i, "000") & "','XXXXXXXXXX')"
            conn.Execute sql
        Next i
        conn.Close
        Set conn = Nothing
    End Sub
    					
  2. Spusťte aplikaci Microsoft Access 2000 a propojte tabulky tmp_chartest, která byla vytvořena v předchozím kroku.
  3. Otevřete nově propojené tabulky a přejděte na poslední záznam v tabulce.
  4. Přidání nového záznamu pomocí pole F1 = 071 a pole F2 = XXXXXXXXXX.
  5. Kartu mimo záznam, a by zjistíte, zobrazí všechna pole v #DELETED.

Vlastnosti

ID článku: 264766 - Poslední aktualizace: 7. dubna 2006 - Revize: 3.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 Standard Edition
Klíčová slova: 
kbmt kbqfe kbhotfixserver kbbug kbdatabase kbfix kbjet KB264766 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:264766

Dejte nám zpětnou vazbu