ACCESS Findでレコードを検索する方法

Findでレコードを検索する方法

ACCESSでADOを使ってレコード操作をする際、レコードを検索するために利用するのがFindメソッドです。

今回は、Findでレコードを検索する方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。

Findメソッドとは

Findメソッドとは、ACCESS VBAで準備されているレコードを検索するために利用するメソッドです。
Findを使うと指定したレコードセット(テーブルなど)の中から、条件に合致したレコードを検索することが可能です。

なお、FindはACCESS VBAでもADOで利用します。
ADOとはACCESS VBAでテーブルなどのレコードセットを扱うための手法です。

ADOについて詳しくは以下の記事をご覧ください。

ADOを使ったレコード操作

Findの使い方

Findは以下の構文で利用します。

いくつか引数がありますが、抽出条件以外の引数は省略可能でほぼ利用しません。
抽出条件のみ設定すれば利用可能です。

Findの利用例

実際の利用例を見たほうが使い方がわかりやすいので、サンプルでご紹介します。
今回は、以下の売上サンプルテーブルからレコードを検索します。

ここから、商品名などを使ってレコードを検索しましょう。
VBAで以下のプロシージャを作成しました。
商品名が「みかん」のレコードを検索して売上IDをメッセージボックスで表示します。

rst1というレコードセットに「売上サンプル」テーブルを格納し、Findメソッドで検索を行っています。

の部分でFindを使っていますね。
条件の指定をする際、みかんはテキスト型なので’(シングルクォーテーション)で囲っていることに注意してください。

テキスト型の条件を指定する際にダブルクォーテーションではなくシングルクォーテーションを利用するケースは以下の記事を参照ください。

シングルクォーテーションの使い方

このプロシージャを実行してみましょう。

メッセージボックスに2と表示されました。
これは指定した売上サンプルテーブルで売上IDが2のレコードの商品名が「みかん」であるためです。

Findでは1レコードしか出力できない

個々で改めて売上サンプルテーブルを見てみると売上ID5もみかんです。
これがFindの結果として出力されないのはなぜでしょうか?

それは、Findメソッドが検索の結果最初に見つかったレコードの値を返すためです。
今回は検索開始位置や検索方向を指定していないので、1レコード目から順に検索していきます。

その結果、2レコード目でみかんを見つけたのでそこで検索を中止し、5レコード目までたどり着かなかったということです。

このように、Findは該当するすべてのレコードを抽出するものではありませんので注意してください。
該当するレコードをすべて抽出したい場合は、Filterプロパティを利用します。

詳しくは以下の記事をご覧ください。

Filterプロパティの使い方

以上、Findでレコードを検索する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に200以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

フッターバナー

最後までお読みいただき、ありがとうございました。