質問: oRS("欠勤").Value oRS.Close End With End Function ``` ### 試したこと 試そうとしている事ですが、連想配列に一度代入し繰り返し文で記述を行おうとしています。(現時点で自力では難しそうですが。。。) ### 補足情報(FW/ツールのバージョンなど) Access2016 ここにより詳細な情報を記載してください。
回答: > > サブフォーム・サブフォームコントロール(テキストボックス)ともに非連結状態です。 > > > サブフォームコントロールに埋め込まれているサブフォームが非連結(レコードソースが空欄)という意味でしょうか。 サブフォームの名前は「SubSub」ということ?サブフォームコントロールの名前は? サブフォームコントロールとサブフォームは別物ですが、それは理解してますか。 サブフォームとサブフォームコントロールの違いとは? まずは、Access用語を理解して、正確な用語を使って説明する努力をしてください。現状の説明では状況が正確に伝わりません。 > > 試そうとしている事ですが、連想配列に一度代入し繰り返し文で記述を行おうとしています。 > > > 非連結フォームに配列からデータを代入して連結帳票フォームのように複数レコードを表示させようとしているなら、それは不可能です。非連結フォームは1件分しか表示できません。 複数レコードを表示したいならサブフォームのレコードソースにはテーブルかクエリを設定して、各コントロールのコントロールソースを設定してください。 追記 やりたいことを想像して回答すると、 やりたいこと * メインフォームのコンボボックスで社員名を選択する。 * その社員の勤怠データ(T-勤務のデータ)をサブフォームに表示される。 上記の想像があっているなら下記のようにしてくだい。 メインフォーム レコードソース 空欄のまま コンボボックス 名前 cb社員ID 値集合ソース T-社員 連結列 1 列数 2 列幅 0 これで名前リストで選択できます。 サブフォームのレコードソースを「T-社員」に設定。 サブフォームのテキストボックスのコントロールソースに適切なフィールド名を設定。 (連結フォームにするということ) サブフォームコントロールのリンクフィールドを下記のように設定。 リンク親フィールド cb社員ID リンク子フィールド 社員ID 以上で、ご希望の動作になります。 VBAは不必要なので削除してください。 追記2 コメントより > > ・[社員ID/氏名]のコンボボックス > > ・テキストボックス[年(西暦)]と[月]の二つ > > があり、社員IDと日付で抽出して月単位の勤務情報をサブフォームに表示しようとしています。 > > > フォームのモジュールに下記の関数を作成します。 ``` Function SetFilter() If IsDate(Me.[年(西暦)] & "/" & Me.[月] & "/01") Then Me.subsub.Form.Filter = "出勤時刻>=#" & Me.一時 & "#" & _ " AND 出勤時刻<#" & DateAdd("m", 1, Me.一時) & "#" Me.subsub.Form.FilterOn = True Else Me.subsub.Form.Filter = "" Me.subsub.Form.FilterOn = False End If End Function ``` [年(西暦)]と[月]のテキストボックスの「更新後処理」欄に下記のように設定します。 =SetFilter()