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

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 264766 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

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 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. 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.

Eigenschaften

Artikel-ID: 264766 - Geändert am: Sonntag, 23. Februar 2014 - Version: 3.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 Standard Edition
Keywords: 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbdatabase kbfix kbjet KB264766 KbMtde
Maschinell übersetzter Artikel
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.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 264766
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

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