• ベストアンサー

ACCESS2000の帳票フォーム詳細欄でのコンボボックスについて

まずは現状から説明します。 以下のテーブルがあります。 [細分類マスタ] 細分類ID(主キー) 細分類 [品目区分マスタ] 細分類ID(主キー/細分類マスタ参照) 品目区分ID(主キー) 品目区分 [品目マスタ] 細分類ID(主キー/細分類マスタ参照) 品目区分ID(主キー/品目区分マスタ参照) 品目ID(主キー) 品目 [台帳テーブル] 台帳明細ID(主キー) 細分類ID(細分類マスタ参照) 品目区分ID(品目区分マスタ参照) 品目ID(品目マスタ参照) 数量 やった作業: 1.台帳テーブルをレコードソースとした台帳フォーム(帳票フォーム)を作成 2.台帳フォームの詳細に 細分類、品目区分、品目のコンボボックスを作成  -------------------------------------台帳フォームの詳細欄イメージ  [細分類▽][品目区分▽][品目▽][数量]  -------------------------------------  コントロール名:cbo_saibunrui,cbo_hinmoku_kubun,cbo_hinmoku 3.それぞれの値集合ソースに  SELECT * FROM 品目区分マスタ WHERE 細分類ID=cbo_saibunrui;  SELECT * FROM 品目マスタ WHERE 細分類ID=cbo_saibunrui AND 品目区分ID=cbo_hinmoku_kubun; を設定(これにより絞込み) 4.コンボボックスがフォーカス取得時に自分自身をリクエリー 現象: 2レコード以降を追加しようとすると、それより以前のコンボボックスの内容が一斉に 変ってしまう。(リクエリーがかかるからあたりまえ?) なんとか、それぞれのレコードのコンボボックスが独立して働くようにしたいのですが。 無理なら、特にこの方法にこだわるのもではありません。 要は台帳フォーム(帳票フォーム)の詳細欄で効率よく品目を選択でき、 その画面上でそれまでに選択した品目が見えていればOKです。 現在納期に追われて非常に困っています。 表現がわからないところは突っ込んでください。すぐに補足します。 よろしくお願いします。

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

  • ベストアンサー
  • Nac
  • ベストアンサー率63% (7/11)
回答No.2

実際にフォームを作成して実験したところ…変わりますね(苦笑) ということで自分なりに改造してみたんですが、台帳テーブルを [台帳テーブル] 台帳明細ID(主キー) 細分類ID 細分類 品目区分ID 品目区分 品目ID 品目 数量 と作り直して、フォームの詳細に 台帳明細ID 細分類ID▽ 細分類 品目区分ID▽ 品目区分 品目ID▽ 品目 数量 と連結フィールドを作成します。 コンボボックスの値集合ソースは SELECT [細分類マスタ].[細分類ID], [細分類マスタ].[細分類] FROM 細分類マスタ; SELECT [品目区分マスタ].[品目区分ID], [品目区分マスタ].[品目区分] FROM 品目区分マスタ WHERE ((([品目区分マスタ].[細分類ID])=[Forms]![フォーム]![細分類ID])); SELECT [品目マスタ].[品目], [品目マスタ].[品目ID] FROM 品目マスタ WHERE ((([品目マスタ].[細分類ID])=[Forms]![フォーム]![細分類ID]) And (([品目マスタ].[品目区分ID])=[Forms]![フォーム]![品目区分ID])); それぞれ、フォーカス取得時に Me![コンボボックス名].Requery 変更時に Me![コンボボックスの右隣のフィールド名] = Me![コンボボックス名].Column(1) とすることでうまく動きました。 参考になるでしょうか?

katuya
質問者

補足

やはり実装段階でテーブル設計への手戻りは痛いですね。 そのままのテーブルでは「できない」とわかっただけでも十分です。 若干の入力画面変更で何とかなりました。 おかげさまで来週いよいよ納品です。ありがとうございました。 /* 01-06-14 katuya */

その他の回答 (2)

  • seian
  • ベストアンサー率50% (16/32)
回答No.3

