- 締切済み
Access2000のフォームに関する悩み
アクセス2000で以下のようなデーターベースの構築に悩んでいます。 『各人がいつどの街へ行ったかを記録するデータベース』です。 ・登録テーブル(登録ID、登録者、登録日) ・行先テーブル(行先ID、登録ID、都道府県、市町村、日時) というようなテーブルを作成し、登録テーブルと行先テーブルをリレーションシップで結びます。 登録テーブルを元にした登録フォームを作成し、行先テーブルを元に表形式の行先フォームを作成し、行先フォームを登録フォームのサブフォームとして組み込みます。 尚、都道府県と市町村の入力は各マスタテーブルを作成し、コンボボックスから選択させ、クエリを使って都道府県から市町村の絞込みを実施させます。 ここで、今回の悩みですが、以下の(1)(2)を至急解決しなければならないことです。 (1)データを入力していくと市町村の絞込みができない(表示されないとか前のデータが表示される) (2)テーブルにはデータが入力されているが、フォーム上では空欄になってしまう。 (1)は行先フォーム上では解決できております。 (2)については私の腕ではなすすべもなく途方に暮れている状態です。 どなたか、助けて下さい。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mshr1962
- ベストアンサー率39% (7417/18945)
#1のmshr1962です。 コンボボックス1つ目を作成、都道府県マスタを選択 「都道府県ID」をキーにして「都道府県」を表示 名前を「都道府県」に変更 コンボボックス2つ目を作成、市町村マスタを選択 「市町村ID」をキーにして「市町村」を表示 名前を「市町村」に変更 「都道府県」コンボボックスの更新後イベントを [イベント プロシージャ]にして[・・・]をクリック Private Sub 都道府県_AfterUpdate() Me.市町村.RowSource = "SELECT 市町村ID,市町村 FROM" & _ " 市町村マスタ WHERE 都道府県ID = " & Me.都道府県 & _ " ORDER BY 市町村ID" Me.市町村 = Me.市町村.ItemData(0) End Sub を貼り付けてください。 微調整が必要かもしれませんのでだめな場合は御一報ください。
- mshr1962
- ベストアンサー率39% (7417/18945)
(1)下記の様にすればいいのでは? 初めに都道府県を選択するコンボボックスを作成 次に該当する都道府県の市町村を選択するコンボボックスの作成 詳細は下記URLをご覧ください。【同じフォームにある 2 つのコンボ ボックスの同期をとる方法】 http://support.microsoft.com/default.aspx?scid=kb;ja;289670&Product=accJPN 分からなければ追加の質問をしてください。 (2)入力は行先テーブルなのですから 登録フォームは行先テーブルを元に作ってください。 もし先に登録者を確定したい場合は 登録テーブルを元にしたフォームと 行先テーブルを元にしたフォームを作り 前者から後者を呼び出す方式か? 後者をサブフォームとして利用する形になります。
補足
アドバイスありがとうございました。 (1)で教えて頂いたURLを参考にいろいろやってみたのですが、「コード」に何が書かれているのかがわかりません。都道府県マスタには都道府県IDと都道府県というフィールド、市町村マスタには、市町村ID、都道府県ID、市町村というフィールドを作成しております。これを使ってURLのようなコードを作成してもらえないでしょうか? あまりにずうずうしいお願いで申し訳ないです。
お礼
その後、いろいろと調べた結果、MSの答えてねっとから解決の糸口を掴み、なんとかなりそうな状況になってきました。親切に回答して頂き大変感謝しております。ありがとうございました。
補足
お答え頂き、大変感謝しております。 作成して頂いたコードを試したところ、「実行時エラー'-2147352567(80020009)':このフィールドに入力した値が不正です」というエラーメッセージが表示され、デバックすると「Me.市町村 = Me.市町村.ItemData(0)」が黄色く塗りつぶされており、これを削除すると、問題なく動きました。これは何を意味しているのでしょうか? 次に、フォーム上の話ですが、クエリーを使って実施した時と同じように、最後に抽出作業をした市町村しか表示されません。(北海道で札幌を選択したら、都道府県に北海道を選択したものだけ市町村が表示され、他の都道府県に付随した市町村は空欄(のように)になっている)元のテーブルにはデータが入っているのですが・・・。最初に回答して頂いた(2)の方法を試しましたが、結果は同じです。 わがままなお願いばかりで申訳ありません。どうぞよろしくお願いします。