• ベストアンサー

コンボボックス

お世話になっております 既存のデータベースから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