• ベストアンサー

ACCESSのコンボボックスで入力した値がTABLEに反映されずに数字がでます

TABLE 県名、お客さまの2つを作成 お客さまのフォームの入力の県名のところを コンボボックスにして県名テーブルを参照し 選択したものをお客さまのレコードのところの 県名にはいるようにしたいのですが、 選択したID?数字がはいってしまいます。 (選択はできているようです) なにか設定が足りないのでしょうか? お分かりになる方、お知恵をお貸しください。 よろしくお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.1

> 選択したID?数字がはいってしまいます。 コンボボックスのリストから一番上を選んだとき、0 が入りませんか? もし、そうだとするとコンボボックスの ListIndex番号が入っている可能性があります。 「お客様」フォームをデザインビューで開き、そのコンボを右クリックしてプロパティを 指定し、「データ」タブで「連結列」を 1 に設定します。(ここが 0ですとListIndex番号) 「値集合ソース」には県名のテーブル名を入れますが、一番最初のフィールドが、[県名]で ないときは、例えば、 SELECT 県名TBL.県名 FROM 県名TBL; のように[県名]フィールドが 1番先になるようします。 (値集合ソース欄をクリックすると右端に出る ...ボタンを押すとクエリビルダがでるので、 [県名]だけを下のグリッドにドラッグすると自動でSQL文が設定されます。 ) これで、如何でしょうか。

pokepotto
質問者

お礼

本当にどうもありがとうございました。(*- -)(*_ _) 本屋にいって何冊も本をみたんですがいい回答が得られなくて・・・ 疑問に思っていたところがすっきりしました。

pokepotto
質問者

補足

