• ベストアンサー

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

専門家に質問してみよう