Access verursacht einen Fehler, wenn Sie Felder mit dem Datentyp single oder double in Oracle exportieren.

Ursprüngliche KB-Nummer: 301915

Hinweis

Erfordert grundlegende Makro-, Codierungs- und Interoperabilitätskenntnisse. Dieser Artikel bezieht sich auf eine Microsoft Access-Datenbank (.mdb) und ein Microsoft Access-Projekt (ADP).

Symptome

Wenn Sie den Oracle ODBC-Treiber verwenden, um eine Access-Tabelle mit Feldern des Datentyps Single oder Double zu exportieren, kann der Treiber diese Felder nicht wie folgt exportieren.

Der Microsoft Oracle-Treiber zeigt die folgende Fehlermeldung an:

Microsoft Access konnte nicht alle Daten an die Tabelle anfügen. Die Inhalte von Feldern in <Zahlendatensätzen> wurden gelöscht, und 0 Datensätze gingen aufgrund von Schlüsselverletzungen verloren.

  • Wenn Daten gelöscht wurden, stimmen die eingefügten oder importierten Daten nicht mit den Felddatentypen oder der FieldSize-Eigenschaft in der Zieltabelle überein.
  • Wenn Datensätze verloren gehen, enthalten entweder die eingefügten Datensätze Primärschlüsselwerte, die bereits in der Zieltabelle vorhanden sind, oder sie verstoßen gegen referenzielle Integritätsregeln für eine zwischen Tabellen definierte Beziehung. Möchten Sie trotzdem fortfahren?

Die Oracle ODBC-Treiber bis einschließlich Version 8.1.6 zeigen die folgende Fehlermeldung an:

ODBC– Fehler beim Aufruf von [Oracle][ODBC][ORA] ORA-01401: Eingefügter Wert zu groß für Spalte (#1401)

Ursache

In Microsoft Access 97 konvertiert der Exportvorgang die Felder des Datentyps Single und Double in VarChar2(40). In Microsoft Access 2000 und höher werden die Felder jedoch in VarChar2(4) konvertiert, die zu klein sind, um die Daten aufzunehmen.

Lösung

Verwenden Sie eine Abfrage basierend auf den relevanten Tabellen, um die Daten erfolgreich nach Oracle zu exportieren. Verwenden Sie die CStr()-Funktion, um den Datentyp in String zu konvertieren.

Betrachten Sie beispielsweise die folgende SQL-Syntax:

SELECT tblExample.pkeyDataID, tblExample.dblTest
FROM tblExample;

Dabei ist dblTest ein Feld mit dem Datentyp Double. Konvertieren Sie dblTest in einen String-Datentyp, indem Sie die folgende Änderung an der SQL-Syntax vornehmen:

SELECT tblExample.pkeyDataID, CStr([dblTest]) AS Expr1
FROM tblExample;

Die Abfrage kann jetzt erfolgreich nach Oracle exportiert werden.

Dieses Problem wurde in Microsoft Jet 4.0 Database Engine Service Pack 8 (SP8) behoben.

Status

Microsoft hat bestätigt, dass dies ein Problem in den Microsoft-Produkten ist, die am Anfang dieses Artikels aufgeführt sind.

Weitere Informationen

Die in diesem Artikel genannten Fremdanbieterprodukte stammen von Herstellern, die von Microsoft unabhängig sind. Microsoft gewährt keine implizite oder sonstige Garantie in Bezug auf die Leistung oder Zuverlässigkeit dieser Produkte.