目次
ACCESSに慣れてきたらどうする?
こんにちは。伊川(@naonaoke)です。
これまでに、何度かACCESSの主キーについて説明をしてきました。
ACCESSが少し身近な存在になりましたか?
でも、まだ自信はないと思っている人もいるでしょう。
では、少し、Excelならできるけど、ACCESSであれば、少し考える問題を出題します。
問題提起
入社3年目の、阿久 世子男(アク、セスオ)は、Excelから、ACCESSへのデータベース移行の業務命令を受けました。
赤⇒R
青⇒B
黒⇒BL
白⇒W
ACCESSで各色の英語の頭文字を反映させるように、課長から命令されました。
Excelならわかりますが、ACCESSではいまいち、ピンと来ません。
どうしたらいいでしょうか?
Excelに浮気をしない
この問題は、Yahooの知恵袋に質問として投稿されていました。
もっとも、問題自体は、伊川にて、少しアレンジをしています。
Excelで実行する場合
ACCESSの記事を書くので、Excelの詳しい方法は割愛します。
伊川が思いつくのは、関数ならば、IF関数、VLOOKUP関数、INDEX関数、MATCH関数です。
VBAなら、IF構文、Select Case構文です。
要するに、なんらかの条件判定、一意のキーを参照するということが必要です。
ACCESSのフォームで実行する場合
ACCESSで行う場合は、関数なら、IIF関数、DLOOKUP関数を使います。
VBAでは、フォームで実行する場合は、IF関数、DLOOKUP関数を使います。
クエリの場合も、IIF関数、DLOOKUP関数です。
しかし、ACCESSには、関数や、VBAを知らなくてもできる、最強の技があります。
それが、オートルックアップクエリです。
オートルックアップクエリは主キーが理解していないと、使えませんので、主キーを理解していない方は、上の記事を合わせて読んで欲しいです。
ACCESSのフォームでIF関数を使って実行する場合
参考図の赤枠のところに、更新後処理で、下記のコードを仕込みます。
Private Sub 色_AfterUpdate() If Me.[色] = "赤" Then Me.[文字] = "R" ElseIf Me.[色] = "青" Then Me.[文字] = "B" ElseIf Me.[色] = "黒" Then Me.[文字] = "BL" ElseIf Me.[色] = "白" Then Me.[文字] = "W" End If End Sub
ACCESSのフォームでDLOOKUP関数を使って実行する場合
参考図の赤枠のところに、更新後処理で、下記のコードを仕込みます。
Private Sub 色_AfterUpdate() Me.[文字] = DLookup("文字", "MT_色", "色='" & Me.[色] & " '") End Sub
ACCESSのフォームでSelect Caseを使って実行する場合
参考図の赤枠のところに、更新後処理で、下記のコードを仕込みます。
Private Sub 色_AfterUpdate() Select Case True Case Me.[色] = "赤" Me.[文字] = "R" Case Me.[色] = "青" Me.[文字] = "B" Case Me.[色] = "黒" Me.[文字] = "BL" Case Me.[色] = "白" Me.[文字] = "W" End Select End Sub
ACCESSのクエリを使って実行する場合
ACCESSのクエリで、IIF関数を使って実行する場合
下記のコードを仕込みます
頭文字: IIf([色]="赤","R",IIf([色]="青","B",IIf([色]="黒","BL",IIf([色]="白","W"))))
ACCESSでオートルックアップクエリを使って実行する場合
オートルックアップクエリに関しては、下記の記事を参照してください
まとめ
ACCESSでツール作成する場合は、必ず下記を確認しましょう。
一意のキー(主キー)はありますか?
主キーが無ければ作成しましょう。
みなさん、阿久 世子男さんの成長をみまもってください。