Access экспортирует длинные целые числа как тип данных double с десятичными знаками в формате dBase IV (DBF)

Исходный номер базы знаний: 891775

Симптомы

Когда вы создаете таблицу Microsoft Office Access, содержащую длинные целые числа, а затем экспортируете эту таблицу как тип dBase IV (DBF), числа преобразуются в тип данных double и будут отображать десятичные разряды.

Например, можно экспортировать следующую таблицу:

ЕДИНИЦ
23411
111111111
1121212

При импорте и просмотре данных в dBase IV данные отображаются следующим образом:

ЕДИНИЦ
23411.00000
111111111.00000
1121212.00000

Примечание.

При создании числового поля в таблице в Access используется свойство FieldSize для управления объемом пространства, выделенного для определенного поля. Для числовых полей можно выбрать один из следующих числовых типов в списке:

  • Байт
  • Integer
  • Длинное целое
  • Одинарное с плавающей точкой
  • Двойное с плавающей точкой
  • ReplicationID
  • Десятичное число

По умолчанию для числовых полей задано значение Long Integer. Значение Long Integer хранит целые числа, которые варьируются от -2 млрд до +2 млрд. Кроме того, можно выбрать значение Double для хранения чисел с десятичными знаками.

Причина

Эта проблема возникает из-за отсутствия типа данных Integer в dBase. dBase использует типы данных Numeric или Float. Access сопоставляет длинные целые числа с типом данных Numeric в dBase.

Обходной путь

Чтобы обойти эту проблему, используйте один из следующих методов:

Способ 1. Изменение файла базы данных в dBase

Измените структуру файла базы данных после его добавления в каталог dBase. Например, задайте для столбца Dec значение 0 (ноль). Дополнительные сведения о проектировании файлов базы данных в dBase см. в документации по dBase.

Способ 2. Форматирование данных с помощью Microsoft Office Excel

Используйте Excel для форматирования данных в экспортируемой таблице. Для этого выполните следующие действия:

  1. В Excel откройте таблицу, экспортированную как тип dBase IV (*.dbf) из Access.
  2. Отформатируйте ячейки, которые неправильно отформатированы. Для этого выделите ячейки и нажмите кнопку Ячейки в меню Формат .
  3. После форматирования ячеек экспортируйте электронную таблицу в виде файла dBase IV. Для этого выполните следующие действия:
    1. В меню Файл выберите команду Сохранить как.
    2. В поле Тип файла выберите DBF 4 (dbase IV) (*.dbf) и нажмите кнопку Сохранить.

Способ 3. Использование примера кода для форматирования данных

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут объяснить функциональность отдельной процедуры. обязаны изменять примеры для реализации дополнительных возможностей или удовлетворения требований конкретных пользователей.

Следующий пример кода можно использовать для автоматизации процесса форматирования данных. Пример сохранит таблицу в виде текстового файла. Затем приложение Excel автоматически откроет текстовый файл и сохранит его в формате dBase IV.

Примечание.

Имена файлов в этом примере кода необходимо изменить в соответствии с именами файлов.

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