ACCESSと言えば検索フォームですね。
テキストボックスが連結の場合は、カンタンに検索できます。
しかし、非連結のテキストボックスの場合は、少し難しいです。
目次
非連結の入力フォームで検索値を表示
こんにちは。伊川(@naonaoke)です。
前回紹介した非連結のテキストボックスを利用した入力フォームを紹介しました。
では、入力した情報が間違っていた場合、修正が必要です。
その修正を、どのように修正するのか?
そこが問題になります。
テーブルで、直接編集もいいでしょうけど、やめたほうがいいです。
やはり、入力フォームから、修正をするのが一番安全です。
そもそも、ACCESSにバグは発生しないために、非連結のテキストボックスで入力フォームを作成したのです。
では、非連結のテキストボックスで、検索フォームを作成します。
参考になれば幸いです。
このブログはこんな人にお勧め
- ACCESSで検索フォームを作成している人
- ACCESSでDAOを勉強している人
- ACCESSの作動を少しでも軽くしたい人
このブログを、読み終わるころには・・・・
そもそも検索方法は、2つあります。
その2つの方法を紹介します。
主キーで検索する場合と、主キー以外で検索する場合ですが、
基本は、そう、主キーで検索です。
Findメゾットと、Seekメゾット
今回は、FindとSeekを利用した検索方法を紹介します。
基本は、Seekを利用します。
Seekが主キーに対応した検索方法です。
Seekが利用できないときは、Findを利用します。
Seekメゾットは、対象とするインデックスを指定します。
主キーも、インデックスの1つなので、検索対象にできます。
検索値が対象のフィールドを検査して、一番初めに見つかったレコードを返します。
見つかった場合は、NomatchプロパティをFalseに設定します。
見つからなかった場合は、Nomatchプロパティが、Trueに設定されます。
但し、原則ですが、リンクテーブルでは、Seekは利用できません。
Seekメゾットで検索 作業手順 その1 インデックスが設定されているか確認
今回は、主キーで検索しますので、ここが設定されていないと検索されません。
また、インデックスが設定されていれば、主キーでなくても検索できます。
しかし、主キーで検索しないなら、Seekを使わなくてもいいとおもいます。
Seekメゾットで検索 作業手順 その2 SeeKメゾットのコード
インデックスを利用して、検索するので、Findメゾットよりは、高速で検索が可能です。
しかし、少し書き方が難しいというのが、デメリットです。
Findメゾットで検索 作業手順 その1 Findメゾットのコード
検索キーの型を間違えるとハマります。
文字型なのか、数値型なのかをまちがえないようにしましょう。
これもまた、ハマる原因となります。
サンプルファイルでは、上のように検索ボタンで、Findメゾットで検索か、Seekで検索かを、分けています。
また、サンプルファイル内には、もう1つのコードを掲載しています。
紹介していないコードのほうが長いのですが、多分、その長いコードのほうが、SE好みではないかと思います。
ここがポイント
検索の場合は、Seekを利用して、どうしても、Seekが利用できない場合には、Findメゾットで検索するということを覚えましょう。
Seekに関しては、まだ、面白い利用方法がありますので、機会があれば紹介します。
このSeekは、なかなか、基本書にも記載がないメゾットです。
ACCESSには、まだまだ、知らないことがたくさんありますね。
まとめ
非連結のテキストボックスで入力フォームを作成して、今回は、テーブルに格納されている値を表示させることしました。
逆引き辞典等もそうですが、最初は、連結の内容から記載され、後のほうには、DAO、ADOの記載があります。
最初は、検索方法も多数あるのは理解していましたが、今になって思います。
あー、そういうことだったのか
VBAをスラスラ記載できるようになるには、何度、あーそういうことだったのか をつぶやくのでしょうか?
しかし、挫けません。
VBAとういうか、プログラムに惚れ込んでますから。
今回も最後まで読んでいただき、ありがとうございました。
今回のサンプルファイルは、No245です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。