POPRAWKA: Błąd #USUNIĘTO podczas wstawiania rekordów o kluczu podstawowym typu CHAR

Ten artykuł został opublikowany wcześniej pod numerem PL264766
Ten artykuł został zarchiwizowany. Jest oferowany „taki, jaki jest” i nie będzie już aktualizowany.
Symptomy
Po wstawieniu nowego rekordu do połączonej tabeli ODBC, której kluczem podstawowym jest pole tekstowe o ustalonej długości (CHAR), we wszystkich polach nowego rekordu pojawia się błąd #USUNIĘTO.

UWAGA: Po zamknięciu i ponownym otwarciu połączonej tabeli nowo wstawiony rekord jest wyświetlany właściwie.
Przyczyna
Jeśli liczba wstawianych znaków jest mniejsza od maksymalnej długości pola, wiele sterowników ODBC do pola CHAR dodaje znaki spacji (lub „wypełnienia”). Aparat Microsoft Jet 4.0 niepoprawnie odczytuje uzupełnioną i wstawioną wartość, a następnie porównuje ją z oryginalną, nieuzupełnioną wartością. Ponieważ obie wartości są różne, aparat Jet informuje program Microsoft Access o braku nowo wstawionego rekordu.
Rozwiązanie
Poprawka jest obecnie dostępna w firmie Microsoft, ale jest przeznaczona tylko do rozwiązania problemu opisanego w tym artykule i powinna być stosowana tylko w systemach, w których ten problem występuje. Ta poprawka prawdopodobnie będzie testowana w późniejszym czasie, aby zapewnić dobrą jakość produktu. Jeżeli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca poczekanie na następny dodatek service pack dla aparatu Microsoft Jet zawierający tę poprawkę.

Aby natychmiast rozwiązać ten problem, należy skontaktować się z Pomocą techniczną firmy Microsoft w celu uzyskania poprawki. Aby uzyskać więcej informacji na temat dostępnych opcji pomocy technicznej oraz sposobu kontaktowania się z firmą Microsoft, odwiedź następującą witrynę w sieci Web:
Anglojęzyczna wersja tej poprawki powinna mieć następujące (lub nowsze) atrybuty pliku:
   Data        Godzina    Wersja      Rozmiar        Nazwa pliku     Platforma   -------------------------------------------------------------------   15/06/2000   20:34   4.0.4214.0   1,499,408   MSJET40.DLL   x86 
Obejście problemu
Jako podstawowego klucza tabeli użyj pola tekstowego o zmiennej długości (VARCHAR).
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "Informacje zawarte w tym artykule dotyczą".
Więcej informacji

Kroki prowadzące do odtworzenia problemu

Problem można odtworzyć, dołączając bazę danych programów DB2, Oracle lub Microsoft SQL Server. Problem nie występuje, jeśli połączona tabela nie zawiera co najmniej 60 rekordów.

Badając śledzenie ODBC wykonywane podczas operacji wstawiania, można zauważyć, że aparat Jet właściwie wstawia i ponownie wybiera rekord, a w pliku śledzenia nie występują żadne błędy. Problem pojawia się po pobraniu przez aparat Jet rekordu i próbie porównania ponownie wybranej wartości klucza z wartością wprowadzoną przez użytkownika.

Aby odtworzyć to zachowanie, wykonaj następujące kroki:
  1. Uruchom następujący kod języka Microsoft Visual Basic w celu wygenerowania tabeli i rekordów testowych:
    Sub GenerateTestTable()Dim conn As ObjectDim i As Long, sql as String   Set conn = CreateObject("adodb.connection")   ' W razie potrzeby zmień ciąg połączenia na ciąg wskazujący na serwer SQL.   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. Uruchom program Microsoft Access 2000 i dołącz tabelę tmp_chartest, utworzoną w poprzednim kroku.
  3. Otwórz nowo dołączoną tabelę i przewiń na jej ostatni rekord.
  4. Dodaj nowy rekord zawierający pole F1 = 071 i pole F2 = XXXXXXXXXX.
  5. Opuść rekord, a we wszystkich jego polach powinien pojawić się błąd #USUNIĘTO.
usunięty
Właściwości

Identyfikator artykułu: 264766 — ostatni przegląd: 02/24/2014 05:53:15 — zmiana: 4.0

  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 Standard Edition
  • kbnosurvey kbarchive kbqfe kbhotfixserver kbaccess kbaccess900bug kbbug kbdatabase kbfix kbgrpdsmdac kbjet KB264766
Opinia