小手先の方法ですが、コンボボックスをテーブルと連結せずに、 表示はテキストボックスで行うようにしたらいかがでしょうか。 具体的に言うとドロップリストの表示用のボタンの幅だけの コンボボックスを作成して、その右側に表示用(テーブルと連結)の テキストボックスをくっつけておくのです。 例えば品目を選択する場合にはコンボボックスで品目区分でセレクトされた 内容をドロップリストとして表示し、その BeforeUpdate で 品目ID と 品目 の2つ値をテーブルと連結したテキストボックスに 代入してやることになります(品目IDの方は非表示にする)。 通常のコンボボックスの場合、表示用のボタンは表示の右側にあるのに、 この場合は左側になってしまいますがこの方が使う時にピンとくると思います。 折角IDがあるのに、台帳テーブルに細分類、品目区分、品目 と テキストデータすべてを保存することになってしまい問題が多すぎますか? いずれにせよ細分類、品目区分、品目をテキストで一覧表示したいのであれば 結局テーブルにすべてのテキストデータを持つ羽目になるような・・・・。

katuya
質問者

補足

ご回答ありがとうございます。 > 折角IDがあるのに、台帳テーブルに細分類、品目区分、品目 と > テキストデータすべてを保存することになってしまい問題が多すぎますか? 質問に挙げたのはシステムのほんの一部のテーブルでして、 既に仕様の決まったテーブルの変更をするのは手戻りが大きいのでやめておきました。 > いずれにせよ細分類、品目区分、品目をテキストで一覧表示したいのであれば > 結局テーブルにすべてのテキストデータを持つ羽目になるような・・・・。 これについてはクエリーで解決できますので問題はありません。 現に数値データしか持っていないようなテーブルが大半です。 今回の疑問は私のACCESSでの開発経験不足が一番の原因でした。 いろいろなメーリングリストなどを駆使し、睡眠時間を削り、休日を返上することで なんとか良いものができ、お客様にもお喜びいただけました。ありがとうございました。 /* 01-06-14 katuya */

  • Nac
  • ベストアンサー率63% (7/11)
回答No.1

コンボボックスの中身が一斉に変わってしまうのは コンボボックスが非連結だからです。 帳票フォームでのコントロールは連結されていないと すべてのレコードにおいて影響してしまいます。 それぞれのコンボボックスのコントロールソースを設定すれば 独立して動きますよ。

katuya
質問者

補足

ご回答ありがとうございます。 コンボボックスと台帳テーブルの連結はされています。 既存のデータをコンボボックスで表示するだけ、もしくは固定のリストからの選択なら問題ないのですが、 コンボボックスの内容をリクエリー(cbo_hinmoku.requery)した時点で一斉に替わってしまいます。 少し聴牌ってるので説明が下手でしたね。すみません。 またお願いします。

