フォームの操作 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_郵便番号簿","[郵便番号]")