• ベストアンサー

コンボボックス

お世話になっております 既存のデータベースからaccessを使って検索を行っている者です 表示させるテーブルの中でひとつだけ 5パターンの文字列が入力されているフィールドがあります それをフォームで表示する際にコンボボックスで表示させたいのですが どのようにすればよいのでしょうか? コンボボックスを作るときフィールドを割り当てると 同じ入力内容も全て表示されてしまってものすごい量になってしまいます これを5種類のいずれかを選択させる形で表示させたいです あと、入力されている内容とは別のものを表示したいのです たとえば フィールドの内容は G1,G2,G3,G4,G5 だとして G1だったら「印刷」 G2だったら「表示」 というような表示をさせたいと思っています ご存知の方よろしくお願いいたします

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>フィールドの内容は >G1,G2,G3,G4,G5 >だとして >G1だったら「印刷」 >G2だったら「表示」 これだけだったら F1 F2 --------- G1 印刷 G2 表示 G3 ・ G4 ・ G5 ・ というテーブルを作って コンボのソースにするだけですが 連結列をF1 表示幅はF1:0、F2:適当に

kome14
質問者

お礼

ありがとうございました、 この方法で正常に表示させることが出来ました!

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

その他の回答 (3)

noname#79209
noname#79209
回答No.4

> 同じ入力内容も全て表示されてしまってものすごい量になってしまいます これは、コンボボックスのソースにデータの入ったテーブルそのものを使っているからです。 コンボボックスのコントロール・ソースにG1からG5を指定するか、 別にG1からG5のレコードが入ったテーブルを作成し、これをソースとすれば良いです。

kome14
質問者

お礼

テーブルを作って正常に表示できました ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.2

読みにくいので・・・。 Public Function DBSelect(ByVal strQuerySQL As String) As String On Error GoTo Err_DBSelect   Dim I    As Integer   Dim J    As Integer   Dim N    As Integer   Dim rst   As ADODB.Recordset   Dim fld   As ADODB.Field   Dim strList As String      Set rst = New ADODB.Recordset   ' =================   ' Begin With: rst   ' -----------------   With rst      .Open strQuerySQL, _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then       N = .RecordCount - 1       .MoveFirst       For I = 0 To N         For Each fld In .Fields           strList = strList & Nz(fld.Value, "") & ";"         Next fld         .MoveNext       Next I      Else       strList = ""      End If   End With   ' ---------------   ' End With: rst   ' =============== Exit_DBSelect: On Error Resume Next   rst.Close   Set rst = Nothing   DBSelect = strList   Exit Function Err_DBSelect:   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"   Resume Exit_DBSelect End Function

kome14
質問者

お礼

ありがとうございます でも自分には難しくて理解できませんでした・・・

全文を見る
すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.1

