Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7 Professional : Access 2016)
チェックボックス付きコンボボックスの初期値
投稿日時: 17/08/25 22:26:31
投稿者: hareru

初めてルックアップフィールドを使用します。
フォームに貼り付けたコンボボックスにルックアップフィールドを設定し、コンボボックスのプルダウン、チェックボックスの複数選択、テーブルの更新は正常に動作しているようです。
テーブルは担当者マスタです。下のようなかんじです。
担当、担当者名、選択(選択.Value)
001,鈴木
002、田中
003、佐藤
フォームは売上一覧参照画面で複数の担当者をコンボボックスで選択します。
この時、担当者マスタに登録済みのログイン担当者をコンボボックスに初期表示させたいのです。
フォームオープン時に選択.Valueに初期値としてログイン担当者を登録するコードをSQLでEXECUTE実行しても更新できません。
カーソルでUPDATEを実行しても Rst.Update時にエラーになってしまいます。
(エラーメッセージは、はっきりと覚えていないのですが「〜Null値は登録できません」。会社で実行。)
以下の二点について教えてください。
1.そもそも、ルックアップフィールドに初期値(選択.ValueのチェックボックスをON)を設定することは可能ですか?
2.上記1が不可能な時、フォーム上のコンボボックスに初期値として担当名を表示させる方法はありますか?
 
以上、よろしくお願いいたします。

回答
投稿日時: 17/08/29 15:21:38
投稿者: sk

引用:
初めてルックアップフィールドを使用します。
フォームに貼り付けたコンボボックスにルックアップフィールドを設定し、
コンボボックスのプルダウン、チェックボックスの複数選択、
テーブルの更新は正常に動作しているようです。
テーブルは担当者マスタです。下のようなかんじです。
担当、担当者名、選択(選択.Value)
001,鈴木
002、田中
003、佐藤
フォームは売上一覧参照画面で複数の担当者をコンボボックスで選択します。

・フォーム[売上一覧参照画面]のレコードソースは、
 [担当者マスタ]とは別のテーブルである。
 
・そのテーブルに定義されているフィールド[担当]については、
 ルックアップの設定において[複数の値の許可]プロパティが
 「はい」に設定されており、[担当者マスタ]に格納されている
 いずれかのレコードの[担当]の値が複数入力されるように
 なっている。
 
引用:
この時、担当者マスタに登録済みのログイン担当者
コンボボックスに初期表示させたいのです。

・[担当者マスタ]に格納されているレコードの[選択]の値が
 True である場合、それらのレコードが示す担当者は
 「既定のログイン担当者」である。
 
以上のような仕様、テーブル設計であると仮定して、
 
引用:
1.そもそも、ルックアップフィールドに初期値
  (選択.ValueのチェックボックスをON)を設定することは可能ですか?

[複数の値の許可]プロパティが「はい」に設定されているフィールドには、
Null または複数の要素を持つ配列状のデータが値として格納されます。
 
それに対し、コンボボックスの[既定値]プロパティ( DefaultValue )の
データ型はテキスト型であり、設定出来るのは "001" や "003" といった
単一の文字列です。
[既定値]プロパティに配列を代入することは出来ません。
 
また、"001" といった単一の文字列を
コンボボックスの[既定値]プロパティに設定しても、
連結しているフィールドが「複数値を持つフィールド」
であるならば、[既定値]プロパティの設定は適用されません。
(テーブル定義において[担当]の[既定値]プロパティに
 固定値を設定している場合のみ有効)
 
引用:
2.上記1が不可能な時、フォーム上のコンボボックスに
  初期値として担当名を表示させる方法はありますか?

少なくとも、マスタテーブルをレコードソースとする連結フォームや、
帳票フォーム/データシートフォームで行なうべきではないでしょう。
 
例えば、[売上一覧参照画面]のレコードソースである
マスタテーブルと同一構造のワークテーブルと、
そのワークテーブルをレコードソースとする単票フォームを
あらかじめ作成しておき、そのフォームの Open イベントで
空のワークテーブルに編集用のワークレコードを 1 件だけ追加して
(その過程で、既定値となる複数値を[担当]に格納する)、
任意のイベント(コマンドボタンの Click イベントなど)で
ワークレコードと同じ内容の新規レコードを
マスタテーブルに追加する仕組みを構築する、
という代替策が一応挙げられます。
 
しかし、本来作ろうとなされているフォームの設計と
大きくかけ離れている印象を受けましたので、
今のところはお奨め致しません。

トピックに返信