• ベストアンサー

Access97のフォーム(リストボックス)について

Access97のフォームについてです。リストボックスで複数選択設定した場合,その選択項目をテーブルに反映させる方法を教えて下さい。

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

  • ベストアンサー
  • tepapapa
  • ベストアンサー率23% (7/30)
回答No.2

以下のような方法はどうでしょうか? フォーム「F_都道府県」と選択したデータを一時的に 格納するワークテーブル「W_選択都道府県」をまず用意。 ※(都道府県のデータがあるテーブルとワークテーブル   にはそれぞれ都道府県番号と都道府県名という   項目があるものとする) 「F_都道府県」の中にデータの複数選択が可能な リストボックス「選択」とコマンドボタン「実行」を 貼り付ける。 「実行_Click」に以下のような記述をする。 ------ Dim frm As Form    'F_都道府県 Dim ctl As Control   'リストボックス Dim varItm As Variant  '選択したデータ Dim rec As Variant    'ワークテーブル Set frm = Forms!F_都道府県 Set ctl = frm!選択 Set rec = CurrentDb.Openrecordset("W_選択都道府県")   '選択したデータのインデックス番号を   'ワークテーブルに格納する For Each varItm In ctl.ItemsSelected rec.AddNew rec!都道府県番号 = Val(ctl.ItemData(varItm)) rec.Update Next varItm   'ワークテーブル内の都道府県番号と一致する   '番号を持つデータを抽出するクエリを実行する DoCmd.OpenQuery "クエリ1" ----- ちょっとごちゃごちゃとしてしまいましたが、これで 一応リストボックスで選択した複数の都道府県データを 最終的にクエリーで表示することが出来ます。 ただ、これはワークテーブルを使わなければならないので 一回ずつワークテーブルのデータを初期化する処理なども 必要になるのが難点です。 最後に実行するクエリーの条件として直接選択したデータ の情報が渡せれば一番スマートなんでしょうけど・・・ その方法はちょっとわかりませんでした。 どなたか分かる方、よろしくお願いします。

fuyuko
質問者

お礼

プログラムまで付けて頂いてありがとうございました。 皆様のご回答を参考にプログラミングさせていただきます。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • tosihiko
  • ベストアンサー率10% (1/10)
回答No.4

僕も同じようなことで悩んだ者です。 VBAを使うのは普段エクセルで精一杯の僕などには小難しすぎるので、色々試行錯誤した結果が以下のとおりです。 まず、「顧客リスト」と「都道府県」というテーブルがあるとして、顧客リストと複数の都道府県を関連させたいとしますよね。 ここでもう1つ「テーブル1」を作り、その中に「顧客リストID」「都道府県ID」というフィールドを作成し(テーブル1の主キーもオートナンバー型で作成しとく)、それぞれの主キーとリレーションをはるんです。 つまり、2つのテーブルの間にもう1つテーブルをはさむんです。 そして「顧客リスト」のフォームに、「テーブル1」のサブフォームを挿入したら、複数の都道府県が選択できて、テーブルには反映されませんが、クエリ等で活用する事ができるようになります。 いやしかし、文字で説明するのは難しいですね(^^ゞ

fuyuko
質問者

お礼

私もVBAは全くの素人でして・…今回に限ってはもうVBA以外の手段は無いであろうと思ってました。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

あー、はいはい。選択項目を一旦ワークテーブルに落として、リレーションを使ってデータを絞り込みたいと。 私もしばらく考えてみたんですが、tepapapaさんの#2のご回答でバッチリだと思います。 >最後に実行するクエリーの条件として直接選択したデータ >の情報が渡せれば一番スマートなんでしょうけど・・・ これについても少し考えてみたんですが、私の知識の範囲+10分程度の試行錯誤では見つけることが出来ませんでした。 クエリ使わずに、VBA中でSQL組み立てる方式なら、可能なんですけどねぇ。(もし私が作るなら、多分そうする…)

fuyuko
質問者

お礼

グラフの件に引き続きご回答ありがとうございました。 ARCさんからのご指摘のお陰で複数の回答が頂けました。 ARCさんはAccessにかなりお詳しい様で心強い限りです。 本当にありがとうございました。

すると、全ての回答が全文表示されます。
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

fuyukoさん、こんにちは。 「その選択項目をテーブルに反映させる」について、も少し詳しく、どのようなことがなさりたいのかを教えていただけますでしょうか? この文だと、あまりにあいまいすぎて(^^;;

fuyuko
質問者

補足

お返事ありがとうございます。 確かに曖昧ですね。 「選択した複数の項目(都道府県名)をテーブルに落とす手段」 これでお分かり頂けますでしょうか? 最終的には,リストボックスで選んだ項目(複数)を元にデータを抽出させたいのです。(クエリーにて) ですので,テーブルを使用せずに済む方法があるのでしたら,それでも良いのです。 宜しくお願いします。  

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう