Access 将长整型整数作为双数据类型,在 dBase IV ( 中使用十进制数。 .dbf) 格式

原始 KB 数:   891775

症状

当您创建包含长整型数字的 Microsoft Office Access 表,然后将该表导出为类型 dBase IV ( .dbf) ,这些数字将转换为 double 数据类型,并显示小数位数。

例如,您可以导出下表:

UNITS
23411
111111111
1121212

当您随后导入和查看 dBase IV 中的数据时,数据将显示为类似于以下内容:

UNITS
23411.00000
111111111.00000
1121212.00000

备注

在 Access 中的表中创建 "数字" 字段时,可以使用 FieldSize 属性来控制为特定字段分配的空间量。 对于 "号码" 字段,可以从列表中选择下列数值类型之一:

  • 字节
  • 整数
  • 长整型
  • 单一
  • 双精度
  • ReplicationID
  • 小数

默认情况下,"数字" 字段的设置为 "长整型"。 长整型值存储介于-2000000000 到 + 2000000000 之间的整数。 或者,可以选择双精度值来存储带小数的数字。

原因

出现此问题的原因是 dBase 中没有整数数据类型。 dBase 使用数值或 Float 数据类型。 Access 将长整型映射到 dBase 中的数值数据类型。

解决方法

若要解决此问题,请使用下列方法之一:

方法1:修改 dBase 中的数据库文件

在将数据库文件的设计添加到 dBase 目录之后,对其进行修改。 例如,将 Dec 列设置为 0 (零) 。 有关在 dBase 中设计数据库文件的详细信息,请参阅 dBase 文档。

方法2:使用 Microsoft Office Excel 设置数据格式

使用 Excel 对导出的表中的数据进行格式设置。 为此,请按照下列步骤操作:

  1. 在 Excel 中,从 Access 中打开导出为类型 dBase IV ( * .dbf) 的表格。
  2. 设置格式不正确的单元格的格式。 若要执行此操作,请选择单元格,然后单击 "格式" 菜单上的 "单元格"。
  3. 设置单元格格式之后,将电子表格导出为 dBase IV 文件。 为此,请按照下列步骤操作:
    1. 在“文件”**** 菜单上单击“另存为”****。
    2. 在 " 保存类型 " 框中,单击 " **DBF 4 (dbase IV) ( * .dbf) **,然后单击" 保存"。

方法3:使用示例代码设置数据格式

Microsoft 提供的编程示例仅用于进行说明,而不提供明示或默示担保。 这包括但不限于适销性或对特定用途的适用性的默示担保。 本文假设您熟悉正在演示的编程语言和用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能。 但是,他们不会修改这些示例以提供额外的功能或构建过程来满足您的特定要求。

您可以使用下面的代码示例自动设置数据格式的过程。 示例将一个表保存为文本文件。 然后,它将自动运行 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