データシート形式のサブフォームでコンボボックスの選択がうまくいかない

このQ&Aのポイント
  • データシート形式のサブフォームで商品コードのコンボボックスの選択がうまくいかず、商品名と販売価格が全行同じに変わってしまう問題が発生しています。
  • 受注フォームのサブフォーム(受注明細フォーム)で商品コードのコンボボックスを選択すると、商品名と販売価格が全行に同じ値が表示される現象が起きています。
  • データシート形式のサブフォームで商品コードのコンボボックスの選択後に商品名と販売価格が全行に同じ値が表示される問題が発生しています。この問題の解決方法を教えてください。
回答を見る
  • ベストアンサー

データシート形式のサブフォームでコンボボックスでの入力がうまくいかない

サブフォームはデータシート形式です。 メインフォームは受注フォーム。サブフォームは受注明細フォームです。 サブフォームのソースは受注明細テーブルです。 サブフォームに商品コードのコンボボックスがあって選択すると 該当する商品名、販売価格を商品マスタテーブルから検索して表示 したいので以下のようにためしてみました。 Private Sub 商品コード_AfterUpdate() ' ' 商品名 = DLookup("商品名", "T_商品マスタ", "商品コード='" & 商品コード & "'") ' 販売価格 = DLookup("販売価格", "T_商品マスタ", "商品コード='" & 商品コード & "'") 商品名 = 商品コード.Column(1) 販売価格 = 商品コード.Column(2) End Sub そうすると、商品コードを選択すると商品名と販売価格が 全行同じものに変わってしまいます。 どうすればよいでしょうか? ご教示していただけませんでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

>全行同じものに変わってしまいます。 非連結のコントロールに値を代入すればそうなります そもそも >商品コードのコンボボックスがあって選択すると >該当する商品名、販売価格を商品マスタテーブルから検索して表示したい これが目的ならVBAやDLookup関数など持ち出さず サブフォームのソースを受注明細と商品マスタを商品コードで 結合したクエリにすれば済む話ですね

milkldap
質問者

お礼

ありがとうございます。 さっそくためしてみます。

milkldap
質問者

補足

ありがとうございます。 受注明細フォームのソースをクエリにしたところうまくいきました。 ですが、これをアップサイジングウィザードでADPファイルにするとクエリが更新不可になってしまい非常に困っています。 どうか解決方法をご教授いただけませんでしょうか。 よろしくお願い致します。 AccessのクエリとSQLサーバーのクエリは以下になります。 SELECT T_受注明細.商品コード, T_商品マスタ.商品名, T_商品マスタ.販売価格, T_受注明細.数量, T_商品マスタ.販売価格*T_受注明細.数量 AS 小計, T_受注明細.受注番号 FROM T_商品マスタ INNER JOIN T_受注明細 ON T_商品マスタ.商品コード = T_受注明細.商品コード; 上のクエリをアップサイジングウィザードでビューにしたのが以下です。 SELECT dbo.T_受注明細.商品コード, dbo.T_商品マスタ.商品名, dbo.T_商品マスタ.販売価格, dbo.T_受注明細.数量, dbo.T_商品マスタ.販売価格 * dbo.T_受注明細.数量 AS 小計, dbo.T_受注明細.受注番号 FROM dbo.T_商品マスタ INNER JOIN dbo.T_受注明細 ON dbo.T_商品マスタ.商品コード = dbo.T_受注明細.商品コード

