Access esporta numeri interi lunghi come tipo di dati double con posizioni decimali in formato dBase IV (con estensione dbf)

Numero KB originale: 891775

Sintomi

Quando si crea una tabella di Microsoft Office Access che contiene numeri interi lunghi e quindi si esporta tale tabella come tipo dBase IV (.dbf), i numeri vengono convertiti in tipo di dati double e verranno visualizzate le posizioni decimali.

Ad esempio, è possibile esportare la tabella seguente:

UNITÀ
23411
111111111
1121212

Quando si importano e si visualizzano i dati in dBase IV, i dati sono simili ai seguenti:

UNITÀ
23411.00000
111111111.00000
1121212.00000

Nota

Quando si crea un campo numerico in una tabella di Access, si utilizza la proprietà FieldSize per controllare la quantità di spazio allocata per un campo specifico. Per i campi numerici, è possibile scegliere uno dei tipi numerici seguenti da un elenco:

  • Byte
  • Numero intero
  • Intero lungo
  • Celibe/nubile
  • Double
  • REPLICATIONID
  • Decimale

Per impostazione predefinita, l'impostazione per i campi numerici è Long Integer. Il valore Long Integer archivia numeri interi compresi tra circa -2 miliardi e +2 miliardi. In alternativa, è possibile scegliere il valore Double per archiviare i numeri con decimali.

Causa

Questo problema si verifica perché non esiste alcun tipo di dati Integer in dBase. dBase usa tipi di dati Numeric o Float. Access esegue il mapping di interi lunghi al tipo di dati Numeric in dBase.

Soluzione alternativa

Per risolvere questo problema, usare uno dei metodi seguenti:

Metodo 1: Modificare il file di database in dBase

Modificare la progettazione del file di database dopo che è stato aggiunto al catalogo dBase. Ad esempio, impostare la colonna Dec su 0 (zero). Per altre informazioni sulla progettazione di file di database in dBase, vedere la documentazione di dBase.

Metodo 2: Usare Microsoft Office Excel per formattare i dati

Usare Excel per formattare i dati nella tabella esportata. A tal fine, attenersi alla seguente procedura:

  1. In Excel aprire la tabella esportata come tipo dBase IV (*.dbf) da Access.
  2. Formattare le celle non formattate correttamente. A tale scopo, selezionare le celle e quindi fare clic su Celle dal menu Formato .
  3. Dopo aver formattato le celle, esportare il foglio di calcolo come file dBase IV. A tal fine, attenersi alla seguente procedura:
    1. Scegliere Salva con nome dal menu File.
    2. Nella casella Salva con nome fare clic su DBF 4 (dbase IV) (*.dbf) e quindi su Salva.

Metodo 3: Usare il codice di esempio per formattare i dati

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. I tecnici di supporto tecnico Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare routine, ma in nessuno caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare routine atte a soddisfare specifiche esigenze.

È possibile usare l'esempio di codice seguente per automatizzare il processo di formattazione dei dati. L'esempio salverà una tabella come file di testo. Quindi, automatizzerà Excel per aprire il file di testo e quindi salvarlo in formato dBase IV.

Nota

È necessario modificare i nomi di file in questo esempio di codice in modo che corrispondano ai nomi dei file.

Sub exportFormat()

    Dim xlApp       As Excel.Application
    Dim xlBook      As Excel.Workbook

    Const SAVETEXT = "C:\testValues.txt"
    Const SAVEDBF = "C:\testDBF.dbf"

    ' Save the table as a text file.
    DoCmd.TransferText acExportDelim, , "Table1", SAVETEXT, TRUE

    ' Set a reference to the Application object.
    Set xlApp =        ' Set a reference to the Workbook object.
    Set xlBook = xlApp.Workbooks.Open(SAVETEXT, , ,        ' Save the file to dBase IV format.
    xlBook.SaveAs Filename:=SAVEDBF, FileFormat:=xlDBF4
    xlBook.Close savechanges:=False

    xlApp.Quit
    Set xlBook = Nothing
    Set xlApp = Nothing

End Sub