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 インデックスが設定されているか確認
社員IDが、PrimaryKeyに設定されていることを確認してください。今回は、主キーで検索しますので、ここが設定されていないと検索されません。
また、インデックスが設定されていれば、主キーでなくても検索できます。
しかし、主キーで検索しないなら、Seekを使わなくてもいいとおもいます。
Seekメゾットで検索 作業手順 その2 SeeKメゾットのコード
インデックスを利用して、検索するので、Findメゾットよりは、高速で検索が可能です。
しかし、少し書き方が難しいというのが、デメリットです。
Findメゾットで検索 作業手順 その1 Findメゾットのコード
検索キーの型を間違えるとハマります。
文字型なのか、数値型なのかをまちがえないようにしましょう。
これもまた、ハマる原因となります。
サンプルファイルでは、上のように検索ボタンで、Findメゾットで検索か、Seekで検索かを、分けています。
また、サンプルファイル内には、もう1つのコードを掲載しています。
紹介していないコードのほうが長いのですが、多分、その長いコードのほうが、SE好みではないかと思います。
ここがポイント
検索の場合は、Seekを利用して、どうしても、Seekが利用できない場合には、Findメゾットで検索するということを覚えましょう。
Seekに関しては、まだ、面白い利用方法がありますので、機会があれば紹介します。
このSeekは、なかなか、基本書にも記載がないメゾットです。
ACCESSには、まだまだ、知らないことがたくさんありますね。
まとめ
非連結のテキストボックスで入力フォームを作成して、今回は、テーブルに格納されている値を表示させることしました。
逆引き辞典等もそうですが、最初は、連結の内容から記載され、後のほうには、DAO、ADOの記載があります。
最初は、検索方法も多数あるのは理解していましたが、今になって思います。
あー、そういうことだったのか
VBAをスラスラ記載できるようになるには、何度、あーそういうことだったのか をつぶやくのでしょうか?
しかし、挫けません。
VBAとういうか、プログラムに惚れ込んでますから。
今回も最後まで読んでいただき、ありがとうございました。
今回のサンプルファイルは、No245です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。