検証用ソースコードOption Compare Database‘参照設定 Microsoft Scripting Runtime
Dim Dic As DictionarySub CreateDataTypeEnumAndName()
Set Dic = New Dictionary
Dic.Add DataTypeEnum.dbAttachment, "添付ファイル データ"
Dic.Add DataTypeEnum.dbBinary, "バイナリ型データ"
Dic.Add DataTypeEnum.dbBoolean, "ブール型 (True または False) データ"
Dic.Add DataTypeEnum.dbByte, "バイト型 (8 ビット) データ"
Dic.Add DataTypeEnum.dbChar, "テキスト型データ (固定幅)"
Dic.Add DataTypeEnum.dbComplexByte, "複数値バイト型データ"
Dic.Add DataTypeEnum.dbComplexDecimal, "複数値 10 進型データ"
Dic.Add DataTypeEnum.dbComplexDouble, "複数値倍精度浮動小数点型データ"
Dic.Add DataTypeEnum.dbComplexGUID, "複数値 GUID 型データ"
Dic.Add DataTypeEnum.dbComplexInteger, "複数値整数型データ"
Dic.Add DataTypeEnum.dbComplexLong, "複数値長整数型データ"
Dic.Add DataTypeEnum.dbComplexSingle, "複数値単精度浮動小数点型データ"
Dic.Add DataTypeEnum.dbComplexText, "複数値テキスト型データ (可変幅)"
Dic.Add DataTypeEnum.dbCurrency, "通貨型データ"
Dic.Add DataTypeEnum.dbDate, "日付型データ"
Dic.Add DataTypeEnum.dbDouble, "倍精度浮動小数点型データ"
Dic.Add DataTypeEnum.dbGUID, "GUID 型データ"
Dic.Add DataTypeEnum.dbInteger, "整数型データ"
Dic.Add DataTypeEnum.dbLong, "長整数型データ"
Dic.Add DataTypeEnum.dbLongBinary, "バイナリ型データ (ビットマップ)"
Dic.Add DataTypeEnum.dbMemo, "メモ型データ (拡張テキスト)"
Dic.Add DataTypeEnum.dbSingle, "単精度浮動小数点型データ"
Dic.Add DataTypeEnum.dbText, "テキスト型データ (可変幅)"
Dic.Add DataTypeEnum.dbBigInt, "多倍長整数型データ"
Dic.Add DataTypeEnum.dbDecimal, "10 進型データ (ODBCDirect のみ)"
Dic.Add DataTypeEnum.dbFloat, "浮動小数点型データ (ODBCDirect のみ)"
Dic.Add DataTypeEnum.dbNumeric, "数値型データ (ODBCDirect のみ)"
Dic.Add DataTypeEnum.dbTime, "時刻形式のデータ (ODBCDirect のみ)"
Dic.Add DataTypeEnum.dbTimeStamp, "時刻および日付の形式のデータ (ODBCDirect のみ)"
Dic.Add DataTypeEnum.dbVarBinary, "可変長バイナリ型データ (ODBCDirect のみ)"
End SubSub CreateTableUsingDao()Dim dbsCurrent As DAO.Database
Dim tdfNew As DAO.TableDef
Dim errDB As DAO.Error
Dim F As DAO.Field2
Dim Var As Variant
Set dbsCurrent = OpenDatabase(CurrentDb.Name)
‘新しい TableDef オブジェクトを作成します。
Set tdfNew = dbsCurrent.CreateTableDef("テストテーブル")
‘ディクショナリ作成
Call CreateDataTypeEnumAndName
‘とりあえずダミーフィールドでテーブルを生成
Call AppendToTableDef(tdfNew, "テーブル生成のために作成したダミーフィールド", dbGUID)
dbsCurrent.TableDefs.Append tdfNew‘ディクショナリ分ループ
For Each Var In Dic
Call AppendToTableDef(tdfNew, Dic.Item(Var), Var)
Next Var
‘ダミーフィールド削除
Call tdfNew.Fields.Delete("テーブル生成のために作成したダミーフィールド")
‘生成結果 統計
Debug.Print "★—————————★"
Debug.Print "総定数数:" & Dic.Count
Debug.Print "うち生成数:" & tdfNew.Fields.Count‘生成結果 フィールド毎
Call ShowFields("テストテーブル", Dic)End SubSub AppendToTableDef(ByRef TD As DAO.TableDef, ByVal Name As String, ByVal TypeENum As DAO.DataTypeEnum)
On Error GoTo ERROR_EXITDim F As DAO.Field2
Dim errDB As DAO.Error
Set F = TD.CreateField(Name, TypeENum)
TD.Fields.Append F
Exit Sub
ERROR_EXIT:
For Each errDB In DBEngine.Errors
Debug.Print "■テーブル未作成———————■"
Debug.Print "NG Name: " & Name
Debug.Print "NG DataTypeEnum(DataTypeEnumName):" & TypeENum & "(" & Dic(TypeENum) & ")"
Debug.Print "NG Source: " & errDB.Source
Debug.Print "NG Description: " & errDB.Description
Debug.Print "NG HelpContext: " & errDB.HelpContext
Debug.Print "NG HelpFile: " & errDB.HelpFile
Debug.Print "NG Number: " & errDB.Number
Next
End SubSub ShowFields(ByVal TableName As String, ByRef Dic As Dictionary)
Dim Database As DAO.Database
Dim Field As DAO.Field
Dim i As Integer
Set Database = CurrentDb
For Each Field In Database.TableDefs(TableName).Fields
Debug.Print "★テーブル作成済———————★"
Debug.Print "OK Name:"; Field.Name
Debug.Print "OK DataTypeEnum(DataTypeEnumName):" & Field.Type & "(" & Dic(Field.Type) & ")"
Debug.Print "OK Size:" & Field.Size
Next
End Sub
結果
作成できたデータ型
OK Name:添付ファイル データ
OK DataTypeEnum(DataTypeEnumName):101(添付ファイル データ)
OK Name:バイナリ型データ
OK DataTypeEnum(DataTypeEnumName):9(バイナリ型データ)
OK Name:ブール型 (True または False) データ
OK DataTypeEnum(DataTypeEnumName):1(ブール型 (True または False) データ)
OK Name:バイト型 (8 ビット) データ
OK DataTypeEnum(DataTypeEnumName):2(バイト型 (8 ビット) データ)
OK Name:複数値バイト型データ
OK DataTypeEnum(DataTypeEnumName):102(複数値バイト型データ)
OK Name:複数値 10 進型データ
OK DataTypeEnum(DataTypeEnumName):108(複数値 10 進型データ)
OK Name:複数値倍精度浮動小数点型データ
OK DataTypeEnum(DataTypeEnumName):106(複数値倍精度浮動小数点型データ)
OK Name:複数値 GUID 型データ
OK DataTypeEnum(DataTypeEnumName):107(複数値 GUID 型データ)
OK Name:複数値整数型データ
OK DataTypeEnum(DataTypeEnumName):103(複数値整数型データ)
OK Name:複数値長整数型データ
OK DataTypeEnum(DataTypeEnumName):104(複数値長整数型データ)
OK Name:複数値単精度浮動小数点型データ
OK DataTypeEnum(DataTypeEnumName):105(複数値単精度浮動小数点型データ)
OK Name:複数値テキスト型データ (可変幅)
OK DataTypeEnum(DataTypeEnumName):109(複数値テキスト型データ (可変幅))
OK Name:通貨型データ
OK DataTypeEnum(DataTypeEnumName):5(通貨型データ)
OK Name:日付型データ
OK DataTypeEnum(DataTypeEnumName):8(日付型データ)
OK Name:倍精度浮動小数点型データ
OK DataTypeEnum(DataTypeEnumName):7(倍精度浮動小数点型データ)
OK Name:GUID 型データ
OK DataTypeEnum(DataTypeEnumName):15(GUID 型データ)
OK Name:整数型データ
OK DataTypeEnum(DataTypeEnumName):3(整数型データ)
OK Name:長整数型データ
OK DataTypeEnum(DataTypeEnumName):4(長整数型データ)
OK Name:バイナリ型データ (ビットマップ)
OK DataTypeEnum(DataTypeEnumName):11(バイナリ型データ (ビットマップ))
OK Name:メモ型データ (拡張テキスト)
OK DataTypeEnum(DataTypeEnumName):12(メモ型データ (拡張テキスト))
OK Name:単精度浮動小数点型データ
OK DataTypeEnum(DataTypeEnumName):6(単精度浮動小数点型データ)
OK Name:テキスト型データ (可変幅)
OK DataTypeEnum(DataTypeEnumName):10(テキスト型データ (可変幅))
作成できなかったデータ型
NG Name: テキスト型データ (固定幅)
NG DataTypeEnum(DataTypeEnumName):18(テキスト型データ (固定幅))
NG Description: 無効な処理です。
NG Name: 多倍長整数型データ
NG DataTypeEnum(DataTypeEnumName):16(多倍長整数型データ)
NG Description: フィールドのデータ型が正しくありません。
NG Name: 10 進型データ (ODBCDirect のみ)
NG DataTypeEnum(DataTypeEnumName):20(10 進型データ (ODBCDirect のみ))
NG Description: フィールドのデータ型が正しくありません。
NG Name: 浮動小数点型データ (ODBCDirect のみ)
NG DataTypeEnum(DataTypeEnumName):21(浮動小数点型データ (ODBCDirect のみ))
NG Description: フィールドのデータ型が正しくありません。
NG Name: 数値型データ (ODBCDirect のみ)
NG DataTypeEnum(DataTypeEnumName):19(数値型データ (ODBCDirect のみ))
NG Description: フィールドのデータ型が正しくありません。
NG Name: 時刻形式のデータ (ODBCDirect のみ)
NG DataTypeEnum(DataTypeEnumName):22(時刻形式のデータ (ODBCDirect のみ))
NG Description: フィールドのデータ型が正しくありません。
NG Name: 時刻および日付の形式のデータ (ODBCDirect のみ)
NG DataTypeEnum(DataTypeEnumName):23(時刻および日付の形式のデータ (ODBCDirect のみ))
NG Description: フィールドのデータ型が正しくありません。
NG Name: 可変長バイナリ型データ (ODBCDirect のみ)
NG DataTypeEnum(DataTypeEnumName):17(可変長バイナリ型データ (ODBCDirect のみ))
NG Description: フィールドのデータ型が正しくありません。
データ型の比較
Office 2013 and later
Access データベース エンジンは、いくつかの重なり合うデータ型セットを認識します。Access では、テーブルのデザイン ビュー、[クエリ パラメーター] ダイアログ ボックス、Visual Basic、およびクエリの SQL ビューでデータ型を設定することができます。
次の表で、各見出しに対する 5 組のデータ型を比較します。最初の列は、テーブル デザイン ビューで利用可能な Type プロパティの設定の一覧と、数値型のデータに対する FieldSize/ファイル サイズプロパティの 5 つの設定の一覧です。2 番目の列は、[クエリ パラメーター] ダイアログ ボックスでパラメーター クエリをデザインするときに使用可能な、最初の列に対応するクエリ パラメーターのデータ型です。3 番目の列は、最初の列に対応する Visual Basic のデータ型の一覧です。4 番目の列は、ADO の Field オブジェクトのデータ型の一覧です。5 番目の列は、Access データベース エンジンで定義される Jet データベース エンジンの SQL データ型およびその有効な同義語です。
テーブルのフィールド |
クエリ パラメーター |
Visual Basic |
ADO のデータ型プロパティの定数 |
Access データベース エンジンの SQL および同義語 |
---|---|---|---|---|
サポートしません |
バイナリ型 (Binary) |
サポートしません |
adBinary |
BINARY (メモを参照) |
はい/いいえ型 |
はい/いいえ型 |
ブール型 (Boolean) |
adBoolean |
BOOLEAN |
数値型 |
バイト型 (Byte) |
バイト型 (Byte) |
adUnsignedTinyInt |
BYTE |
オートナンバー型 |
長整数型 (Long Integer) |
Long 型 (Long) |
adInteger |
COUNTER |
通貨型 (Currency) |
通貨型 (Currency) |
通貨型 (Currency) |
adCurrency |
CURRENCY |
日付/時刻型 (Date/Time) |
日付/時刻型 (Date/Time) |
日付型 (Date) |
adDate |
DATETIME |
数値型 |
倍精度浮動小数点型 (Double) |
倍精度浮動小数点型 (Double) |
adDouble |
DOUBLE |
オートナンバー型/GUID (FieldSize が |
レプリケーション ID 型 (Replication ID) |
サポートしません |
adGUID |
GUID |
数値型 |
長整数型 (Long Integer) |
Long 型 (Long) |
adInteger |
LONG (メモを参照) |
OLE オブジェクト型 (OLE Object) |
OLE オブジェクト型 (OLE Object) |
文字列型 (String) |
adLongVarBinary |
LONGBINARY |
メモ型 (Memo) |
メモ型 (Memo) |
文字列型 (String) |
adLongVarWChar |
LONGTEXT |
数値型 |
単精度浮動小数点型 (Single) |
単精度浮動小数点型 (Single) |
adSingle |
SINGLE |
数値型 |
整数型 (Integer) |
整数型 (Integer) |
adSmallInt |
SHORT (メモを参照) |
テキスト型 (Text) |
テキスト型 (Text) |
文字列型 (String) |
adVarWChar |
TEXT |
ハイパーリンク |
メモ型 (Memo) |
文字列型 (String) |
adLongVarWChar |
LONGTEXT |
サポートしません |
値 |
バリアント型 (Variant) |
adVariant |
VALUE (メモを参照) |
メモ |
---|
|
コメント