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

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.

264766
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
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 ObjectDim 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 = NothingEnd 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.
Odstranit

Upozornění: Tento článek byl přeložen automaticky

Vlastnosti

ID článku: 264766 - Poslední kontrola: 02/28/2014 11:49:55 - Revize: 3.1

  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 Standard Edition
  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbdatabase kbfix kbjet KB264766 KbMtcs
Váš názor