関連するQ&A

  • Accessのコンボボックスでの検索について2

    コンボボックスが2つあり、cbo回線区分でAAを選択するとcbo名称にはAA条件クエリの名称フィールドの名称が表示され、名称を何か選択すると、AA条件クエリの中から一致するレコードが抽出され、またcbo回線区分でBBを選択するとcbo名称にはBB条件クエリの名称フィールドが表示されBB条件クエリの中の一致するレコードを抽出しにいくということは出来ますでしょうか? わかりにくい説明ですいませんが、コンボボックスにより検索したいクエリを切り替えることは出来るかということなんですが。。。 コンボボックス名 cbo回線区分、cbo名称 クエリ名 AAクエリ、BBクエリ 色々試してはいるんですがうまく行かないので、ご教授願います(If Else・・・を使ったんですが間違いでしょうか?)

  • Access 商品マスタフォームの検索コンボBOX

    商品マスタフォームのヘッダーに非連結のコンボボックスを設けて、 商品検索キーを使ってフォームにデータを表示させるようにしています。 フォーム「商品マスタ」 選択クエリ「商品検索」(フィールド:「商品ID」「検索キー(カナ2文字)」「商品名」) コンボボックス「cb検索」 更新後処理に「再クエリマクロ」 うまく動作していますが、検索コンボボックスをもう一つ設けて、 仕入先からも検索できるようにしたいと思いました。 同じようにフォーム上に非連結のコンボボックスを作成して 選択クエリ「商品検索仕入先」(フィールド:「商品ID」「仕入先」「商品名」) コンボボックス「cb検索仕入先」 更新後処理に「再クエリマクロ」 フォームのコントロールソースのクエリ「商品ID」の条件を Like [Forms]![商品マスタ]![cb検索] & "*" Or Like [Forms]![商品マスタ]![cb検索仕入先] & "*" としました。 何度か交互に検索してみましたが、選択した商品が表示されるときとされないときがあります。 表示されないときは、検索に使っていないほうのコンボボックスの値が反映されているようです。 また、続けて検索キーのみで検索を試みてみると、うまく表示されるときと、そのときの 仕入先検索が選択している商品が表示されるときとがあります。 法則性がまったくわかりません。 一番最新のコンボボックスの選択が表示に反映されるようにするには どのようにすればよいのか教えていただけないでしょうか。 他に提示する情報があれば重ねてご教示ください。 よろしくお願いします。

  • Access 帳票フォームのコンボボックス

    こんにちは。 Accessの帳票フォームに得意先のコンボボックスを配置し、入力の手助けをしたいと思います。 しかし、名前が良く似ているため、一部を入力したらリストが絞り込まれるようなものにしたいのです。 単票フォームに同じようなものがあり、非連結のテキストボックスに入力をしたら、コンボボックスに絞り込まれたリストが自動的にドロップダウンされるようなものを作っています。 帳票フォームでこういうことをすることが、難しいことは今までいろいろな方の質問で分かっています。  Access2003  Q:得意先:得意先ID、得意先名、検索カナ  検索カナの一部を入力したら、得意先名のリストが自動的に表示されるようにしたい。  帳票フォームでこのようなことは可能でしょうか? 無理でしたら、無理と言っていただけると諦めがつきます。 よろしくお願いします。  

  • ACCESS 2007で帳票フォームで絞り込み

    はじめまして、ACCESS初心者なのですが、困っています。 商品マスターというテーブル(商品ID、メーカー名、品名、型式)があって、見積フォームの サブフォームの見積詳細フォーム中で、メーカー名、品名、型式をコンボボックスで選択できるようにしており、以前見積もりしたことのある商品をメーカー名、品名、型式をコンボボックスでテーブルから 絞り込みをしながら参照してくるようにしたいのですが、テーブル内にあるレコードと同じものを 選ぶと新しくレコードが追加されてしまいます。同じ場合は追加したくないのですがどうしたら良いのでしょうか? レコードソースはクエリQ_見積詳細で、  見積詳細テーブル(見積No、注文No、数量、単価、商品ID)と商品マスター(商品ID、メーカー、  品名、型式)を商品IDでくっつけているものです。  コンボボックスは3つあって、  1つ目のメーカーCoのコンボボックスはコントロールソース メーカー  値集合ソースはクエリでQ_メーカー  Q_メーカーは商品マスターのテーブルで  フィールド・・メーカー テーブル・・商品マスター 集計・・グループ化 表示・・ON  フィールド・・品名 テーブル・・商品マスター 集計・・グループ化  表示・・OFF フィールド・・IIf([Forms]![見積データフォーム]![見積データフォーム詳細]![品名IDCo]         _Is Null,True,[商品マスター]![品名]=[Forms]![見積データフォーム]! _[見積データフォーム詳細]![品名IDCo]) テーブル・・なし 集計・・グループ化  2つ目の品名IDCoのコンボボックスはコントロールソース 品名  値集合ソースはクエリでQ_品名  Q_品名は商品マスターのテーブルで  フィールド・・品名 テーブル・・商品マスター 集計・・グループ化  表示・・ON  フィールド・・メーカー テーブル・・商品マスター 集計・・グループ化 表示・・OFF  フィールド・・IIf([Forms]![見積データフォーム]![見積データフォーム詳細]![メーカーCo]         _Is Null,True,[商品マスター]![メーカー]=[Forms]![見積データフォーム]! _[見積データフォーム詳細]![メーカーCo]) テーブル・・なし 集計・・グループ化  3つ目の型式Coのコンボボックスはコントロールソース 型式  値集合ソースはクエリでQ_型式  Q_型式は商品マスターのテーブルで  フィールド・・型式 テーブル・・商品マスター 集計・・グループ化  表示・・ON  フィールド・・品名 テーブル・・商品マスター 表示・・OFF          抽出条件 [Forms]![見積データフォーム]![見積データフォーム詳細]![品名IDCo]  フィールド・・メーカー テーブル・・商品マスター 表示・・OFF          抽出条件 [Forms]![見積データフォーム]![見積データフォーム詳細]![メーカーCo]   上記でやると、絞りこみはできるのですが、型式で同じものが2個表示されたり、レコードが新規  で追加されてしまいます。  よろしくお願いします。

  • ACCESS2000 コンボボックス絞込み

    こんにちは。以前に同じ質問をしたのですが、分からなかったので再度質問させて頂きます。 フォームでコンボボックスで入力しているのでが、 1つ目で選択したら2つ目のコンボボックスに1と関連するデーターしか表示しないようにしたいのですが・・。 テーブル 売上区分1  売上区分1ID  オートナンバー  売上区分1   テキスト型 テーブル 売上区分2  売上区分2ID  オートナンバー  売上区分1   数値  売上区分2   テクスト型 ファームの表示はそれぞれ、区分名が表示されるようになってます。 コンボ1で選んだのが、商品区分1IDが1ならコンボ2で表示されるのが、テーブル 売上区分2 の 売上区分1が1のものだけ表示できるようにしたいです。 説明が悪いかもしれませんが、お願いします。 初心者なもので、分かりやすく書いていただければありがたいです。お願いします。  

  • アクセスコンボボックスで教えてください。

    アクセス初心者です。 設備の修理情報を登録する、簡単なデータベースを作成しています。 修理履歴テーブル  修理ID(オートナンバー)  発生日  設備No.  実施区分ID 実施区分テーブル  実施区分ID  区分名       001     実施済    002     未実施 実施区分IDはリレーションシップを組んでいます。 その他、修理履歴テーブルを基に、修理履歴クエリを作成、 情報を登録するフォームを作成しました。 基になるクエリを修理履歴クエリにし、デザインビューで 修理履歴を閲覧することができるフォームを作成、 実施区分は、実施済・未実施とを選択できるように コンボボックスで作成、表示することができました。 しかし、完成後、あるレコードのコンボボックスで未実施を選択後フォームを閉じ、次にまたそのフォームを開くと、実施済の全レコードが未実施表示になってしまいます。 また、実施区分テーブルの区分名、実施済が未実施に変わってしまっています。 どのようにしたら、選択したレコードだけ、未実施表示にし、実施区分テーブルの区分名も変らずに済むのでしょうか? よろしくお願いします。

  • 【Access】サブフォームのコンボボックス連携

    ACCESSで社員の資格情報を入力するシステムを作成したのですが 以下の問題を解決できず困っています。 どうすればいいか お力を貸して頂けないでしょうか? ■問題:メインフォームで別レコードに移動した際 サブフォーム内の連携コンボボックスを更新されない □コンボボックス2の表示項目 1.分類別No 2.資格名ID 3.資格名 3のみを表示していますが、 1つ目のコンボボックス1の数値で 全コンボボックス2の資格名が出てしまいます。 ■フォーム構成 メインフォーム内に以下を設置 1.移動ボタン 2.帳簿サブフォーム □サブフォーム構成 レコード1 コンボボックス1 コンボボックス2 レコード2 コンボボックス1 コンボボックス2 ~~ 最終レコード コンボボックス1 コンボボックス2 ■コントロールソース コンボボックス1:大分類ID コンボボックス2:資格名ID ■テーブル構成 資格名  資格名ID(主キー)  大分類ID  分類別ナンバー(大分類ごとの登録順ナンバー)  資格名   資格大分類  大分類ID(主キー  大分類名 (IT系・運転系など) ■コンボボックス2の値集合ソース(表示項目:資格名) SELECT 資格名.資格名, 資格名.分類別No, 資格名.資格名ID FROM 資格大分類 INNER JOIN 資格名 ON 資格大分類.資格大分類ID = 資格名.資格大分類ID WHERE (((資格名.資格大分類ID)=[Forms]![メインフォーム]![サブフォーム]![コンボボックス1])) ORDER BY 資格名.分類別No; ------------------------------------ サブフォームに記載し効果のなかったVBAコード ’再クエリ Private Sub Form_Current() Dim cntrl As Control If Not IsNull(Me![コンボボックス1]) Then For Each cntrl In Form.Controls If cntrl.ControlType = acComboBox Then cntrl.Requery End If Next cntrl End If End Sub ’ソース更新 Private Sub Form_Current() With Forms!メインフォーム名!サブフォーム名!コンボボックス2 .RowSource = .RowSource End With End Sub ■参考サイト 'サブフォーム内での2つのコンボボックスの連動について 'http://goo.gl/nfvxW '~ '>   コンボボックスAの更新後処理イベントに '> Me!コンボボックスB.Requery '> 'Me.コンボボックスB.RowSource = Me.コンボボックスB.RowSource '数値でコンボボックス選択 'http://goo.gl/ovZ3C 'リストボックスの行を選択するときは、「Selected(n)」を使います 'http://goo.gl/RbsWX 'サブフォームの指定 ' =Forms!フォーム名!サブフォームコントロール名.Form.テキストボックス名 'http://goo.gl/vKxtj

  • サブフォーム帳票形式上での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にカテゴリで絞り込んだ内容が選択できるように したいのです。 そして次の行も同じように商品を入力したいのです。 どなたか助けて下さい、お願いします。

  • Access フォームのコンボボックスでの検索

    Access2010で質問です。 フォーム上のコンボボックスで レコードを検索・抽出したいと考えています。 以下のような事をやりたい場合、 フォームやVBAをどのように 作ればよろしいのでしょうか? お忙しいところたいへん恐れ入りますが、 ご教授いただけますと助かります。 ======テーブルの説明===== 以下の3つのテーブルがあります。 ◆メインテーブル |No|職業 |住所|年齢|名前| -------------------------- |01|会社員|東京| 31|品川| |02|自営業|埼玉| 30|川口| |03|会社員|東京| 30|渋谷| |04|自営業|埼玉| 20|戸田| |05|自営業|埼玉| 20|熊谷| |06|自営業|東京| 30|太田| ◆職業テーブル |No|職名 | ----------- |01|自営業| |02|会社員| |03|無職 | ◆住所テーブル |No|地名| --------- |01|東京| |02|埼玉| |03|千葉| そして、各テーブルは 以下のようにリレーションされています。 ・職業テーブルはメインテーブルの「職業」へリレーション ・住所テーブルはメインテーブルの「住所」へリレーション =====検索方法の説明===== 検索はフォーム上で行いたいです。 フォームに以下のようなコンボボックスを2つ作成します。  コンボボックス1・・・職業が選べます  コンボボックス2・・・住所が選べます それぞれのコンボボックスで条件を選んだ後、 「実行」ボタンを押すことで検索結果を表示させたいです。 ◆両方のコンボボックスが空欄だった場合 「検索条件を選んでください」との メッセージボックスを表示させたいです。 ◆複数のレコードが抽出された場合にやりたい事 各レコードの「年齢」を比較して 値が一番小さいレコードだけが 抽出されるようにしたいです。 「年齢」が同じ値だった場合(競合した場合)は 「No」の値が小さいレコードを抽出したいです。 ◆検索結果の表示方法 抽出されたレコードの「名前」だけを フォームに表示したいです。 =====検索結果の例(やりたい事)===== ◆事例1 コンボボックス1=「会社員」 コンボボックス2=「東京」 検索結果=「渋谷」 01と03が検索にヒットしますが 「年齢」の値が小さい方(03)だけを 抽出されるようにしたいです。 ◆事例2 コンボボックス=「自営業」 コンボボックス=「埼玉」 検索結果=「戸田」 まず02と04と05が検索にヒットしますが 02の「年齢」の値が大きいので除外します。 次に04と05の「年齢」の比較ですが、 同じ値になっています。 したがって「No」の値が小さい04が 抽出されるようにしたいです。 ==================== 以上です。 できるだけ詳細に書いたつもりですが、 不足な情報がありましたらご指摘ください。 なにとぞよろしくお願いいたします。

  • access2003コンボBOXの絞込み

    部品マスターテーブル内に300件以上のデータがあります。 部品マスターテーブル 品ID  品区分  品コード  品名  ****  ****  ・    a  ・ b *製品仕様のサブフォーム内に部品構成を作るのですが 製品仕様フォーム  製品コード 999   製品名 ZZZ    構成 sub   999  品ID 品区分 品コード 品名  員数 ****   ・   ・ 現在品コードをコンボBOXのリストから入力していますが 300件以上表示され見つけ出すのが大変です。 品区分のカテゴリでANDの絞り込みができれば表示件数は1/10に減ります。レコード入力の際サブフォームからの入力時にできないものでしょうか? 

専門家に質問してみよう