Update: #DELETED Fehler beim Einfügen von Datensätzen mit CHAR-Primärschlüssel

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

264766
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Problembeschreibung
Beim Einfügen eines neuen Datensatzes in einer verknüpften ODBC-Tabelle, die ein fester Länge Text-Feld (CHAR) als Primärschlüssel wird #DELETED in alle Felder im neuen Datensatz angezeigt.

Hinweis: Wenn Sie dann schließen und erneut die verknüpfte Tabelle öffnen, wird der neu eingefügte Datensatz angezeigt und richtig eingelegt.
Ursache
Viele ODBC-Treiber hinzufügen, Leerzeichen, (oder "Auffüllen") ein CHAR-Feld, wenn die Anzahl der Zeichen, die eingefügt werden kleiner als die maximale Länge des Felds ist. Microsoft Jet 4.0 wird falsch liest wieder den Wert eingefügten, Innenabstand und vergleicht ihn mit dem ursprünglichen, unpadded-Wert. Da die beiden Werte unterschiedlich sind, meldet Jet zu Microsoft Access, das der neu eingefügte Datensatz nicht gefunden werden kann.
Lösung
Installieren Sie das neueste Jet 4.0 Servicepack, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
239114So Erhalten Sie das neueste Service Pack für die Microsoft Jet 4.0-Datenbank-Engine
Abhilfe
Verwenden Sie ein variabler Länge Textfeld (VARCHAR) als Primärschlüssel für die Tabelle.
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt. Dieses Problem wurde in Jet 4.0 Service Pack 6 (SP6) behoben.
Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

Sie können dieses Problem reproduzieren, mit einer DB2, Oracle oder Microsoft SQL Server-Datenbank verknüpfen. Das Problem scheint nicht auftreten, wenn Sie mindestens 60 oder mehr Datensätze in der verknüpften Tabelle haben.

Wenn Sie eine ODBC-Ablaufverfolgung während des Einfügevorgangs entnommen untersuchen, sehen Sie sich, dass Jet fügt ordnungsgemäß reselects den Datensatz, und, dass keine Fehler in der Ablaufverfolgung auftreten. Das Problem tritt nach Jet den Datensatz abruft und versucht, den reselected Schlüssel-Wert mit dem Wert vergleichen, die vom Benutzer eingegeben wurde.

Gehen Sie folgendermaßen vor um dieses Verhalten zu reproduzieren:
  1. Führen Sie die Test-Tabelle und Datensätze generieren den folgenden Microsoft Visual Basic-Code:
    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. Starten Sie Microsoft Access 2000, und verknüpfen Sie mit der Tmp_chartest-Tabelle, die in der vorherigen Schritt erstellt wurde.
  3. Öffnen Sie die neu verknüpfte Tabelle, und führen einen Bildlauf zum letzten Datensatz in der Tabelle.
  4. Hinzufügen eines neuen Datensatzes mit Feld F1 = 071 und Feld F2 = XXXXXXXXXX.
  5. Registerkarte Sie den Datensatz, und Sie sollten #DELETED in alle Felder angezeigt sehen.
gelöscht

Warnung: Dieser Artikel wurde automatisch übersetzt

Eigenschaften

Artikelnummer: 264766 – Letzte Überarbeitung: 02/23/2014 22:14:23 – Revision: 3.1

  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 Standard Edition
  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbdatabase kbfix kbjet KB264766 KbMtde
Feedback