こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

コンボボックスの抽出条件でカレントレコードだけ

コンボボックスでカレントレコードに表示している商品IDに対応する値を表示させたいのですが、教えてください。

表形式のサブフォームにコンボボックスを設置しています。(レコードごとにコンボボックスがある)
値集合タイプはテーブル/クエリ、値集合ソースはクエリビルダで作成しようと思っています。
クエリビルダにはコンボボックスに表示したい別テーブルのフィールドを入力しています。

そこで、サブフォームのカレントレコードに入力した商品IDで絞込みを行うため、商品IDの抽出条件に[Forms]![frm出庫]![frm出庫商品].[Form]![商品ID]と記入したのですが、実行してみると、一行目のレコードのときはいいのですが二行目三行目のレコードの入力時もどうしても表示中の一行目のレコードの商品IDでの絞り込みしかしてくれません。
おそらくクエリの中のどこかにカレントレコードの商品IDを見るよう指定しなければいけないのだと思うのですが、その方法が分からず行き詰っています。

どうぞ宜しくお願い致します。

投稿日時 - 2017-02-11 16:51:39

QNo.9292660

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

frm出庫商品 の「レコード移動時」
商品ID の「更新後処理」 で
cmb賞味期限 を 再クエリすれば良いですね。

Me.cmb賞味期限.Requery

投稿日時 - 2017-02-17 11:08:51

ANo.5

>商品IDの抽出条件に[Forms]![frm出庫]![frm出庫商品].[Form]![商品ID]と記入したのですが
 フォームを開くとパラメータを入力するウィンドが表示されますね
どのような表題が表示されていますか
[]内のボックスがフォーム上にある時はそのボックスの値が採用されますが、ない場合は実行時に値を要求するウィンドです。
ボックスを特定する記述は
[Forms]!「フォーム名]!⁅ボックス名⁆です。

投稿日時 - 2017-02-15 22:42:35

ANo.4

tbl出庫商品かqry出庫商品のどちらかを開いて次の手順であなたの、最低限のニーズは得られると思います。
[tbl出庫商品を開く]→[商品名の右端▼]→[全て選択のチェックを外す](ここまででテーブル内の商品名の一覧が表示されます)
→[該当の商品名にチェックを入れる]→[OK]
如何でしょうか
このようにテーブルの定義だけでデータ登録もデータ参照もできます。

クエリ、フォーム、レポートはテーブル操作に肉付けする手法です。
テーブルの内容及び体系がクエリ、フォーム、レポート作成時にに反映されます。

先ずテーブルを見直す必要があります。

投稿日時 - 2017-02-14 16:27:11

ANo.3

Accessはテーブルが核です。
テーブル設計から始めましょう。:の右はデータ型と説明です。

1.TBL商品マスタ
・ID:オートナンバー型、 主キー テーブルデザインで、定義しなくとも半自動で定義されます
・商品名:テキスト型、インデックス欄で重複無しとする
・GNo.:数値型 商品点数が多くなると、商品をグループ化し次のフリガナと組でコンボボックスでのリストの表示順を決める
・フリガナ:ふりがな欄で自動ふりがなにする、商品名を入力するとこちらに反映させる
・賞味期間:数値型 賞味期限は生産日とこれとで求める
・在庫数:数値型

2.TBL入出庫:
・ID:オートナンバー型
・日付:日付/時刻型
・商品ID:数値型、ルックアップでコンボボックス定義すると実体は数値ですが商品名を表示
・入庫数:数値型
・出庫数:数値型

この2とのテーブルである程度説明できると思います。
しばらくお付き合いさせて頂きますが、コメント下さい。

投稿日時 - 2017-02-14 00:06:33

ANo.2

質問の意味を誤解していました。ごめん
>商品IDの抽出条件に[Forms]![frm出庫]![frm出庫商品].[Form]![商品ID]と記入したのですが
 フォームを開くとパラメータを入力するウィンドが表示されますね
 これを[商品ID]と記述しても同じ動作になります。
 
 frm出庫とfrm出庫商品どのような役割のフォームですか
 コンボボックスはどちらのフォームに配置されていますか、
 またこのボックスの名前は商品IDとなていますか

 [Forms]![frm出庫]![商品ID]

 [Forms]![frm出庫商品]![商品ID]
のどちらかです
 コンボボックスのあるフォームを開いて[商品ID]の値を確定してから、
 クエリまたは抽出条件を定義したフォームを開きます。

投稿日時 - 2017-02-12 15:46:25

お礼

早速ご回答頂きありがとうございます!!!
分かりにくい質問ですみませんでした。フォームのイメージを貼り付けようと思ったのですが、色々いじっているうちに他のところの問題が出てきてしまったため、やはり言葉で説明しようと思います。

このコンボボックスは、出庫商品を入力するときに、同じ商品IDのものでも賞味期限が複数あるのでどの賞味期限のものを出庫するのかを指定するのに、入力補助という用途で設置しています。
なので、コンボボックスを開いたときに、同レコードの商品IDと同じ商品IDを参照テーブルから絞り込んでその商品IDの持つ賞味期限を全てリストアップしたいのです。

>フォームを開くとパラメータを入力するウィンドが表示されますね
メインフォーム、サブフォームはパラメータ無しで開きます。
リンクフィールドは出庫IDで、以下のようになっています。

メインフォーム:frm出庫(単票形式)
レコードソース:tbl出庫
コントロール:出庫ID、出庫日

サブフォーム:frm出庫商品(表形式)
レコードソース:qry出庫商品
コントロール: ID、出庫ID、商品ID、商品名、出庫数、cmb賞味期限

参照テーブル:tbl商品リスト
フィールド: ID、商品ID、商品名、在庫数、賞味期限

>コンボボックスはどちらのフォームに配置されていますか
>またこのボックスの名前は商品IDとなていますか
コンボボックスはサブフォームにcmb賞味期限という名前で設置しています。

間違っていたらすみませんが、教えて下さった方法はどのフォームを開くか選択するためのコンボボックスの設置方法だと理解しました。
もしそうでしたら、上記のコンボボックスではどういう風に作ればいいか教えて頂けないでしょうか?

投稿日時 - 2017-02-13 15:07:55

ANo.1

>表形式のサブフォームにコンボボックスを設置しています。
「サブフォーム」の意味を誤解されています。
http://fk-plaza.jp/acs/KIS/Manabu_MakeFormSub.htm
これには 「サブフォームを持つフォーム」表題で解説されています。
フォームのレコードソース(テーブル)とサブフォームのレコードソースが参照整合性でリレーションされていることが必要です。
フォームを開くと自動的にサブフォームも開きます。

>コンボボックスでカレントレコードに表示している商品IDに対応する値を表示させたいのですが、
1.検索用のコンボボックスは[frm出庫]を開く別のフォーム上に配置します。
2.商品マスタのテーブル内容はID,商品名,…の順であるとするとコンボボックスのプロパティーシートは添付のようになります。
3.コードは次のようになります。
 frm出庫商品のレコードソースに商品IDが含んでいる事

Private Sub 商品名検索_Click()
DoCmd.OpenForm "frm出庫商品", , , "forms!メニュー!商品名検索=商品ID"
End Sub

4.frm出庫商品のレコードソースの商品IDルックアップ定義されていると商品IDは数値ですが商品名が表示されます。

投稿日時 - 2017-02-12 10:26:01