- ベストアンサー
Accessフォームで大分類から小分類を選択する方法とは?
- Access初心者がフォーム上で大分類から小分類を選択する方法について詳しく教えてください。
- Accessのコンボボックスを使用して都道府県の選択によって市区町村の選択を制限する方法を教えてください。
- Accessのフォームで都道府県のコンボボックスを作成する際、重複した都道府県名が表示される問題について解決方法を教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
ごめんなさい。暑さで脳の中が煮えくり返り、 大間違いをしでかしていました。 更新後処理ですから、 Private Sub cmb都道府県_AfterUpdate() Me!cmb市区町村.Requery End Sub です。 cmb都道府県_BeforeUpdate(Cancel As Integer) ではありませんでした。 それから、 >FROM句の構文エラーです これは、テーブル名と値集合ソースの中のテーブル名に 違いが存在する可能性があります。 念のために、cmb都道府県とmb市区町村の値集合ソースの 実際のデータをコピーして示してもらえますか。 結構重要なところなので最後までつきあいます。 http://oshiete1.watch.impress.co.jp/qa5995365.html このぐらいの長さなら大丈夫です。
その他の回答 (6)
- piroin654
- ベストアンサー率75% (692/917)
それと、Mo5の(3)の 列数 1 列幅 2cm No5の(4)の 列数 2 列幅 0cm;2cm は重要なので必ず設定してください。
お礼
piroin654さま、ご面倒をおかけし誠に申し訳ございません。 お暑い中お付き合いいただき、本当に感謝しております。 そして、おかげさまで一歩前進しました! cmb都道府県が、グループ化できました!!! ちゃんと3都県がリスト化されました(泣) 本当にありがとうございます! ここに貼り付けるようにと仰られたとおりにしようと思って、 コピー&ペーストしたら…あれ、どこか違う、と思って、 再度手で入力したら、ちゃんとできました(恥) 「FROM句の構文エラーです」も出ず、ちゃんと動きました。 単純な入力間違いだったのですね…お恥ずかしいです。 ですが、cmb市区町村のほうはまだ駄目です… 最初のcmb都道府県と同じで、白い1行のリストが出てきてしまいます。 cmb都道府県は、 SELECT T住所.都道府県 FROM T住所 GROUP BY T住所.都道府県; cmb市区町村は、 SELECT T住所.都道府県,T住所.市区町村 FROM T住所 WHERE(((T住所.都道府県)=[Forms]![F住所]!cmb都道府県])); 列数、列幅はそれぞれご指示どおりになっています。 まだお付き合いくださるとのこと、 なんてお礼を申し上げていいのかわかりませんが、 本当にありがとうございます。 お時間がある時で結構ですので、どうぞよろしくお願いいたします。
補足
あああ!で、できました!!! cmb市区町村の最後の「cmb都道府県」に「[」が抜けていました(恥) 気づいて入力したら!できました!!! 本当に本当にありがとうございます!!!
- piroin654
- ベストアンサー率75% (692/917)
最初から説明します。簡単に確認のため以下のように してみてください。 (1) まず新しいフォームを作成してください。 名前をF住所とします。 (2) フォームにコンボボックスを二つ設定します。 コンボボックスの名前をそれぞれ、 cmb都道府県 cmb市区町村 とします。 (3) cmb都道府県の設定: 値集合ソース: SELECT T住所.都道府県 FROM T住所 GROUP BY T住所.都道府県; 列数 1 列幅 2cm その他は既定 (4) cmb市区町村の設定: 値集合ソース: SELECT T住所.都道府県, T住所.市区町村 FROM T住所 WHERE (((T住所.都道府県)=[Forms]![F住所]![cmb都道府県])); 列数 2 列幅 0cm;2cm その他既定 (5) cmb都道府県の設定 cmb都道府県のプロパティの更新後処理の右端を クリックし、ビルダの選択を表示し、コードビルダ をクリックします。コード表が表示され、 Private Sub cmb都道府県_BeforeUpdate(Cancel As Integer) End Sub と、表示されます。そこで Private Sub cmb都道府県_BeforeUpdate(Cancel As Integer) Me!cmb市区町村.Requery End Sub のように、 Me!cmb市区町村.Requery を中に入れて保存して閉じます。 (6)ついでに応用 F住所にテキストボックスを一つ設定します。 そのコントロールソースに、 =[cmb市区町村].Column(1) とします。これによりテキストボックスに cmb市区町村で選択した名前が表示されます。 単に、=[cmb市区町村] とすると県の名前が 表示されます。cmb市区町村の値集合ソースでは 都道府県と市区町村が選ばれていますが、 コンボボックスの設定で都道府県は非表示 になっています。したがって単に、=[cmb市区町村] とすると県の名前が表示される、ということです。 =[cmb市区町村].Column(0) とすると、県の名前が表示されます。
お礼
piroin654さま、たびたびお手をわずらわせ、本当に申し訳ありません。 また、お礼が遅くなってしまい、重ね重ね申し訳ありませんでした。 とてもわかりやすいご説明、ありがとうございます。 なのに…できないんです!申し訳ありません! お察しだと思いますが、テーブルとして挙げたのはあくまでも例ですので、 piroin654さまのNo.5の記述のとおり、 新たに「T住所」のテーブルと「F住所」のフォームを別に作って 昨日から何回も作ってみました。でもできないんです(泣) 全部入力してフォームに戻り試してみようとすると、 「FROM句の構文エラーです」というのが出るのが一番多いです。 もう一つ不思議なのは、 No.5(5)の手順でコードビルダをクリックすると、 書いていただいたコードとは違い、 Private Sub cmb都道府県_AfterUpdate() End Sub と書かれています。 これを、ご指示のとおりBeforeUpdate~に書き直しても、 やはりリストは空欄になってしまいます。 あんなにご親切に教えていただいたのに、 1日経っても何もお返事しないのは失礼だと思い、 途中ですがお礼のみ申し上げに出てまいりました。 もう少し、頑張ってみます! お時間を割いてくださいまして、本当にありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
>「T住所」「都道府県」等には[ ]はいらないのですか? とくに必要はありませんが、No3のソースを値集合ソースに 貼り付けるとAccessが勝手に[]をつけるかもしれません。 値集合ソースの設定はプロパティの右端をクリックすると クエリビルダが表示されます。クエリを作る要領ででき ます。設定後はそのまま閉じます。 閉じるときに設定の変更の保存をたずねるので「はい」 とし、フォームのデザインビューで保存ボタンを 押します。 また、このクエリビルダをSQLビューにして、No3のSQL文 を実際に合わせて訂正して貼り付けて、そのまま閉じ、 閉じるときに設定の変更の保存をたずねるので「はい」 とし、フォームのデザインビューで保存ボタンを 押します。
- piroin654
- ベストアンサー率75% (692/917)
もう一つ。 [都道府県]のコンボボックスの値集合ソースは、 SELECT T住所.都道府県 FROM T住所 GROUP BY T住所.都道府県; です。
- piroin654
- ベストアンサー率75% (692/917)
忘れ物がありました。 [都道府県]のコンボボックスの更新後処理で、 以下を設定してください。 コンボ0は[都道府県]のコンボボックスの名前です。 コンボ2は[市区町村]のコンボボックスの名前です。 実際に合わせて変更してください。 Private Sub コンボ0_BeforeUpdate(Cancel As Integer) Me!コンボ2.Requery End Sub
- piroin654
- ベストアンサー率75% (692/917)
テーブルの名前を「T住所」とします。 [市区町村]のコンボボックスの値集合ソースを 以下のように設定します。 「フォーム名」はフォームの名前です。 「コンボ名」は[都道府県]のコンボボックスの名前です。 実際に合わせて変更してください。 SELECT T住所.都道府県, T住所.市区町村 FROM T住所 WHERE (((T住所.都道府県)=[Forms]![フォーム名]![コンボ名])); [市区町村]のコンボボックスのプロパティで、 列数 2 列幅 0cm;2cm 連結列 1 のように設定してください。
お礼
piroin654さま、早速のお返事ありがとうございました。 ご教示のとおり入力してみましたが…できませんでした(泣) 都道府県のコンボボックスの値集合ソースは「GROUP BY~」を付け足した状態でいいのでしょうか? 「T住所」「都道府県」等には[ ]はいらないのですか? お忙しいところ教えてくださったのに、力不足で申し訳ありません。 もう少し、教えていただいたやり方で試してみます。 お時間を割いていただき、本当にありがとうございました。
お礼
最新のご回答にもうお礼をつけられなくなってしまったので、 こちらに改めてお礼を書かせていただきます。 piroin654さま、本当に本当にありがとうございました。 顔も知らない素人に辛抱強くおつきあいいただき、 一番心強かったのが「最後までつきあいます」のお言葉でした。 何度お礼を申し上げても足りません…本当にありがとうございました。 単純なる入力の間違いで何度もご面倒をおかけしたこと、 申し訳なく恥ずかしく思っております。 今までExcelのマクロも使ったことがなく イベントプロシジャも初めて書きましたが、 何度も教えていただき一つずつ書き込んでいるうちに なんとなく構文の意味が分かってきて、 もっとAccessを勉強したいと思うようになりました。 ここ1週間Accessなんて大嫌いだー!と思っていたのに(←逆恨み) piroin654さまのおかげです。 Access,おもしろいです。もっと勉強します。 短い(でも濃い!)時間でしたが、ありがとうございました! 心から感謝しています。本当にありがとうございました。