L'accesso causa un errore quando si esportano campi con tipo di dati singolo o doppio in Oracle

Numero KB originale: 301915

Nota

Richiede competenze di base per macro, codifica e interoperabilità. Questo articolo si applica a un database di Microsoft Access (.mdb) e a un progetto di Microsoft Access (con estensione adp).

Sintomi

Quando si usa il driver ODBC Oracle per esportare una tabella di Access con campi di tipo Single o Double, il driver non esporta tali campi come indicato di seguito.

Il driver Microsoft Oracle visualizza il messaggio di errore seguente:

Impossibile aggiungere tutti i dati alla tabella. Il contenuto dei campi nei <record numerici> è stato eliminato e 0 record sono andati persi a causa di violazioni delle chiavi.

  • Se i dati sono stati eliminati, i dati incollati o importati non corrispondono ai tipi di dati del campo o alla proprietà FieldSize nella tabella di destinazione.
  • Se i record sono stati persi, i record incollati contengono valori di chiave primaria già presenti nella tabella di destinazione oppure violano le regole di integrità referenziale per una relazione definita tra tabelle. Vuoi continuare comunque?

I driver ODBC Oracle fino alla versione 8.1.6 inclusa visualizzano il messaggio di errore seguente:

ODBC : chiamata non riuscita [Oracle][ODBC][ORA] ORA-01401: valore inserito troppo grande per la colonna (#1401)

Causa

In Microsoft Access 97 il processo di esportazione converte i campi tipo di dati Single e Double in VarChar2(40). Tuttavia, in Microsoft Access 2000 e versioni successive, i campi vengono convertiti in VarChar2(4), che è troppo piccolo per contenere i dati.

Risoluzione

Per esportare correttamente i dati in Oracle, usare una query basata sulle tabelle pertinenti. Utilizzare la funzione CStr() per convertire il tipo di dati in String.

Si consideri, ad esempio, la sintassi SQL seguente:

SELECT tblExample.pkeyDataID, tblExample.dblTest
FROM tblExample;

dove dblTest è un campo con tipo di dati Double. Convertire dblTest in un tipo di dati String apportando la modifica seguente alla sintassi SQL:

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

La query può ora essere esportata correttamente in Oracle.

Questo problema viene risolto in Microsoft Jet 4.0 Database Engine Service Pack 8 (SP8).

Stato

Microsoft ha confermato che si tratta di un problema nei prodotti Microsoft elencati all'inizio di questo articolo.

Ulteriori informazioni

I prodotti di terze parti citati in questo articolo sono realizzati da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti.