マイクロソフトエクセルのまとめ記事はこちら
Microsoft Office ブログランキングへ
「検索」をしてみましょう。
検索に関してはフォームの一番下の「検索」という欄に検索したい
文字列を入力すれば検索できるという事を以前紹介したと思います。
今回はフォーム上に「テキストボックス」と「検索ボタン」を配置して、
そのテキストボックスに記載された内容を検索するという仕組みを作りたいと思います。
一応「名前」を検索するようにします。
やり方としては色々あります。
思いついたものからやってみましょう。
まず、フォーム上にテキストボックスと検索ボタンを配置します。
今回のテキストボックスは「テキスト45」という名前でした。
(この名前は覚えておいてください。後で必要です)
最初に検索結果を表示するフォームを作成します。
「T_会員一覧」をベースにフォームウィザートでフォームを作ります。
項目は一応すべて選択し、途中で「票形式」を選択してください。
上記のようなフォームが出来ます。
これは若干フィールドの幅等を修正したものです。
これを「F_名前検索」として保存します。
次に「検索」ボタンです。
プロパティシートで「イベントプロシージャ」を選択し「…」を押してください。
上記のようにVBAを記述する画面になります。
Private Sub コマンド47_Click()
DoCmd.OpenForm "F_名前検索", , , "氏名 like '*" & Me!テキスト45 & "*'"
End Sub
このように記述しました。
少し詳しく見て行きましょう。
「DoCmd.OpenForm "F_名前検索"」ここまでは分かりますね
「OpenForm」コマンドで「F_名前検索」フォームを開きなさいという命令です。
本来DoCmd.OpenForm は「OpenForm “FormName”, View,
FilterName, WhereCondition, DataMode, WindowMode, OpenArgs」
という構文になっています。
今回はWhereCondition,というところだけ使用します。
「F_名前検索」フォームを開くときの条件として、
「"氏名 like '*" & Me!テキスト45 & "*'"」という指定を行っています。
その前に「構文」のWhereCondition,の部分の前は省略できないので
「, , ,」が入っています。
「"氏名 like '*" & Me!テキスト45 & "*'"」この部分ですが、
最初の「氏名 like’*」と「最後の「*’」の間はそのまま文字列として認識されます。
上記の両端に「"」(ダブルクォーテーション)で囲われて、文字列であることが
表現されています。
「Me!テキスト45」とは、「Me」というのはよく使用するのですが、
「今アクティブになっているフォーム・レポート・コントロールの事」という
意味だと思ってください。
ここでは本来[Forms]![F_会員一覧]![テキスト45]と記載すべきところを
「Me!テキスト45」と記載されています。
そして「文字列」と「データ変数」を結合する場合は「&」(アンパサンド)で
つなぐというルールがあります。
仮に「テキスト45」に「小沢」という文字が入力されているとします。
「 "氏名 like '*" & Me!テキスト45 & "*'"」を分かりやすく言うと
「”氏名 Like’*小沢*’”」となります。
「DoCmd.OpenForm "F_名前検索", , , "氏名 like '*" & Me!テキスト45 & "*'"」
この全文を分かりやすく言うと「今から開く「F_名前検索」にある「氏名」に
「小沢」という文字を含むものを表示しなさい」という命令文です。
実際に「小沢」と入力して「検索」ボタンを押してください。
上記のように「小沢」を含む名前が表示されました。
上は「羽柴」で検索しました。
エルセーヌ「小顔ハリ美肌コース」エステ体験
タグ: Accessで検索
【このカテゴリーの最新記事】