こんにちは。伊川(@naonaoke)です。
今回は、上の記事の続きになります。
私は、センスがあまりないですが、できるだけカッコイイフォームを作成したいと思います。
目次
このブログはこんな人にお勧め
- 検索フォームを作成したいができない人
- 検索結果の画面に細工を加えたい人
- データ入力もフォームで行いたい人
フォームを作成する
最強の検索フォームには、全部でフォームが3つ必要になります。
今回は、データ入力のフォームと、検索後のフォームを作成します。
データ入力のフォーム 作成手順その1 検索フォームは空白のフォームを使う
フォームを作成するときは、空白のフォームから作成します。
そのほうが汎用性があります。
真っ白な画面ですが、頑張りましょう。
上の記事が参考になると思います。
データ入力のフォーム 作成手順その2 完成図
このようなフォームを作成しました。
データべースは、MT_周知になります。
初心者にアリガチなミスは、フォームのレコードソースについて、どのソースを選択しているのかが、理解していない場合があります。
致命的なミスになりますので、気をつけましょう。
レコードのソースの確認方法
忘れずに確認しましょう。
データ入力のフォーム 作成手順その3 カンタンなコードを仕込む
前回は作成しませんでしたが、MT_社員というテーブルを作成しました。
なぜ作成したのかというと、周知を出した人間を明らかにするためです。
これは、IDで検索しているので、数値型の検索コードです。
Private Sub コマンド89_Click() DoCmd.ApplyFilter , "[ID] =" & Me![周知検索] & " " '⇒完全一致:数値型 End Sub
http://keiyu.xyz/2019/10/19/dlookup/
文字型と、数値型では、クオーテーションの数がちがいますので、気を付けてください。
結構、私に質問がきた案件です。
Private Sub コマンド90_Click() Me![周知検索] = "" '周知検索のフィールドをクリアにする DoCmd.RunCommand acCmdSaveRecord 'レコードを保存 DoCmd.GoToRecord , , acNewRec '新しいレコードへ移動 End Sub
Private Sub 周知者_AfterUpdate() Me![日時] = Date '周知者に名前を入力したら、日時というフィールド今日の日付が入る Me.[社員ID] = DLookup("社員ID", "MT_社員", "[社員名]='" & Me![周知者] & "'") '社員IDを自動検索する End Sub
数値型と、文字列型のクオーテーションの数が違うことを比較してください。
また、DLOOKUP関数は意図的に使いました。
DLOOKUP関数は、初心者泣かせなのですが、どうしても使う場面もあると思います。
しかし、みなさんは、オートルックアップクエリを使いましょう。
それが、ACCESSです。
検索後のフォームを作成する
検索後のフォームにいろいろな仕掛けをしています。
今回紹介する内容は本当に便利ですので使ってみてください。
検索後のフォーム 作成手順その1 複数のアイテムでフォームを作成する
複数のアイテムを選択すると、上の図のようなフォームができます。
このように、スペースを整えます。
ここがポイント
この程度のコードが記載できれば、データ入力フォームは十分だと思います。また、簡単な検索もこの程度のコードで十分です。重ねて言いますが、文字型と、数値型では、クオーテーションの数がちがいますので、気を付けてください。
まとめ
フォームはこれくらい作成できれば十分です。
次回から、いろいろな仕掛けをしていきます。
今回のサンプルファイルはありません
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。