L’accès provoque une erreur lorsque vous exportez des champs avec un type de données simple ou double vers Oracle

Numéro de la base de connaissances d’origine : 301915

Remarque

Vous devez disposer de connaissances de base en macro, codage et interopérabilité avant de commencer. Cet article s’applique à une base de données Microsoft Access (.mdb) et à un projet Microsoft Access (.adp).

Symptômes

Lorsque vous utilisez le pilote ODBC Oracle pour exporter une table Access qui a des champs de type de données Single ou Double, le pilote ne parvient pas à exporter ces champs comme suit.

Le pilote Microsoft Oracle affiche le message d’erreur suivant :

Microsoft Access n’a pas pu ajouter toutes les données à la table. Le contenu des champs des <> enregistrements numériques a été supprimé, et 0 enregistrement(s) a été perdu(s) en raison de violations de clé.

  • Si des données ont été supprimées, les données que vous avez collées ou importées ne correspondent pas aux types de données de champ ou à la propriété FieldSize dans la table de destination.
  • Si des enregistrements ont été perdus, soit les enregistrements que vous avez collés contiennent des valeurs de clé primaire qui existent déjà dans la table de destination, soit ils violent les règles d’intégrité référentielle pour une relation définie entre les tables. Tu veux quand même continuer ?

Les pilotes Oracle ODBC jusqu’à la version 8.1.6 comprise affichent le message d’erreur suivant :

ODBC - Échec de l’appel [Oracle][ODBC][ORA] ORA-01401 : Valeur insérée trop grande pour la colonne (#1401)

Cause

Dans Microsoft Access 97, le processus d’exportation convertit les champs de type de données Single et Double en VarChar2(40). Toutefois, dans Microsoft Access 2000 et versions ultérieures, les champs sont convertis en VarChar2(4), qui est trop petit pour contenir les données.

Résolution

Pour exporter correctement les données vers Oracle, utilisez une requête basée sur les tables appropriées. Utilisez la fonction CStr()pour convertir le type de données en String.

Par exemple, considérez la syntaxe SQL suivante :

SELECT tblExample.pkeyDataID, tblExample.dblTest
FROM tblExample;

où dblTest est un champ avec un type de données Double. Convertissez dblTest en type de données String en apportant la modification suivante à la syntaxe SQL :

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

La requête peut maintenant être exportée avec succès vers Oracle.

Ce problème est résolu dans le moteur de base de données Microsoft Jet 4.0 Service Pack 8 (SP8).

Statut

Microsoft a confirmé qu’il s’agit d’un problème dans les produits Microsoft répertoriés au début de cet article.

Informations supplémentaires

Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.