HOME > 即効テクニック > AccessVBA > データ操作 > レコードを検索する

即効テクニック

データ操作

レコードを検索する

(Access 2000/2002/2003)
●概要●
構文  expression.FindRecord(FindWhat, Match, MatchCase, Search, 
			    SearchAsFormatted, OnlyCurrentField, FindFirst)

設定項目            内容
expression	   DoCmdオブジェクト[省略不可]
FindWhat	   検索データを指定[省略不可]
Match		   検索方法をAcFindMatchクラスの定数で指定[省略可能]
MatchCase	   大文字小文字を区別するかを指定[省略可能]
Search		   検索方向をAcSearchDirectionクラスの定数で指定[省略可能]
SearchAsFormatted  表示書式で検索するかどうかを指定[省略可能]
OnlyCurrentField   カレントフィールドのみ検索するかどうかをAcFindFieldクラス
		   の定数で指定[省略可能]
FindFirst	   先頭レコードから検索するかを指定[省略可能]

抽出条件を満たす最初のデータを検索します。引数に指定した文字列、数字、日付などを検索します。ワイルドカード文字を使用することもできます。引数には、検索方法を指定します。

・引数に指定できるワイルドカード文字

文字	説明					使用例→検索結果
*	任意の文字列				*ry→ry、try、dictionary 他
       (文字数は問わない、0文字も可)
?	任意の1文字				?ry→try、dry 他
#	任意の1文字の数字			5##8→5008、5598 他
[   ]	[]内の任意の1文字			a[sf]b→asb、afb
[ - ]	-の前後の文字範囲内の任意の1文字	a[c-e]b→acb、adb、aeb
	(範囲は昇順で指定)
[!  ]	[]内の文字以外の任意の1文字		a[!gy]b→aab、abb、acb 他

・引数に指定する定数(AcFindMatchクラス)

定数		説明
acAnywhere 	フィールドの一部分と、検索文字列が一致(〜を含む)
acEntire	フィールド全体が完全一致(〜と等しい)(既定値)
acStart		フィールドの先頭側の文字列と検索文字列が一致(〜から始まる)

 引数は、検索時に大文字と小文字を区別する場合にはTrue、大文字と
小文字を区別しない場合にはFalseを指定します。省略すると、既定値Falseを指定し
たこととなります。引数には、検索する方向を指定します。省略すると、
acSearchAllを指定したこととなります。

・引数に指定する定数(AcSearchDirectionクラス)

定数		説明
acDown		後方に検索
acSearchAll	すべてのレコードを検索(既定値)
acUp		前方に検索

引数には、書式を有効にして検索したい場合True、そうでない場合Falseを指定します。たとえば、日付を検索する場合、条件に「02/7/24」と指定して、フィールドの書式にかかわらず2002年7月24日に対応する日付をすべて検索したいときに、Falseを指定します。引数を省略すると、Falseを指定したこととなります。引数には、カレントフィールドのデータだけを検索するか、すべてのフィールドのデータを検索するかを、次の表の定数で指定します。カレントフィールドだけを検索するほうが、実行速度が速くなります。省略すると、acCurrentを指定したこととなります。

・引数に指定する定数(AcFindFieldクラスの定数)

定数		説明
acAll		すべてのフィールドを検索
acCurrent	カレントフィールドのみを検索(既定値)

引数には、先頭のレコードから検索を開始する場合はTrueを、カレントレコードから検索を開始する場合はFalseを指定します。省略するとTrueを指定したこととなります。

●サンプル●
Sub FindRecordSample()
    '[書籍フォーム]を開く
    DoCmd.OpenForm "書籍フォーム" 
    'すべてのフィールドから「VBA」という文字を含むデータを検索
    DoCmd.FindRecord "*VBA*", , , , , acAll
    'DoCmd.FindRecord "VBA", acAnywhere, , , , acAll
    'と記述しても同じ結果が得られます
End Sub