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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per