Access exporte des nombres entiers longs en tant que type de données double avec des décimales au format dBase IV (.dbf)

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

Symptômes

Lorsque vous créez une table Microsoft Office Access qui contient des nombres entiers longs, puis que vous exportez cette table en tant que type dBase IV (.dbf), les nombres sont convertis en type de données double et affichent des décimales.

Par exemple, vous pouvez exporter le tableau suivant :

UNITÉS
23411
111111111
1121212

Lorsque vous importez et affichez ensuite les données dans dBase IV, les données ressemblent à ce qui suit :

UNITÉS
23411.00000
111111111.00000
1121212.00000

Remarque

Lorsque vous créez un champ numérique dans une table dans Access, vous utilisez la propriété FieldSize pour contrôler la quantité d’espace allouée à un champ particulier. Pour les champs numériques, vous pouvez choisir l’un des types numériques suivants dans une liste :

  • Octet
  • Entier
  • Entier long
  • Unique
  • Double
  • ReplicationID
  • Décimal

Par défaut, le paramètre des champs numériques est Entier long. La valeur de l’entier long stocke des nombres entiers compris entre -2 milliards et +2 milliards. Vous pouvez également choisir la valeur Double pour stocker des nombres avec des décimales.

Cause

Ce problème se produit car il n’existe aucun type de données Integer dans dBase. dBase utilise les types de données Numeric ou Float. Access mappe les entiers longs au type de données Numeric dans dBase.

Solution de contournement

Pour contourner ce problème, utilisez l’une des méthodes suivantes :

Méthode 1 : Modifier le fichier de base de données dans dBase

Modifiez la conception du fichier de base de données après son ajout au catalogue dBase. Par exemple, définissez la colonne Dec sur 0 (zéro). Pour plus d’informations sur la conception de fichiers de base de données dans dBase, consultez la documentation dBase.

Méthode 2 : Utiliser Microsoft Office Excel pour mettre en forme les données

Utilisez Excel pour mettre en forme les données du tableau que vous avez exporté. Pour cela, procédez comme suit :

  1. Dans Excel, ouvrez le tableau que vous avez exporté en tant que type dBase IV (*.dbf) à partir d’Access.
  2. Mettez en forme les cellules qui ne sont pas correctement mises en forme. Pour ce faire, sélectionnez les cellules, puis cliquez sur Cellules dans le menu Format .
  3. Après avoir mis en forme les cellules, exportez la feuille de calcul en tant que fichier dBase IV. Pour cela, procédez comme suit :
    1. Dans le menu Fichier, cliquez sur Enregistrer sous.
    2. Dans la zone Type de fichier, cliquez sur DBF 4 (dbase IV) (*.dbf), puis sur Enregistrer.

Méthode 3 : Utiliser un exemple de code pour mettre en forme les données

Microsoft fournit des exemples de programmation à titre d’illustration uniquement, sans garantie expresse ou implicite. Cela inclut, sans y être limité, les garanties implicites de commercialisation et d’adaptation à un but en particulier. Cet article considère que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support Microsoft peuvent expliquer la fonctionnalité d’une procédure en particulier. Toutefois, ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques.

Vous pouvez utiliser l’exemple de code suivant pour automatiser le processus de mise en forme des données. L’exemple enregistre une table en tant que fichier texte. Ensuite, il automatise Excel pour ouvrir le fichier texte, puis l’enregistrer au format dBase IV.

Remarque

Vous devez modifier les noms de fichiers dans cet exemple de code pour qu’ils correspondent à vos noms de fichiers.

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