この特集のトップページへ
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)解説

バイナリ値

adBinarybinaryvarbinaryimagetimestamp固定長バイナリ型

日付/時刻値

adDate日付型のうち,Double型として表現されるもの(Date型)。整数部に1899年12月30日からの日数を,小数部分は分ならびに秒を含む
adDBDateyyyymmddyyyy=年,mm=月,dd=日)の形式の日付型
adDBTimehhmmsshh=時,mm=分,ss=秒)の形式の時刻型
adDBTimeStampdatetimesmalldatetimeyyyymmddhhmmss形式の日付時刻型
adFileTimeファイルのタイムスタンプ

文字列

adBSTRBSTR文字列
adCharchartextNullで終了する固定長ASCII文字列
adVarCharvarcharNullで終了する可変長ASCII文字列
adWCharncharntextsysnameNullで終了する固定長Unicode文字列
adVarWCharnvarcharNullで終了する可変長Unicode文字列

数値

adBooleanbitBoolean
adUnsignedTinyInttinyint1バイト符号なし整数
adTinyInt1バイト符号付き整数
adUnsignedSmallInt2バイト符号なし整数
adSmallIntsmallint2バイト符号付き整数(Integer型)
adUnsignedInt4バイト符号なし整数
adIntegerint4バイト符号付き整数(Long型)
adUnsignedBigInt8バイト符号なし整数
adBigInt8バイト符号付き正数
adSinglereal単精度浮動小数型(Single型)
adDoublefloat倍精度浮動小数型(Double型)
adCurrencymoneysmallmoney通貨型
adDecimal固定小数型
adNumericdecimalnumeric固定精度の値
adError32ビットのエラーコード(COMで使われるHRESULT値)
adGUIDuniqueidentifier128ビットGUID

オブジェクト

adDispatchCOMオブジェクトのIDispatchインタフェース
adUnknownCOMオブジェクトのIUnknownインタフェース

その他

adEmpty値なし
adVariantVariant
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プロパティが次の値であるかどうかを調べればよいということになる。

  • 文字列
    adCharadVarCharadWCharadVarWCharのいずれか

  • 日付
    adDBTimeStamp

  • 数値
     adBooleanadUnsignedTinyIntadSmallIntadIntegeradSingleadDoubleadCurrencyadNumericのいずれか

prevpg.gif Chapter 7 34/65 nextpg.gif