- 締切済み
コンボボックスの抽出条件でカレントレコードだけ
コンボボックスでカレントレコードに表示している商品IDに対応する値を表示させたいのですが、教えてください。 表形式のサブフォームにコンボボックスを設置しています。(レコードごとにコンボボックスがある) 値集合タイプはテーブル/クエリ、値集合ソースはクエリビルダで作成しようと思っています。 クエリビルダにはコンボボックスに表示したい別テーブルのフィールドを入力しています。 そこで、サブフォームのカレントレコードに入力した商品IDで絞込みを行うため、商品IDの抽出条件に[Forms]![frm出庫]![frm出庫商品].[Form]![商品ID]と記入したのですが、実行してみると、一行目のレコードのときはいいのですが二行目三行目のレコードの入力時もどうしても表示中の一行目のレコードの商品IDでの絞り込みしかしてくれません。 おそらくクエリの中のどこかにカレントレコードの商品IDを見るよう指定しなければいけないのだと思うのですが、その方法が分からず行き詰っています。 どうぞ宜しくお願い致します。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- m3_maki
- ベストアンサー率64% (296/460)
frm出庫商品 の「レコード移動時」 商品ID の「更新後処理」 で cmb賞味期限 を 再クエリすれば良いですね。 Me.cmb賞味期限.Requery
- chayamati
- ベストアンサー率41% (260/624)
>商品IDの抽出条件に[Forms]![frm出庫]![frm出庫商品].[Form]![商品ID]と記入したのですが フォームを開くとパラメータを入力するウィンドが表示されますね どのような表題が表示されていますか []内のボックスがフォーム上にある時はそのボックスの値が採用されますが、ない場合は実行時に値を要求するウィンドです。 ボックスを特定する記述は [Forms]!「フォーム名]!⁅ボックス名⁆です。
- chayamati
- ベストアンサー率41% (260/624)
- chayamati
- ベストアンサー率41% (260/624)
Accessはテーブルが核です。 テーブル設計から始めましょう。:の右はデータ型と説明です。 1.TBL商品マスタ ・ID:オートナンバー型、 主キー テーブルデザインで、定義しなくとも半自動で定義されます ・商品名:テキスト型、インデックス欄で重複無しとする ・GNo.:数値型 商品点数が多くなると、商品をグループ化し次のフリガナと組でコンボボックスでのリストの表示順を決める ・フリガナ:ふりがな欄で自動ふりがなにする、商品名を入力するとこちらに反映させる ・賞味期間:数値型 賞味期限は生産日とこれとで求める ・在庫数:数値型 2.TBL入出庫: ・ID:オートナンバー型 ・日付:日付/時刻型 ・商品ID:数値型、ルックアップでコンボボックス定義すると実体は数値ですが商品名を表示 ・入庫数:数値型 ・出庫数:数値型 この2とのテーブルである程度説明できると思います。 しばらくお付き合いさせて頂きますが、コメント下さい。
- chayamati
- ベストアンサー率41% (260/624)
質問の意味を誤解していました。ごめん >商品IDの抽出条件に[Forms]![frm出庫]![frm出庫商品].[Form]![商品ID]と記入したのですが フォームを開くとパラメータを入力するウィンドが表示されますね これを[商品ID]と記述しても同じ動作になります。 frm出庫とfrm出庫商品どのような役割のフォームですか コンボボックスはどちらのフォームに配置されていますか、 またこのボックスの名前は商品IDとなていますか [Forms]![frm出庫]![商品ID] か [Forms]![frm出庫商品]![商品ID] のどちらかです コンボボックスのあるフォームを開いて[商品ID]の値を確定してから、 クエリまたは抽出条件を定義したフォームを開きます。
- chayamati
- ベストアンサー率41% (260/624)
>表形式のサブフォームにコンボボックスを設置しています。 「サブフォーム」の意味を誤解されています。 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は数値ですが商品名が表示されます。
お礼
早速ご回答頂きありがとうございます!!! 分かりにくい質問ですみませんでした。フォームのイメージを貼り付けようと思ったのですが、色々いじっているうちに他のところの問題が出てきてしまったため、やはり言葉で説明しようと思います。 このコンボボックスは、出庫商品を入力するときに、同じ商品IDのものでも賞味期限が複数あるのでどの賞味期限のものを出庫するのかを指定するのに、入力補助という用途で設置しています。 なので、コンボボックスを開いたときに、同レコードの商品IDと同じ商品IDを参照テーブルから絞り込んでその商品IDの持つ賞味期限を全てリストアップしたいのです。 >フォームを開くとパラメータを入力するウィンドが表示されますね メインフォーム、サブフォームはパラメータ無しで開きます。 リンクフィールドは出庫IDで、以下のようになっています。 メインフォーム:frm出庫(単票形式) レコードソース:tbl出庫 コントロール:出庫ID、出庫日 サブフォーム:frm出庫商品(表形式) レコードソース:qry出庫商品 コントロール: ID、出庫ID、商品ID、商品名、出庫数、cmb賞味期限 参照テーブル:tbl商品リスト フィールド: ID、商品ID、商品名、在庫数、賞味期限 >コンボボックスはどちらのフォームに配置されていますか >またこのボックスの名前は商品IDとなていますか コンボボックスはサブフォームにcmb賞味期限という名前で設置しています。 間違っていたらすみませんが、教えて下さった方法はどのフォームを開くか選択するためのコンボボックスの設置方法だと理解しました。 もしそうでしたら、上記のコンボボックスではどういう風に作ればいいか教えて頂けないでしょうか?