関連するQ&A

  • サブフォーム帳票形式上での2つのコンボボックスの連携

    サブフォーム帳票形式上での2つのコンボボックスの連携 テーブルとして以下4つ tbl01_受注   受注ID(主キー) 受注日      名前 電話番号 tbl02_明細   明細ID 受注ID(tbl01_受注IDとリレーション)   カテゴリ   商品名  tbl03_カテゴリ   カテゴリID カテゴリ tbl04_商品名   商品ID カテゴリID 商品名   フォームとして以下メインとサブで構成   f01_受注フォーム(メインフォーム)   レコードソース→tbl01_受注     f02_明細フォーム(サブフォーム)    レコードソース→tbl02_明細 添付画像のように 1件ごとの受注につき受注フォームが増えていきます 1件の受注にたいしてサブフォームに商品を入力して行きます、  商品名が多数ありますので コンボ1でtbl03のカテゴリを選び tbl04からそのカテゴリIDとマッチした商品名を抽出して コンボ2に表示したいと考えています。 色々参考にしましたがどれもうまく行かない状況です。 たとえばコンボボックスに反映されず空白になったり コンボボックスの内容を変更すると全ての行の値が 同じになった なかなかうまく行きません。 サブフォームでコンボボックス1でカテゴリ選択すると コンボボックス2にカテゴリで絞り込んだ内容が選択できるように したいのです。 そして次の行も同じように商品を入力したいのです。 どなたか助けて下さい、お願いします。

  • アクセス コンボボックスで全項目表示

    アクセス2000で発注書をつくっています 発注書フォームのサブフォーム「発注書sub」内で 「大項目」「中項目」「小項目」「商品コード」の 4つのコンボボックスを設置し、 絞込み検索で商品明細を入力しています 新規レコードに移動するときに 「大項目」「中項目」「小項目」の値を空白にし、 4つめの「商品コード」コンボボックスで 全商品を表示させたいのですが どう記述していいのかわかりません 現在は Private Sub 商品コード_AfterUpdate() Me.品番 = Me.商品コード.Column(1) Me.商品名 = Me.商品コード.Column(2) Me.色 = Me.商品コード.Column(3) Me.サイズ = Me.商品コード.Column(4) Me.商品単価 = Me.商品コード.Column(5) End Sub Private Sub 小項目_Enter() Me!商品コード.Requery End Sub Private Sub 大項目_AfterUpdate() Me!中項目.Requery End Sub Private Sub 中項目_AfterUpdate() Me!小項目.Requery End Sub Private Sub 小項目_AfterUpdate() Me!商品コード.Requery End Sub 'フォーカスが移ると同時にドロップダウンさせる Private Sub 大項目_GotFocus() Me.大項目.Dropdown End Sub Private Sub 中項目_GotFocus() Me.中項目.Dropdown End Sub Private Sub 小項目_GotFocus() Me.小項目.Dropdown End Sub 'テスト Private Sub 摘要_LostFocus() Me!大項目 = Null Me!中項目 = Null Me!小項目 = Null Me!商品コード.Requery End Sub です。 発注書フォーム(単票フォーム) レコードソース「発注書」 サブフォーム名「発注書sub」(帳票形式) レコードソース「発注書明細」 リンク親フィールド子フィールドともに「発注書コード」 (他に表記が必要なのがあるかもしれませんが。。) テーブル ●発注書明細 「明細コード」「発注書コード」「商品コード」「品番」「商品名」「色」「サイズ」「商品単価」「数量」「摘要」です ●商品マスタ 「商品コード」「品番」「種類」「大項目」「中項目」「色」「商品名」「サイズ」「商品単価」 です。 どなたか ご指導のほどよろしくお願いいたします

  • コンボボックスでのサブフォーム抽出について

    コンボボックスでのサブフォーム抽出について教えて下さい。 T_支払というテーブルにてSUBフォームを作り、メインフォームに貼り付けてます。 コンボボックスにて月度を選択すると、その月の一覧がSUBフォームに表示する様にしたい のですが、今一わかりません。 途中までフォームの形はできたのですが、そこから止まってしまっています。 この先何をすればよいのか教えていただけないでしょうか? ほぼ初心者なものでよろしくお願いします

  • access コンボボックスの次

    顧客管理・商品管理の簡略化を目指している初心者です。商品マスター・仕入先・販売先というテーブルを作成、商品情報の入力・閲覧のためのフォームを作ろうと思っています。 1)商品マスターテーブルには、仕入先コードと販売先コードが入っています。フォーム上では仕入先名・販売先名も確認したいのですが、 「商品マスターテーブルにそれらを追加したクエリを作成 → クエリからフォームを作成」 という方法でよいでしょうか。 2)フォーム上で仕入先コードと仕入先名のコンボボックスを設置します。コードを選択すると自動的に次の欄に仕入先名が反映されるようにする方法を教えてください。 おそらく非常に初歩的な質問かと思いますが、マニュアルを見たり検索をかけたりしても要領を得ません。アドバイスをどうぞよろしくお願いいたします。

  • AC2000でフォームから入力したデータをサブフォームに表示

    ID 商品名 単位 単価で商品マスタフォームを作っています。このフォーム内にサブフォームを作っておいて データが入力するたびにサブフォームへ表示させたいのですが、このときの条件としてID(オートナンバー)を降順(最新のデータが一番上になる)・データシート形式にしたいと思います。 T_商品(テーブル名) Q_商品(IDを降順としたクエリ) MF_商品(各入力テキストボックスがあるフォーム) SF_商品(MF_商品に貼り付けるサブフォーム) 降順にすると一番若いIDのデータだけがサブフォームに 表示されるのです。 requeryは必要なのでしょうか? よろしくお願い致します。

  • ACCESSのデータシート形式のフォームでのDLookupについて

    お世話になります。 以下の様なコードでフォーム上の「bikou」という項目に商品マスタテーブル内の該当する商品コードの「商品名称」を代入しようと思います。 Private Sub 商品コードNo_BeforeUpdate(Cancel As Integer) Me!bikou = DLookup("商品名称", "商品マスタ", "商品コード='" & Me!商品コードNo & "'") End Sub これは単票形式のフォームではうまくいくのですが、データーシート形式ですと商品コードを入力する度にフォーム上に表示されている「bikou」がすべて塗り換わってしまいます。結果として最後に入力して商品コードの商品名称が、表示中のすべてのレコードの「bikou」に代入されてしまいます。そこで、「現在編集中のレコードの項目「bikou」のみに値を代入する(商品名称を代入する)」という指定を 行うプログラムの書き方はあるのでしょうか。 よろしくお願い致します。

  • サブフォームのデータをそのままひっぱってきたい。

    Access2002です。 T_マスタ・T_サブ・T_備考という3つのテーブルをもとに F_マスタ・F_サブ・F_備考という3つのフォームを作成しています。 F_マスタの中にF_サブをサブフォームとして設定してあります。(氏名IDでリンク) F_サブの中に、Fサブ上の情報(氏名ID・データ年)で検索をして開く F_備考を開くためのコマンドボタンを設置してあります。 そこでF_備考を開いた後に、何も検索結果が出されなかったら、 入力をするために、「入力」というボタンを設置しました。 このボタンを押すと、F_サブ上の「氏名ID」「データ年」を 自動でF_備考の同じ名前のところへ入力したいのです。 ですが、実行すると「F_サブフォームは見つからない」という旨の エラーが出てしまいます。 それならF_サブを開いてしまえと、コマンドボタン上に、 F_サブを開く設定をしたのですが、今度は 「サブフォームに設定してあるフォームは開けない」という エラーメッセージが表示されてしまいました。 サブフォームのデータをそのまま参照することはできないのでしょうか? 実際のコードは以下のような簡単なものです。 F_備考の「入力」ボタン Me!氏名ID = Forms![F_サブ]![氏名ID] Me!データ年 = Forms![F_サブ]![データ年] どうやったらデータをひっぱってこれるのでしょうか? 宜しくお願いします。

  • Access非連結フォームから複数レコード挿入

    お世話になっております。 Access2003を使用しております。 <テーブル ”商品マスターT”> code   shouhin =========================== 1    チョコ 2    ラムネ 3    ジュース 4    団子 5    ガム <フォーム "商品入力フォーム"(非連結・単票フォーム)>      商品コード       商品名 1行目 [非連結(テキスト0)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト0])] 2行目 [非連結(テキスト1)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト1])] 3行目 [非連結(テキスト2)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト2])] 4行目 [非連結(テキスト3)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト3])] 5行目 [非連結(テキスト4)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト4])]  商品コードを入力すると商品マスターTより商品名を引っ張ってきます。 <テーブル "履歴T"> code2   shouhin2 ==============================  データは空です 上記のものがあるときに商品入力フォームで入力した行数分だけ テーブル履歴Tにレコード追加したいのですが・・・ そういったことは可能でしょうか?非連結フォームから複数レコード追加は難しいでしょうか? 以上宜しくお願いします。

  • サブフォームでのデータ集計

    メインフォームの顧客CDとリンクしたサブフォームがあります。 コンボボックスにて担当営業を選択すると、サブフォームに その担当の顧客別の受注残明細が表示される様になって います。 サブフォーム内で抽出した明細を、顧客毎に集計し、 受注残数と受注残高をサブフォーム内に表示させるには どの様な方法があるのでしょうか? お分かりになられる方がいらっしゃいましたら ご指導頂きたいと思っております。 よろしくお願い致します。

  • データシート(サブフォーム)の複数条件抽出について。

    データシート(サブフォーム)の複数条件抽出について。 現在メインフォーム上に、オートフォーム:データシート(基となるテーブル(マスターA)選択) をサブフォームとして置き、メインフォーム上にコンボボックス2個(コンボ1、コンボ2)&コマンドボタン1個設置してあります。 基テーブル(マスターA)には 種類    サイズ    商品名 の3フィールドがあります。 やりたい事は、コンボ1(対応フィールド:種類)及びコンボ2(対応フィールド:サイズ)で選択し コマンドボタンを押下で、サブフォーム内データの抽出です。 まだACCESSを始めたばかりの未熟者のため、ネットや本で調べながらやっているのですが どうしても上記がわからなくて完全に進行ストップしてしまったので ご教授願いたいと思い質問させて頂きました。 Filterをかけ、条件はANDで繋げば良いとは思うのですが どのようにコードを組み上げれば良いのか調べつかないため 何卒ご教授の程宜しくお願い致します。 また、質問させて頂いている間も引き続き自分で調べながら やっていこうと思います。

専門家に質問してみよう