フィールドのデータ型を取得する
Sub フィールドのデータ型取得() Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset Dim FileName As String, i As Integer, DataType As Long FileName = ThisWorkbook.Path & "\mdb\2-sampleDB.mdb" myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName myRS.Open "伝票履歴", myCon, adOpenForwardOnly, adLockReadOnly 'フィールド名を書き出す For i = 1 To myRS.Fields.Count Cells(1, i) = myRS.Fields(i - 1).Name Next For i = 1 To myRS.Fields.Count DataType = myRS.Fields(i - 1).Type Cells(2, i) = DataType 'フィールドのデータ型(数値)を書き出す Cells(3, i) = getDataType(DataType) 'フィールドのデータ型(文字列)を書き出す Next myRS.Close: Set myRS = Nothing myCon.Close: Set myCon = Nothing End Sub
Function getDataType(tmpLng As Long) As String Dim tmpStr As String '定数に応じた文字列を返す Select Case tmpLng Case adInteger: tmpStr = "数値型" Case adDate: tmpStr = "日付/時刻型" Case adBoolean: tmpStr = "Yes/No型" Case adVarWChar: tmpStr = "文字列型" Case Else: tmpStr = "その他のデータ型" End Select getDataType = tmpStr End Function
フィールドのデータ型を取得するにはFieldオブジェクトのTypeプロパティを使用する。
Typeプロパティにはデータ型を表す定数が格納されているが、わかりにくいので「getDataType」関数で文字列に変換している。
定数 | 値 | 説明 |
---|---|---|
adArray (ADOX には適用せず。) |
0x2000 | 常に別のデータ型定数と組み合わされ、そのデータ型の配列を示すフラグ値です。 |
adBigInt | 20 | 8 バイトの符号付き整数を示します (DBTYPE_I8)。 |
adBinary | 128 | バイナリ値を示します (DBTYPE_BYTES)。 |
adBoolean | 11 | ブール値を示します (DBTYPE_BYTES)。 |
adBSTR | 8 | Null で終了する Unicode 文字列を示します (DBTYPE_BSTR)。 |
adChapter | 136 | 子行セットの行を識別する 4 バイト チャプタ値を示します (DBTYPE_HCHAPTER)。 |
adChar | 129 | 文字列値を示します (DBTYPE_STR)。 |
adCurrency | 6 | 通貨値を示します (DBTYPE_CY)。通貨型は小数点以下 4 桁の固定小数点の数値です。スケールが 10,000 の、8 バイトの符号付き整数で格納します。 |
adDate | 7 | 日付値を示します (DBTYPE_DATE)。日付型は倍精度浮動小数点数型 (Double) で格納され、整数部分は 1899 年 12 月30 日からの日数を、分数部分は日数の分数を表します。 |
adDBDate | 133 | 日付値 (yyyymmdd) を示します (DBTYPE_DBDATE)。 |
adDBTime | 134 | 時刻値 (hhmmss) を示します (DBTYPE_DBTIME)。 |
adDBTimeStamp | 135 | 日付/時刻スタンプ (yyyymmddhhmmss および 10 億分の 1 桁までの分数) を示します (DBTYPE_DBTIMESTAMP)。 |
adDecimal | 14 | 固定精度およびスケールの正確な数値を示します (DBTYPE_DECIMAL)。 |
adDouble | 5 | 倍精度浮動小数点値を示します (DBTYPE_R8)。 |
adEmpty | 0 | 値を指定しません (DBTYPE_EMPTY)。 |
adError | 10 | 32 ビット エラー コードを示します (DBTYPE_ERROR)。 |
adFileTime | 64 | 1601 年 1 月 1 日からの時間を示す 64 ビット値を 100 ナノ秒単位で示します (DBTYPE_FILETIME)。 |
adGUID | 72 | 固有のグローバル識別子 (GUID) を示します (DBTYPE_GUID)。 |
adIDispatch | 9 | COM オブジェクトの IDispatch インターフェイスへのポインタを示します (DBTYPE_IDISPATCH)。 注意 このデータ型は、現在は ADO ではサポートされていません。使用すると予期しない結果になることがあります。 |
adInteger | 3 | 4 バイトの符号付き整数を示します (DBTYPE_I4)。 |
adIUnknown | 13 | COM オブジェクトの IUnknown インターフェイスへのポインタを示します (DBTYPE_IUNKNOWN)。 注意 このデータ型は、現在は ADO ではサポートしていません。使用すると予期しない結果になることがあります。 |
adLongVarBinary | 205 | 長バイナリ値を示します (Parameter オブジェクトのみ)。 |
adLongVarChar | 201 | 長文字列の値を示します (Parameter オブジェクトのみ)。 |
adLongVarWChar | 203 | Null で終了する Unicode 文字列値を示します (Parameter オブジェクトのみ)。 |
adNumeric | 131 | 固定精度およびスケールの正確な数値を示します (DBTYPE_NUMERIC)。 |
adPropVariant | 138 | オートメーション PROPVARIANT を示します (DBTYPE_PROP_VARIANT)。 |
adSingle | 4 | 単精度浮動小数点値を示します (DBTYPE_R4)。 |
adSmallInt | 2 | 2 バイトの符号付き整数を示します (DBTYPE_I2)。 |
adTinyInt | 16 | 1 バイトの符号付き整数を示します (DBTYPE_I1)。 |
adUnsignedBigInt | 21 | 8 バイトの符号なし整数を示します (DBTYPE_I8)。 |
adUnsignedInt | 19 | 4 バイトの符号なし整数を示します (DBTYPE_I4)。 |
adUnsignedSmallInt | 18 | 2 バイトの符号なし整数を示します (DBTYPE_I2)。 |
adUnsignedTinyInt | 17 | 1 バイトの符号なし整数を示します (DBTYPE_I1)。 |
adUserDefined | 132 | ユーザー定義の変数を示します (DBTYPE_UDT)。 |
adVarBinary | 204 | バイナリ値を示します (Parameter オブジェクトのみ)。 |
adVarChar | 200 | 文字列値を示します (Parameter オブジェクトのみ)。 |
adVariant | 12 | オートメーション バリアント型 (Variant) を示します (DBTYPE_VARIANT)。 注意 このデータ型は、現在は ADO ではサポートされていません。使用すると予期しない結果になることがあります。 |
adVarNumeric | 139 | 数値を示します (Parameter オブジェクトのみ)。 |
adVarWChar | 202 | Null で終了する Unicode 文字列を示します (Parameter オブジェクトのみ)。 |
adWChar | 130 | Null で終了する Unicode 文字列を示します (DBTYPE_WSTR)。 |