2014年7月2日水曜日

[MS Access] DAO では 十進数(Decimal)型の定義ができない

Microsoft Access へ DAO で接続して CREATE TABLE 文を実行する場合に、Decimal型のフィールド(カラム)が含まれているとエラーになる。

エラーメッセージ:「3292 DAO.Database フィールド定義の構文エラーです。」

Microsoft Access のユーザー インターフェイスからは Decimal型 を使用することができますが、DDL ステートメントでは使えません。対策としては、CREATE TABLE の実行だけは DAO でなく ADO を使用すると解決できます。

同じく DDL からは使えないデータ型は以下の通り。
  1. 十進数(Decimal)
  2. オートナンバー型(AutoNumber)
  3. ハイパーリンク型(HyperLink)
  4. ルックアップ ウィザード(Lookup)

関連する資料のリンク

Access で使用できるフィールドのデータ型 (MDB)
http://office.microsoft.com/ja-jp/access-help/HP005238518.aspx

データ型とフィールド プロパティの概要
http://office.microsoft.com/ja-jp/access-help/HA010233292.aspx

How to use common Data Definition Language (DDL) SQL statements for the Jet database engine
http://support.microsoft.com/kb/180841
CREATE TABLE TestAllTypes (
  MyText       TEXT(50),
  MyMemo       MEMO,
  MyByte       BYTE,
  MyInteger    INTEGER,
  MyLong       LONG,
  MyAutoNumber COUNTER,
  MySingle     SINGLE,
  MyDouble     DOUBLE,
  MyCurrency   CURRENCY,
  MyReplicaID  GUID,
  MyDateTime   DATETIME,
  MyYesNo      YESNO,
  MyOleObject  LONGBINARY,
  MyBinary     BINARY(50)
)