フォームの操作 2
コントロールによってレコードソースを切り替える
コントロールによってレコードソースを切り替えるにはレコードソースの抽出条件にイベントを割り当てます。
例)
社員コード 所属 役職 氏名 性別 1011 総務部 部長 木下 雄二 0 1012 総務部 課長 小日向 直美 1 1014 総務部 主任 大倉 真由美 1 1101 第一営業部 部長 斉藤 美喜夫 0 1105 第一営業部 課長 佐藤 賢治 0 1110 第一営業部 主任 山田 明日香 1 1220 第二営業部 課長代理 横山 善男 0 1230 第二営業部 係長 今井 正明 0 レコードソースの「WHERE」句に抽出条件を設定します。
'tbl_社員をレコードソースに持つフォーム「frm社員」をコントロールによって 'データを切り替える ****************************************************************************** 'オプショングループ(性別選択)の例 SELECT tbl_社員.* FROM tbl_社員 WHERE (((tbl_社員.性別)=[Forms]![frm社員]![性別選択])); 'オプション値は 男:0 女:1 'オプショングループ(性別選択)の更新後処理イベントに「Requery」を割り当てる Private Sub 性別選択_AfterUpdate() '性別選択のオプションボタンが変更されたら再クエリーを実行 DoCmd.Requery "性別選択" End Sub ****************************************************************************** 'トルグボタン(性別選択)の例 SELECT tbl_社員.* FROM tbl_社員 WHERE (((tbl_社員.性別)=[Forms]![frm社員]![性別選択])); 'テーブル「tbl_社員」の「性別」フィールドは「Yes/No型」にする 'オプショングループ(性別選択)の更新後処理イベントに「Requery」を割り当てる Private Sub 性別選択_AfterUpdate() '性別選択のオプションボタンが変更されたら再クエリーを実行 DoCmd.Requery "性別選択" End Sub
テキストボックスのデータによってレコードを抽出する
上記の例で、テキストボックスに入力されたデータからレコードを抽出する方法です
'tbl_社員をレコードソースに持つフォーム「frm社員」をテキストボックスのデータによって '抽出する ****************************************************************************** 'テキストボックスのデータを含む場合の例 'テキストボックス名は「抽出」 SELECT tbl_社員.* FROM tbl_社員 WHERE (((tbl_社員.氏名) Like "*" & [Forms]![tbl_社員]![抽出] & "*")); 'テキストボックス「抽出」に入力された文字を含むデータを抽出する '実行ボタンのクリックイベントに「Requery」を割り当てる Private Sub 実行_Click() '実行ボタンがクリックされたら再クエリーを実行 DoCmd.Requery "氏名" End Sub
コンボボックスのデータによってレコードを抽出する
コンボボックスに入力されたデータと一致するレコードを抽出する方法です
'tbl_社員をレコードソースに持つフォーム「frm社員」をコンボボックスのデータによって '抽出する ****************************************************************************** 'コンボボックス名は「役職抽出」 SELECT tbl_社員.* FROM tbl_社員 WHERE (((tbl_社員.氏名) Like "*" & [Forms]![tbl_社員]![役職抽出] & "*")); 'コンボボックス「役職抽出」のデータと一致するデータを抽出する 'コンボボックス「役職抽出」のレコードソースを ' SELECT tbl_社員.所属 FROM tbl_社員 GROUP BY tbl_社員.役職; 'とする 'コンボボックス「役職抽出」の更新後処理に「Requery」を割り当てる Private Sub 役職抽出_AfterUpdate() 'コンボボックス「役職抽出」のデータが更新されたら再クエリーを実行 DoCmd.Requery "氏名" End Sub
別のフォームのテキストボックスの値を表示する
別のフォームのテキストボックスの値をフォームに表示するには、テキストボックスのコントロールソースに以下の式を入力します。
'メインのフォーム:frm1 '値を表示するコントロール:参照 '参照するフォーム:frm2 '値を参照するコントロール:値 ****************************************************************************** 'メインのフォーム「frm1」テキストボックス「参照」のコントロールソースに '以下の式を入力 =Forms![frm2]![値]値を参照できるのは、参照するフォームが「可視」の状態で開いている時だけです。
特定のテーブルの値を表示する
「DLookup」関数を使ってレコードソースではないテーブルのデータを表示します。
'「tbl_環境設定」テーブルの「消費税」フィールドの値が True の時 'テキストボックス「消費税」を可視にする 'frm伝票のフィールド名:チェック 'フィールド名「チェック」のレコードソースは以下の設定 レコードソース = DLookUp("消費税","tbl_環境設定") ********************************************************************************* 'frm伝票を開く時、フィールド名「チェック」の値を参照して 'テキストボックス「消費税」の可視・不可視を設定する Private Sub Form_Open(Cancel As Integer) If Me.チェック.Value = False Then Me.消費税.Visible = False Else Me.消費税.Visible = True End If End Sub条件を設定すると表引きも可能です。
'「tbl_郵便番号簿」テーブルの「郵便番号」フィールドの値が 'frm住所録のテキストボックス「郵便番号」と一致する住所を 'frm伝票のフィールド名:住所1 'フィールド名「住所1」のレコードソースは以下の設定 レコードソース = DLookUp("住所","tbl_郵便番号簿","[郵便番号]")