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

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 264766 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Ten artykuł został opublikowany wcześniej pod numerem PL264766
Ten artykuł został zarchiwizowany. Jest oferowany „taki, jaki jest” i nie będzie już aktualizowany.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

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:
http://support.microsoft.com/default.aspx?scid=fh;PL;CNTACTMS
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 Object
    Dim 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 = Nothing
    End 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.

Właściwości

Numer ID artykułu: 264766 - Ostatnia weryfikacja: 24 lutego 2014 - Weryfikacja: 4.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 Standard Edition
Słowa kluczowe: 
kbnosurvey kbarchive kbqfe kbhotfixserver kbaccess kbaccess900bug kbbug kbdatabase kbfix kbgrpdsmdac kbjet KB264766

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com