Access では、dBase IV (.dbf) 形式の小数点以下の桁数を持つ倍精度浮動小数点型として長整数がエクスポートされます

元の KB 番号: 891775

現象

長整数を含む Microsoft Office Access テーブルを作成し、そのテーブルを dBase IV (.dbf) 型としてエクスポートすると、数値は二重データ型に変換され、小数点以下の桁数が表示されます。

たとえば、次の表をエクスポートできます。

単位
23411
111111111
1121212

その後、dBase IV でデータをインポートして表示すると、次のようなデータが表示されます。

単位
23411.00000
111111111.00000
1121212.00000

注:

Access のテーブルに数値フィールドを作成する場合は、FieldSize プロパティを使用して、特定のフィールドに割り当てられる領域の量を制御します。 数値フィールドの場合、一覧から次のいずれかの数値型を選択できます。

  • バイト型 (Byte)
  • 整数
  • 長整数型 (Long Integer)
  • 1 行
  • 倍精度浮動小数点数
  • ReplicationID
  • 10 進数

既定では、数値フィールドの設定は Long Integer です。 Long 整数値には、約 20 億から +20 億の範囲の整数が格納されます。 または、Double 値を選択して、小数部の数値を格納することもできます。

原因

この問題は、dBase に Integer データ型がないために発生します。 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