質問内容自体は、明瞭であって問題はないと思います。 が、解決の方向性の選択に悩みます。 そこで、2つの方向性を示します。 1、フォームのロード時にコンボボックスの値をセットする。 G1;印刷;G2;表示;G3;XXX という具合です。 2、フィールドの翻訳テーブルを用意して一気にコンボボックスの値をセットする。 G1;印刷; G2;表示 ・・・ G5;XXXX という翻訳テーブルを持つということです。 <DBSelect関数 の案内> さて、急遽、DBSelect関数を作ってみました。 コード自体は、読めば判る簡単なものです。 次のように、セミコロン(;)で区切ってSQL分の実行結果を戻すのでコンボボックスの値設定に利用できます。 [イミディエイト] ? DBSelect("SELECT DISTINCT FIELD_1 FROM TEST") G1;G2;G3;G4;G5; Public Function DBSelect(ByVal strQuerySQL As String) As String On Error GoTo Err_DBSelect Dim I As Integer Dim J As Integer Dim N As Integer Dim rst As ADODB.Recordset Dim fld As ADODB.Field Dim strList As String Set rst = New ADODB.Recordset ' ================= ' Begin With: rst ' ----------------- With rst .Open strQuerySQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then N = .RecordCount - 1 .MoveFirst For I = 0 To N For Each fld In .Fields strList = strList & Nz(fld.Value, "") & ";" Next fld .MoveNext Next I Else strList = "" End If End With ' --------------- ' End With: rst ' =============== Exit_DBSelect: On Error Resume Next rst.Close Set rst = Nothing DBSelect = strList Exit Function Err_DBSelect: MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & Err.Description & Chr$(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_DBSelect End Function さて、ここまでくれば、DBSelect関数のSQL文さえ書ければ1、2の方法いずれも半ば成功したようなものです。

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

関連するQ&A

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

  • Access コンボボックスについて

    やり方がわからないので教えてください。 Access2003を使っているのですが、フォーム上に設定したコンボボックスから、あるテーブルの3列目を抽出したいのですが、どのように設定するのか分かりません… 自動的に1列目が抽出されてしまいます。 コンボボックスのプロパティの中に何列目かを指定する部分が内容に思うのですが…

  • accessでコンボボックスの内容を変える方法を教えて下さい。

    accessのフォームにてデータ入力画面を作成しています。 フィールド入力にコンボボックスを用いてリスト選択にしたいのですが、リストの量が膨大になってしまう為、その前のフィールド値によってリスト用テーブルを切り換えて使いたいと思っています。簡単に出来る方法があれば教えて下さい。

  • ACCESS97のコンボボックスについて

    入社して、名刺を貰う機会が多い為、名刺を管理するものを初歩的な参考書を見てACCESS97で作りたいと思います。テーブルで数名の氏名・会社名・部署名・役職・住所を作りました。良く分からなかったので、この1つのテーブルを基にパラメータを使って検索する「検索用画面」と新しいレコードが表示される「新規入力画面」をクエリーとフォームを別々に作りました。検索用画面は、これで良しとします。しかし、新規入力画面は、同会社名が多いので、コンボボックスを作り今まで登録したものからも選べる様にもしたいです。新しいレコードでは、表示されませんが、▼で前のレコード(既に入力してあるデータ)に戻ると、エラーメッセージで「このフィールドに入力した値が不正です。例えば、数値型のフィールドに文字列を入力しました。」と出てきてしまいます。コンボボックスいうのは、コンボボックスウィザードで「テーブルまたはクエリーを表示する」を選び、表示させたいものを選ぶだけでは、いけないのでしょうか・・。くだらない質問で申し訳ありませんが、回答の方宜しくお願いします。

  • ウィザードでコンボボックスを作るとき

    フォームの中にウィザードで、コンボボックスを作っているのですが、意味がわからないところがあります。 テーブルの中の1つのフィールドをコンボボックスにしたい時、ウィザード画面の3つめあたりで表示させたいフィールドを選択しています。 次の画面で、必ず「キー列を表示しない」というチェックボックスがでてきます。「キー列」って「主キー」のことですよね?主キーは表示したくないので、チェックを付けたままにしています。。。考え方はあっているのでしょうか?よく理解してないまま操作してて。 初心者すぎて、質問内容すらうまくまとめられず、すいません!!どなたかご回答よろしくおねがいします!!

  • コンボボックスを使った入力の改善

    コンボボックスを使った入力を全てのデータベースで利用しています。しかし、各コンボボックスがそれぞれ独立「単体動作」しているので、コンボボックスの初段目「最初」はレコード数が少ないのですが、2段目3段目になると選択候補が累積表示されるので、候補の数も多くなり使いづらさを感じるデータベースも増えました。この状況を改善したいと思っていますので、宜しくお願いします。尚、データベースで設定しているコンボボックス全てに言えることでもありますので、以下のケースを紹介させていただきますので、アドバイスをお願いしたいと思います。 [現状でのやり方] コンボボックス参照オブジェクトは以下の構成にて、コンボボックスは独立していて連動していません。なお、参照データの追加作業は別途作成したフォームを、データ入力フォームに配したコマンドボタンで開いて行っています。 [コンボボックス関連オブジェクト(例)] コンボボックス名:都道府県(値集合ソースで都道府県のみ選択) テーブル名:都道府県テーブル フィールド名:ID、都道府県 フォーム名(参照データ追加):都道府県追加フォーム ※「新規追加後の入力フォームへの即反映はアドバイスにより完結済」 コンボボックス名:市町村(値集合ソースで市町村のみ選択) テーブル名:市町村 フィールド名:ID、市町村 フォーム名(参照データ追加):市町村追加フォーム ※「新規追加後の入力フォームへの即反映はアドバイスにより完結済」 [改善させたいこと] コンボボックス「都道府県」で東京都を選択したとき、次のコンボボックス「市町村」では東京都の市町村だけが次の候補として表示させたいと思っています。又、現在は蓄積データの絞り込み検索で設定していますが、選択コンボボックスの次のコンボボックスを自動プルダウンさせ、候補も同時に表示させ入力できればと考えています。 以上ですが、宜しくお願いします。

  • チェックボックス access2003

    既存のデータベースからaccessを使って検索を行っています 表示させるテーブルの中でひとつだけ 0と1どちらかが入力されているフィールドがあります それをフォームで表示する際にチェックボックスで表示させたいのですが どのようにすればよいのでしょうか? ご存知の方よろしくお願いいたします

  • フォームのコンボボックスのチェンジイベントがエラー

    フォームのコンボボックスのチェンジイベントがエラーになってしまいます フォームのコンボボックスで値が変更するたびに コンボックスのリストを絞り込むようにしたいので フィールド1 1111 1112 1113 1211 1212 フォーム1を作成しコンボボックスを設置し 値集合ソースを SELECT テーブル1.フィールド1 FROM テーブル1 WHERE (((テーブル1.フィールド1) Like "*" & [テーブル1]![フィールド1] & "*")); として コンボボックスの変更時イベントに Private Sub コンボ0_Change() Form_フォーム1.コンボ0.Requery End Sub としました。 そしてこのコンボボックスに 「2」というように値を入力すると 「実行時エラー '2118' "Requery/再クエリ"アクションを実行する前に、カレンとフィールドを保存する必要があります。」 となってしまいます。 やりたいことは コンボボックスに「2」を入力すれば テーブル1の「2」が含まれるものが抽出され 1112 1211 1212 がコンボボックスの ▼マークをクリックした後のリストに表示されるようにしたいのですが どうすればいいでしょうか? よろしくお願いします。

  • 【Access97】コンボボックスの限定リストアップについて

    フォームから入力して伝票(レポート)を発行するという単純なAccessを作成しました。 コンボボックス用として[営業所]と[内容]というテーブルを別々に作成し、フォームでそれぞれのテーブルをコンボボックスとして設定しました。 <Accessテーブル> [営業所] 東京/大阪/名古屋 [内容] ガス料金(東京)/水道料金(名古屋)/電気料金(大阪) ・・・等 15件程 [一覧] 入力用のフォームからここにデータを追加 ※[営業所][内容]の他に日付などのフィールドが多数あり <Access入力用フォーム> ※他フィールドあり [発行日]・・・テーブル[一覧]で既定値「=Date()」設定済 [営業所]・・・コンボボックス [内容]・・・コンボボックス [金額]・・・直接入力 現状は当然ながら両方とも全件表示されますが、理想としては[営業所]を選択したら[内容]はその営業所の分のみが表示されるという形にしたいのです。 例えば、Excelでしたら以下のように設定するかと思います。 ・A1=[営業所] ・B1=[内容] ・C1:C3=東京/大阪/名古屋 ・D列=ガス料金(東京)/水道料金(東京)/電気料金(東京)/電話料金(東京) ・・・等 5件以内 ・E列=ガス料金(東京)/電気料金(大阪)/電話料金(大阪) ・・・等 5件以内 ・F列=水道料金(名古屋)/電気料金(名古屋)/保険料(名古屋) ・・・等 5件以内 (1)D列に"東京"、E列に"大阪"、E列に"名古屋"と名前定義 (2)A1に入力規制でC1:C3のリスト設定 (3)B1に入力規制で「=INDIRECT($A1)」設定 <結果> A1で"東京"を選択したらB1にはD列のみ表示 このB1のようなリスト表示をAccessのフォーム上で再現するには、どのように設定すればよろしいのでしょうか? とりあえずはコンボボックス用のテーブルを1つにまとめる必要があるとは思います。 過去にも同じような質問が多々あり、いくつか拝見しましたがさっぱり分かりませんでした。  例えばこれ→ http://personal.okwave.jp/qa1413361.html 当方はこれが理解できないくらいのド素人です。

  • Access コンボボックスの絞り込み後の表示

    Access2002を使用しております。 コンボボックスAに連動したデータを絞り込みさせるコンボボックスBがありますが、一旦入力後は、コンボボックスAの値にかかわらずコンボボックスBに入力したデータを表示させるにはどうしたらよいでしょうか? 例として、次の3つのテーブルを基にデータベースを作成しております: メインテーブル フィールド名: ID 社名 担当者 社名テーブル ID   社名   住所 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    A社 2    B社  担当者テーブル ID   社名ID   担当者名  電話番号 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    1      木村 2    2      佐藤 3    1      田中 4    2      斎藤 メインテーブルを基にしてフォームを作成し、 「メイン」というフォーム名にして 「社名」「担当者」をフィールドのコントロールをコンボボックスに変更しました。 「社名」フィールドの値集合ソースを「社名テーブル」から引き出し SELECT [社名テーブル].ID, [社名テーブル].社名 FROM 社名テーブル; 列数2  で設定し、社名をコンボボックスで選択できるようにしました。 そして 「担当者」フィールドの値集合ソースを「担当者テーブル」から引き出し SELECT 担当者テーブル.ID, 担当者テーブル.担当者名, 担当者テーブル.社名 FROM 担当者テーブル WHERE (((担当者テーブル.社名)=forms!メイン.社名)); で設定しました。 「社名」フィールドの「更新後処理」で Private Sub 社名_AfterUpdate()     Me!担当者.Requery End Sub を設定しました。 「メイン」フォームをフォームビューで開き、「社名」コンボボックスで「A社」を選択すると 「担当者」コンボボックスで「木村」と「田中」が表示されるので、「木村」を選択します。 次のレコードに移り、「社名」コンボボックスで「B社」を選択すると 「担当者」コンボボックスで「佐藤」「斎藤」が表示されるので、「佐藤」を選択します。 さて、「佐藤」を入力した時点で、前のレコード(「A社」「木村」を選択)に戻ると 「担当者」欄が空欄で表示されます。 メインテーブルには全てデータは入力されています。 データ入力時は「担当者」コンボボックスは「社名」コンボボックスで選択した値に連動させたいのですが、 このようにデータ入力済みの場合は 最初のコンボボックスの値にかかわらず(この場合は直近に選択した社名がA社・B社のいずれかであろうとも) 入力済みのデータ(「木村」「佐藤」)がフォームに表示されるようにしたいのですが 何か良い方法はないでしょうか? 出来れば入力専用と読み取り専用のフォームを2つ使用するのではなく、1つのフォームで事足りればありがたいのですが・・・