この特集のトップページへ
>
Chapter 7:プレゼンテーション層の構築
7.4.6 顧客の検索
●[検索]ボタンが押されたときの処理
いままで説明してきたように,(1)文字列であればlike演算子を使う,(2)数値であれば=演算子を使う,(3)日付であれば#で括ってループ処理をする,といった具合に処理を分岐させるには,ユーザーがCOMBO_SEARCHFIELDコンボボックスで選択した列が文字を格納しているフィールドであるのか,それとも数値を格納しているフィールドであるのか,日付を格納しているフィールドであるのかを判断する必要がある。
あるフィールドがどのような型の値を保持しているのかを知るには,ADODB.RecordsetオブジェクトのFieldsコレクションから取得可能なFieldオブジェクトのTypeプロパティを利用する。たとえば,NAMEというフィールドが保持する値の型を調べるには,次のようにすればよい。
g_objRec.Fields("NAME").Type
Typeプロパティは,その型によってTable 7-12に示すいずれかの定数を返す。
Table 7-12 DataTypeEnum列挙型
| 定数(注1) | SQL Server 7.0またはMSDEの場合,それに対応する型(注2) | 解説 |
|---|---|---|
バイナリ値 | ||
| adBinary | binary,varbinary,image,timestamp | 固定長バイナリ型 |
日付/時刻値 | ||
| adDate | ― | 日付型のうち,Double型として表現されるもの(Date型)。整数部に1899年12月30日からの日数を,小数部分は分ならびに秒を含む |
| adDBDate | ― | yyyymmdd(yyyy=年,mm=月,dd=日)の形式の日付型 |
| adDBTime | ― | hhmmss(hh=時,mm=分,ss=秒)の形式の時刻型 |
| adDBTimeStamp | datetime,smalldatetime | yyyymmddhhmmss形式の日付時刻型 |
| adFileTime | ― | ファイルのタイムスタンプ |
文字列 | ||
| adBSTR | ― | BSTR文字列 |
| adChar | char,text | Nullで終了する固定長ASCII文字列 |
| adVarChar | varchar | Nullで終了する可変長ASCII文字列 |
| adWChar | nchar,ntext,sysname | Nullで終了する固定長Unicode文字列 |
| adVarWChar | nvarchar | Nullで終了する可変長Unicode文字列 |
数値 | ||
| adBoolean | bit | Boolean型 |
| adUnsignedTinyInt | tinyint | 1バイト符号なし整数 |
| adTinyInt | ― | 1バイト符号付き整数 |
| adUnsignedSmallInt | ― | 2バイト符号なし整数 |
| adSmallInt | smallint | 2バイト符号付き整数(Integer型) |
| adUnsignedInt | ― | 4バイト符号なし整数 |
| adInteger | int | 4バイト符号付き整数(Long型) |
| adUnsignedBigInt | ― | 8バイト符号なし整数 |
| adBigInt | ― | 8バイト符号付き正数 |
| adSingle | real | 単精度浮動小数型(Single型) |
| adDouble | float | 倍精度浮動小数型(Double型) |
| adCurrency | money,smallmoney | 通貨型 |
| adDecimal | ― | 固定小数型 |
| adNumeric | decimal,numeric | 固定精度の値 |
| adError | ― | 32ビットのエラーコード(COMで使われるHRESULT値) |
| adGUID | uniqueidentifier | 128ビットGUID |
オブジェクト | ||
| adDispatch | ― | COMオブジェクトのIDispatchインタフェース |
| adUnknown | ― | COMオブジェクトのIUnknownインタフェース |
その他 | ||
| adEmpty | ― | 値なし |
| adVariant | ― | Variant型 |
| adUserDefined | ― | ユーザー定義型 |
注1:該当する列が配列である場合には,adArray定数と論理和(Or)をとった結果が返される。しかし,リレーショナルデータベースをADOコンポーネントでアクセスする場合には,列が配列になることはあり得ないので,その説明は割愛する。
注2:SQL Server 6.5の場合には,若干対応する型が異なる。
ADOコンポーネントは,汎用的なデータベースエンジンと接続することが想定されているために,フィールドが持つ型も汎用的な設計となっている。そのため,FieldオブジェクトのTypeプロパティはTable 7-12に示したように実にたくさんの種類の型を返すようになっている。しかし,Table 7-12の中央列に示したとおり,データベースエンジンにSQL Server 7.0またはMSDEを使う場合には,そのうちのわずかな型しか使われない。
Table 7-12を参照するとわかるように,フィールドで格納している値の型が,文字列,数値,日付のどれであるかを調べるには,FieldオブジェクトのTypeプロパティが次の値であるかどうかを調べればよいということになる。
文字列
adChar,adVarChar,adWChar,adVarWCharのいずれか日付
adDBTimeStamp数値
adBoolean,adUnsignedTinyInt,adSmallInt,adInteger,adSingle,adDouble,adCurrency,adNumericのいずれか
| Chapter 7 34/65 |
