• ベストアンサー

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

  • ACCESSフォームのリストボックスでレコードが選択できない

    ACCESS2000です。 フォームの左側に親テーブルのフィールド1の値を選択させるリストボックスがあり、そこで選択したレコードにリンクする子テーブルのレコードをフォームの右側にサブフォームで表示させたいのですが、リストボックスでレコードを選択できません(クリックしても反転しません)。でもレコード移動ボタンを押すと、リストボックス内の該当レコードがちゃんと反転し、右側のサブフォームにも正しく反映します。 リストボックスのプロパティはくまなく見ましたがそれらしい設定項目はみつかりませんでした。どこを直せばよいのでしょうか。

  • Access コンボボックスの複数選択

    Access2007を勉強中の初心者です。 「空白のフォーム」から作成したコンボボックスで、複数選択が可能になるような設定はありませんか? テーブル項目の「ルックアップ」「複数の値を許可」を許したテーブルから作成したフォームでは、コンボボックスで複数の値を選択可能になりますが、「空白のフォーム」から作成した場合にはできないのでしょうか。 リストボックスではスペースをとってしまう為、コンボボックスで行いたいです。 言葉足らずな内容かもしれませんし、大変お手数をおかけしますが、よろしくお願いいたします。

  • ACCESSのリストボックス規定値について

    ACCESSのフォーム画面上にリストボックスを作成し、値集合ソースをクエリで抽出していますが、規定値を設定する方法がわかりません。 また、その場合の規定値を複数選択するにはどのようにすればいいのでしょうか?

  • Accessでリストボックス

    フォームに複数選択可能なリストボックスがあり、そこで選択されたレコードをコマンドボタンをクリックしたときにテーブルに書き込みたいのですがどうすればよいかわかりません。HELPにも、またいろいろな書籍にも載っていませんでした。 どうかお願いします。

  • ACCESSのリストボックス抽出について

    ACCESSにおいて、住所録テーブルを用意します。 フォーム上で県、市のリストボックスを作ります。 住所録テーブルには県と市のフィールドを作り、県名と市名を入力しておきます。クエリを用意し、リストボックスの県で例えば東京を指定するとそれに該当する市が抽出されて市のリストボックスから選択できるようにしたいのですがクエリ上では表示されるのですがリストボックスに反映されません。 どのようにすれば出来るのでしょうか。 (ちょうど教えて!gooで質問する際にカテゴリーの大分類から小分類を選択する時のようにです。)

  • リストボックス(複数選択しない)の場合の選択解除について

    こんにちは。現在ACCESS2000のフォームにリストボックスを配置し、 複数選択は「しない」に設定しています。 リストボックスの項目をどれか一つ選択するか全く選択しないことを 可能としたい(選択している値を再度クリックすると選択解除できるよう にしたい)のですが、うまくいきません。 何か方法がありましたら、ご教示願います。

  • リストボックスの複数選択について

    ACCESS2003を使っています。 入力用フォームにリストボックスを作って 複数選択するようプロパティで変更しました。 この情報をテーブル上に反映させることができません。 どうしたらいいのかお教えください。 具体的には 入力用フォームに りんご(*) みかん かき(*) スイカ   (*)印は黒反転 この状態で入力するとテーブル上に りんご かき というように表示するようにしたいのです。

  • [Access2013]リストボックスの値指定

    以下の様な事をしたいと思っていますが上手く行きません。 上手くいく方法はありますでしょうか? テーブル1 id 名称 →列名 1 みかん 2 りんご 30 トマト 上記の様なテーブルがありそれをフォーム上に配置したリストボックス(複数選択可)の値集合ソースにしています。 リストボックスから入力した値は、みかんのみを選択した場合は「1」、みかんとりんごを選択した場合は「1;2」とDBに保存しています。 (この部分は想定通りの動きをしています。) 入力用フォーム以外に、別フォームのデータシートビューで一覧表示をしています。 そこで上記リストボックス値でDBに入っている「1」や「1;2」を「みかん」や「みかん;りんご」と表示したいと思っています。 データシートビューにもリストボックスを配置し、値集合ソースは入力フォームと同じテーブル1に、コントロールソースを「1;2」が入っているフィールドにしましたが、「1」のみの場合は選択状態で表示されますが、「1;2」の場合未選択になってしまいます。 やりたいことは、ここで入力をするつもりはありませんのでただ文字列として「みかん;りんご」が出てくればいいです。 ただ、一々フォームロードなどでSQL文(+ループ処理)を書くと件数が数万件は少なくともあるのでロード時の待ちが長くなりそうです。 また、リンクテーブルマネージャで外部DBと接続しているので、テーブル定義をAccess独特のものに変更するのは難しいです。 idは自然増加に任せており桁数はまちまち、複数選択の個数も1~数十と様々です。 質問内容 ・リストボックスのコントロールソースにて複数値を指定する方法はありますか?(そもそもとして、そういうことが出来ないものなのでしょうか? また,区切りに変更、splitで配列化等はすでに行って駄目でした。) ・処理時間に影響が少ない方法で「みかん;りんご」とデータシートビューに表示する方法はありますでしょうか? ・例えばリストボックスを使用せずテキストボックス等に変更してコントロールソースでselect 名称 from テーブル1 where id in Replace("1;2",";",",")の様な事をした結果複数件出た場合は区切り文字で区切って全部出す等を可能なのでしょうか? よろしくお願いいたします。

  • MS Access フォームでの入力方法につい

    Microsoft Accessでフォームでの入力方法について教えてください。 本の管理データベースを作成しております。 書籍の情報をデータベースに入力するフォームを作っておりますが、テーブルの項目を入力する際の方法を、直接入力とリストから選択する方法を両方できるようにはできないでしょうか。 例えば、「発行書店」を入力するときに、テキストボックスに直接入力してもOK、別テーブルに書店の一覧を作っておいて、そのリストをコンボリストに表示させ、クリック選択するとテキストボックスに入るような形でもOKのようにしたいのです。 コンボボックスでリストから選ぶだけでなく、ボックス内に直接入力してもテーブルに反映できるようにできれば話が早いのですが、デザインビューのプロパティで入力チェックを「いいえ」にしてもエラーが出て設定できないので・・・。 無知で申し訳ありませんが、どうかご教示ください。

  • アクセスのリストボックスの複数選択

    リストボックスの設定方法を教えてください。 1画面目にテーブルと連結したリストボックスがあります。 複数選択した情報をSelectedプロパティで取得しています。 次画面にて同じテーブルに連結されているリストボックスを 1画面目と同じ様に選択されている状態にしたいのですが、 方法がわかりません。 選択されている内容だけをリストボックスに表示する方法は 見つけたのですが、同じ状態で選択される方法がわかりません。 ご回答、宜しくお願いします。

専門家に質問してみよう