値集合ソースの設定の先頭が県名IDになっていたのが原因のようですがお客様の県名に関する登録は直接県名ではなく県名IDのほうがDB仕様の上では基本だからできない?のかなとも思ったり・・・ ご回答を頂く前に、何冊の書籍を参考に色々試して、 お客様TABLEのデザインでデータ型にルックアップを選ぶと一応やりたいことができたのですが、 直接貼り付けたコンボボックスで同じことができないというのはおかしいと引っかかっていました。 どの参考本もIDをテーブルに記述するという同じようなやり方でやっているのですが、なぜ直接県名(またはそれに順ずるもの)ではいけないのかはっきり明記されていませんでした。(同一名称が入る可能性があるので、ユニークなIDを・・・が原則ということなのでしょうが・・・県名ではありえないので・・・) お客様の県名についてルックアップで作成した場合もウィザードに従って作っていったら表示する場合は県名ですが、TABLEを除くと県名IDがかってに登録されていました(^^; ルックアップクエリを通して、TABLEをビュー表示するときに自動で県名表示に代えてくれるようですね・・・ (TABLEのデザインを見てみると県名がはいるところに県名IDがはいっている・・・) ja7さんが教えてくれた方法ではTABLEの中も県名のままでできました(^^) わかりにくい文章ですみません。 質問のようなことをするときはやはりIDでTABLE内に登録してクエリやコードで県名に変換するというのが 正規のやり方なんでしょうか? お分かりでしたら教えてください。

その他の回答 (2)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

1番目のフィールドに「県名ID」があったんですね。 質問に > 選択したID?数字がはいってしまいます。 と ? が付いていましたので、得体の知れない数字だと解釈し、それならListIndexしか 考えれませんでしたので、あのようなレスになりました。 みごとハズレでした。 ? がなければ、現状は、想定出来たのですが・・・  と言い訳けしたり・・・ > 質問のようなことをするときはやはりIDでTABLE内に登録してクエリやコードで県名に > 変換するというのが正規のやり方なんでしょうか? そうですね。今回の「県名」について言えば、微妙なところですね。 というのは、県名は、変更や増減がめったに無いし、リストが47?より無いし、 「値集合タイプ」を「値リスト」にして、「値集合ソース」に 北海道;青森;秋田;岩手;・・・ としてもいいようなものですが、ちょっと多いのでテーブルを使うような感じでは? これが県名ではなく、例えば、会社の支店名や部署、課、係、などの参照テープルであれば、 それぞれをコード化し、メインのテーブルには、コードのフィールドだけを設けて、余分な データを持たないようにします。で、その名称は、クエリでテーブル間を結合させて、 表示させるようにします。 > ウィザードに従って作っていったら・・・ >本屋にいって何冊も本をみたんですが・・・ 何か勉強中とも思えますので、今回の場合も リレーションを習得するために、お客様TABLE は、県名ID だけにして、テーブル間で 1対多 のリレーションを設定し、クエリで「県名」を 参照し、このクエリをお客さま入力フォームのレコードソースにしてみたら如何でしょうか。 それで、フォームの「県名ID」コンボのプロパティで「書式」タブの「列数」を 2 に、 「列幅」を 1cm , 2cm 位、「データ」タブの「値集合ソース」を「県名TBL」、 「連結列」を 1 に設定します。 そうすると県名IDを入力するとき、コンボに県名も表示なります。 県名IDが入力されると、その右側に[県名]が表示になるように連結テキストコントロールを 配置しておきます。 データペースの相対的な内容が、見えませんので、どうすべきとかは言えない状況ですが、 練習を兼ね、こんな感じで如何でしょうか。 ご存知のことだったかも知れませんが・・・ でもウィザードから早く脱出した方が・・・

pokepotto
質問者

お礼

お礼が遅くなってすみません。 メールが届いていたのを見過ごしていたようです。 大変丁寧に記述してくれて助かりました どうもありがとうございました。(*^^*)

  • aki2004
  • ベストアンサー率25% (2/8)
回答No.2

これだけの情報ではなんとも言えませんけど、コンボボックスの「プロパティ」の「データ」の「連結列」が「1」になっていませんか。 フィールドがIDから見て何列目かを設定してみては。

pokepotto
質問者

お礼

ご回答どうもありがとうございました。 連結列とか、列数とか、色々いじってみたんですけど、なかなか思ったように表示できなくて・・・ TABLEの中に県名がちゃんと書き出されるようになったと思ったら、今度は選コンボで選択決定したときの文字が数字になったり・・・ 補足にあります、質問のようなことを実現させるためにはTABLE内はIDを登録したほうがいいのかどうか お分かりでしたらご回答いただければありがたいです。(長文ですが・・・) 本当にかなり悩んでいたのでご回答頂いた方々には感謝しきれない思いです。

関連するQ&A

  • コンボボックスの値が消えてしまいます。

    コンボボックスの値が消えてしまいます。 フォーム(1)にコンボボックスA(値集合ソースはテーブル1)があります、この リスト外入力時で別フォーム(2)(レコード追加用)を開きテーブル1にレコードを追加、 フォーム(2)を閉じる時にコンボボックスAをリクエリかけてフォーム(1)に戻るとコンボボックスAが空になっているのでリストを開き選択し直さなければいけません! フォーム(1)に戻った時コンボボックスAに入力した値を選択させておくにはどの様にすれば良いか アドバイスよろしくお願いいたします。 WIN XP ACCESS 2003で作成しています。

  • コンボボックスを使った入力の改善

    コンボボックスを使った入力を全てのデータベースで利用しています。しかし、各コンボボックスがそれぞれ独立「単体動作」しているので、コンボボックスの初段目「最初」はレコード数が少ないのですが、2段目3段目になると選択候補が累積表示されるので、候補の数も多くなり使いづらさを感じるデータベースも増えました。この状況を改善したいと思っていますので、宜しくお願いします。尚、データベースで設定しているコンボボックス全てに言えることでもありますので、以下のケースを紹介させていただきますので、アドバイスをお願いしたいと思います。 [現状でのやり方] コンボボックス参照オブジェクトは以下の構成にて、コンボボックスは独立していて連動していません。なお、参照データの追加作業は別途作成したフォームを、データ入力フォームに配したコマンドボタンで開いて行っています。 [コンボボックス関連オブジェクト(例)] コンボボックス名:都道府県(値集合ソースで都道府県のみ選択) テーブル名:都道府県テーブル フィールド名:ID、都道府県 フォーム名(参照データ追加):都道府県追加フォーム ※「新規追加後の入力フォームへの即反映はアドバイスにより完結済」 コンボボックス名:市町村(値集合ソースで市町村のみ選択) テーブル名:市町村 フィールド名:ID、市町村 フォーム名(参照データ追加):市町村追加フォーム ※「新規追加後の入力フォームへの即反映はアドバイスにより完結済」 [改善させたいこと] コンボボックス「都道府県」で東京都を選択したとき、次のコンボボックス「市町村」では東京都の市町村だけが次の候補として表示させたいと思っています。又、現在は蓄積データの絞り込み検索で設定していますが、選択コンボボックスの次のコンボボックスを自動プルダウンさせ、候補も同時に表示させ入力できればと考えています。 以上ですが、宜しくお願いします。

  • Access コンボボックスの絞り込み後の表示

    Access2002を使用しております。 コンボボックスAに連動したデータを絞り込みさせるコンボボックスBがありますが、一旦入力後は、コンボボックスAの値にかかわらずコンボボックスBに入力したデータを表示させるにはどうしたらよいでしょうか? 例として、次の3つのテーブルを基にデータベースを作成しております: メインテーブル フィールド名: ID 社名 担当者 社名テーブル ID   社名   住所 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    A社 2    B社  担当者テーブル ID   社名ID   担当者名  電話番号 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    1      木村 2    2      佐藤 3    1      田中 4    2      斎藤 メインテーブルを基にしてフォームを作成し、 「メイン」というフォーム名にして 「社名」「担当者」をフィールドのコントロールをコンボボックスに変更しました。 「社名」フィールドの値集合ソースを「社名テーブル」から引き出し SELECT [社名テーブル].ID, [社名テーブル].社名 FROM 社名テーブル; 列数2  で設定し、社名をコンボボックスで選択できるようにしました。 そして 「担当者」フィールドの値集合ソースを「担当者テーブル」から引き出し SELECT 担当者テーブル.ID, 担当者テーブル.担当者名, 担当者テーブル.社名 FROM 担当者テーブル WHERE (((担当者テーブル.社名)=forms!メイン.社名)); で設定しました。 「社名」フィールドの「更新後処理」で Private Sub 社名_AfterUpdate()     Me!担当者.Requery End Sub を設定しました。 「メイン」フォームをフォームビューで開き、「社名」コンボボックスで「A社」を選択すると 「担当者」コンボボックスで「木村」と「田中」が表示されるので、「木村」を選択します。 次のレコードに移り、「社名」コンボボックスで「B社」を選択すると 「担当者」コンボボックスで「佐藤」「斎藤」が表示されるので、「佐藤」を選択します。 さて、「佐藤」を入力した時点で、前のレコード(「A社」「木村」を選択)に戻ると 「担当者」欄が空欄で表示されます。 メインテーブルには全てデータは入力されています。 データ入力時は「担当者」コンボボックスは「社名」コンボボックスで選択した値に連動させたいのですが、 このようにデータ入力済みの場合は 最初のコンボボックスの値にかかわらず(この場合は直近に選択した社名がA社・B社のいずれかであろうとも) 入力済みのデータ(「木村」「佐藤」)がフォームに表示されるようにしたいのですが 何か良い方法はないでしょうか? 出来れば入力専用と読み取り専用のフォームを2つ使用するのではなく、1つのフォームで事足りればありがたいのですが・・・

  • アクセス コンボボックス値をレポートに反映

    アクセス初心者の為、やりたい事を検索しコードコピー等真似ることで どうにか作っている状態です。 現在あと一歩のところでつまずいてしまったのでお力添え頂けると助かります。 環境:アクセス2003 ------------------------------------------------------------------------------ フォームのコンボボックスで表示された値と一致するレコードを下にあるテキストボックスで表示  ⇒レポートにその値を反映させたい ------------------------------------------------------------------------------ フォーム上: 送付先:「A社」 (コンボボックスで選択) 担当者:「Aさん」 (コンボボックスで選択するとテキストボックスで表示) 現在の状況: フォーム上ではコンボボックスの値、その値と一致するレコードを該当テーブル(T_送付先)から テキストボックスに表示されている。 レポート上でだけ何故か送付先の部分が元テーブル(T_送付先) の送付先ではなく(フォームでは表示されてるのに) 数字が代わりに表示されてます。 担当者のテキストボックスにはフォームと同様に表示されてます。 ------------------------------------------------------------------------------ フォーム上にある送付先のコンボボックスには↓ Private Sub コンボ8_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[ID] = " & Str(Nz(Me![コンボ8], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub ------------------------------------------------------------------------------ フォームの送付先を表示するテキストボックスには↓ =[Forms]![F_送付先]![コンボ8] ------------------------------------------------------------------------------ フォーム上のコンボボックス、コンボ8のプロパティ 値集合ソース: SELECT T_送付先.ID, T_送付先.送付先 FROM T_送付先; 連結列: 1 ------------------------------------------------------------------------------ テーブル(T_送付先)の一列目にID項目がありオートナンバー設定してあります。 その値が表示されてる気がします・・・ 他にもコンボボックスを使用してますが、全部レポートには表示されています。 コントロールの値と一致するレコードを検索するこのコンボボックスだけが 表示されない為コードが影響しているのかな・・と考えられますが お手上げ状態です・・・ どなたかアドバイス頂けると助かります。 よろしくお願いします。

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

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

  • ACCESS2000フォームでコンボボックスを使ったクエリーを作成したい

    ACCESS2000でデータベースを作成しています。 どなたか教えてください!! 検索フォームというのを作り、そこには「部」「課」「掛」を 選択できるようにテーブルを参照してコンボボックスを作成しました。 それぞれの項目を選択した後、「検索」ボタンを押すと コンボボックスから選んだ値と一致するレコードだけを抽出して表示させたいんです。 クエリは何となく作ったのですが、現在は全てのデータが抽出されてしまいます。 条件を一切入力していない状態なんです。 検索条件に"総務部"などと入力すればそのデータだけ抽出 されるようにはなっています。 でも、でも・・・「コンボボックスで選んで値と一致したら」抽出っていう条件をどうやって設定していいかわからないのです。 どうぞよろしくお願いします。

  • 入力した値をコンボボックスにすぐに反映させる方法

    テーブルでコンボボックスから選んでデータを入力したい場合、コンボボックスの内容を他のテーブルやクエリあるいは値リストから抽出する方法はわかりますが、コンボボックスの内容に該当するものが無い場合、一覧から選ばずに、手入力することにしたいと思っています。そこで、手入力した後次のレコードに移動した時にコンボボックスの内容に手入力した内容がすぐに反映するようにしたいのですが、うまい方法は無いでしょうか?私としてはいちいち他のテーブルを開いて入力したりせずにしたいのですが・・・

  • コンボボックスのリスト外入力について(Access2002)

    お世話になっております。 ひとつお聞きしたいのですが、Accessのコンボボックスプロパティの「リスト外入力」の設定のしかたが分かりません。 コンボボックスを非連結にして、コンボボックスより選択してフィルタをかける動作と、コンボボックスに値がなかったらコンボボックスに直接入力して新しい値を元に新規にレコードを追加すると言ったロジックを組み込みたいのですが可能でしょうか?よろしくお願いいたします。 まとめると、 (1)コンボボックスより値を選択して、フィルタをかける。 (2)コンボボックスに値が無かったら、コンボボックスに直接入力して新規レコードとして、レコードを追加する こう言った、流れでの作業です。

  • Access2000 コンボボックスで…

    こんにちは。Accessは…初心者です。 フォーム上のコンボボックスについての質問です。よろしくお願いします。 Windows2000/Access2000です。 次のようなテーブルがあるとします。 「作家」…作家ID,作家名 「作品」…作品ID,作家ID(「作家」テーブルから[作家名]を引っ張ってきます)作品名 「許諾」…許諾ID,作家ID(「作家」テーブルから[作家名]を引っ張ってきます),作品ID(「作品」テーブルから[作品名]を引っ張ってきます),許諾情報 「許諾」テーブルを元にして、フォームウィザードから単票形式で「許諾フォーム」を作成しました。 このとき[作家ID]と[作品ID]は自動的にコンボボックスになりますが、[作品ID]コンボボックスに、[作家ID]コンボボックスで選択した作家の作品のみを表示したいのです。 ([作家ID]でAさんを選択したら[作品ID]にAさんの作品だけが表示されるようにしたい、ということです。) 似た内容の質問を参考にしたり、いろいろなAccessのサイトを検索したりして試したのですが、イマイチ???でした。 何かよい方法がありましたらご教示ください。 お願いします。

  • コンボボックスで

    コンボボックスで、あるテーブルを参照してリストを出す場合、リスト中になかった場合に、コマンドボタンを押せばテーブルの追加フォームが出てきて入力できるようにしています。この場合に、入力フォーム内で終了(保存)ボタンを押せば、自動的にコンボボックスの中に入り、かつもう一度選択しなくても表示されているような操作はできないものでしょうか?

専門家に質問してみよう