Access veroorzaakt een fout wanneer u velden met gegevenstype één of twee keer exporteert naar Oracle

Origineel KB-nummer: 301915

Opmerking

Vereist basisvaardigheden op het gebied van macro's, coderen en interoperabiliteit. Dit artikel is van toepassing op een Microsoft Access-database (.mdb) en op een Microsoft Access-project (.adp).

Symptomen

Wanneer u het Oracle ODBC-stuurprogramma gebruikt om een Access-tabel met velden van het gegevenstype Single of Double te exporteren, kan het stuurprogramma deze velden niet als volgt exporteren.

Het Microsoft Oracle-stuurprogramma geeft het volgende foutbericht weer:

Microsoft Access kan niet alle gegevens toevoegen aan de tabel. De inhoud van velden in <nummerrecord> (s) is verwijderd en 0 records zijn verloren gegaan vanwege sleutelschendingen.

  • Als er gegevens zijn verwijderd, komen de gegevens die u hebt geplakt of geïmporteerd niet overeen met de veldgegevenstypen of de eigenschap FieldSize in de doeltabel.
  • Als records verloren zijn gegaan, bevatten de records die u hebt geplakt primaire sleutelwaarden die al bestaan in de doeltabel, of zijn ze in strijd met de regels voor referentiële integriteit voor een relatie die tussen tabellen is gedefinieerd. Wil je toch doorgaan?

De Oracle ODBC-stuurprogramma's tot en met versie 8.1.6 geven het volgende foutbericht weer:

ODBC - aanroep mislukt [Oracle][ODBC][ORA] ORA-01401: Ingevoegde waarde te groot voor kolom (#1401)

Oorzaak

In Microsoft Access 97 converteert het exportproces de velden Enkele en Dubbele gegevenstype naar VarChar2(40). In Microsoft Access 2000 en hoger worden de velden echter geconverteerd naar VarChar2(4), waardoor de gegevens te klein zijn.

Oplossing

Als u de gegevens naar Oracle wilt exporteren, gebruikt u een query op basis van de relevante tabellen. Gebruik de functie CStr()om het gegevenstype te converteren naar Tekenreeks.

Denk bijvoorbeeld aan de volgende SQL-syntaxis:

SELECT tblExample.pkeyDataID, tblExample.dblTest
FROM tblExample;

waarbij dblTest een veld is met het gegevenstype Double. Converteer dblTest naar een gegevenstype Tekenreeks door de volgende wijziging aan te brengen in de SQL-syntaxis:

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

De query kan nu worden geëxporteerd naar Oracle.

Dit probleem is opgelost in Microsoft Jet 4.0 Database Engine Service Pack 8 (SP8).

Status

Microsoft heeft bevestigd dat dit een probleem is in de Microsoft-producten die aan het begin van dit artikel worden vermeld.

Meer informatie

De producten van derden die in dit artikel worden besproken, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.