• ベストアンサー

リストボックスで複数データを選択、入力(Access97)

Access97で初めて入力フォーム作成にチャレンジしています。 リストボックスやコンボボックスで複数データを選択し、1つのフィールドに入力したいのですが、可能でしょうか? よろしくご教示ください。 例:”趣味”というフィールドに   リストからの選択で   ”読書,映画,テニス”のように入力したい。   (カンマ区切り、スペース区切り、区切りなし   など何でも結構です。)   *ベストはカンマ区切り。  

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

  • ベストアンサー
  • Nii
  • ベストアンサー率48% (79/162)
回答No.4

>OKボタンか何か作成して、そこでまとめて設定をするのが >正しいのでしょうか このHPの左にあるラジオボタンもそうですが、そこをクリックしただけでは、次に進みませんよね? 最終に、[回答する]をクリックした時に、次に進む。 これと同じようなイメージで説明してました。 >項目がある程度あるならば、配列的に名前をつけて この部分をモジュールに書いてみました。 フォーム上には10個のチェックボックスがあるとします。  □ 趣味1  □ 趣味2    ・    ・  □ 趣味10 □のチェックボックスの名前はチェック0から9と入力してあります。 「趣味1から10」はラベルで、標題に入力した値が表示されています。名前は、ラベル0から9と入力しています。 Private Sub コマンドボタン_Click() Dim Cnt As Integer Dim FLG As Integer Dim 趣味 As String FLG = 0 趣味 = "ありません!" For Cnt = 0 To 9 If Me("チェック" & Cnt) Then If FLG = 1 Then 趣味 = 趣味 & "," Else 趣味 = "" End If 趣味 = 趣味 & Me("ラベル" & Cnt).Caption FLG = 1 End If Next Cnt MsgBox ("あなたの趣味は " & 趣味 & " です") End Sub 実際には、最後のMsgboxがレコード等に格納する命令に置き換わる事になると思います。 只、入力はこれでいいと思いますが、実際に格納されたデータを表示するのはちょっと・・・って思う所はあるのですが、要望がカンマ区切りで1つのフィールドに格納したいってことでしたので。

ikurakun
質問者

お礼

Niiさん、本当にありがとうございました。丁寧な回答をいただいたので、初心者の私にもなんとかできました。 理解するまで、ずいぶん時間がかかってしまい、 お礼が遅くなりました。 サンプルまで作って頂いてカンゲキ☆☆でした。 ありがとうございました。m(_ _)m

その他の回答 (3)

  • Nii
  • ベストアンサー率48% (79/162)
回答No.3

リストボックスからの複数選択については、何らかの書籍に載っていたような気がずっとしていたので、調べてみたら、Access97のサンプルデータベースの設計支援データベース(私の環境ではC:\Program Files\Microsoft Office\Office\Samples\Solutions.mdbにありました。標準セットアップでセットされなかったはずなので、該当ファイルが無い場合は追加セットアップを行って下さい。)の中の[コンボ ボックス、リスト ボックス、サブフォーム、サブレポートを最大限に活用する。] → [オプション グループで選択された値を基に一覧の内容を限定する。]というのがありました。 只、初めて入力フォームを作成されるようなので、かなり敷居が高くなってしまうような気がします。

  • Nii
  • ベストアンサー率48% (79/162)
回答No.2

すみません、説明不足でした。 まず、予想される回答数のチェックボックスとその他用にテキストボックスをを用意します。 でもって、書き込み等のイベントでそれらの値をチェックし、Yesの時は、趣味のフィールドにその値を連結してゆけばいいのではないのかと思っていました。 Dim 趣味 As String If Me.読書 Then 趣味 = 趣味 & "読書" End If てな具合に 項目がある程度あるならば、配列的に名前をつけて、ラベルの表題を格納する等工夫の余地はありますが。 あと、サブフォームを使えば、リストボックスに近いものが作成出来ると思いますが。(Yes/No型・テキスト型で該当する項目にチェックをいれてもらう)

ikurakun
質問者

補足

Niiさん、ありがとうございます。 イベントって?プロージャって??というレベルでしたので、ゆっくり考えてました。 で、次のようにチェックボックスに設定してみましたが、 これだとクリックする毎にデータが増えてしまう・・ OKボタンか何か作成して、そこでまとめて設定をするのが 正しいのでしょうか? Private Sub チェックB_Click() If Me!チェックB = -1 Then 趣味 = 趣味 & "読書" End If End Sub ちなみに、 >項目がある程度あるならば、配列的に名前をつけて、ラ>ベルの表題を格納する等工夫の余地はありますが この部分は、理解できてません。 スミマセン。

  • Nii
  • ベストアンサー率48% (79/162)
回答No.1

通常、リストボックス・コンボボックスは、その中からの1つを選択してもらう時に使用しません? いくつかの選択肢の中から、複数個こ選んでもらう場合でしたら、チェックボックス等を考えられたほうが、良いような気がします。 どうしてもということでしたら、リストボックスとは別に、テキストボックスを作成し、リストから選択された内容を、テキストボックスにカンマ区切りで代入してゆく。 こんな方法しか思いつきませんが、この場合、最終的には入力内容のチェックが必要になってくるので、個人的にはやりたくないですね。

ikurakun
質問者

補足

Niiさん、ありがとうございます。 テキストボックスに入れる方法は、避けたいです。 チェックボックスは、yes/no型のデータをセットするもの と考えていましたが、、、オプショングループのチェックボックスを使用してみましたが、1つしか選択ができませんでした・・

関連するQ&A