電子書籍の厳選無料作品が豊富!

お世話になっております
既存のデータベースからaccessを使って検索を行っている者です

表示させるテーブルの中でひとつだけ
5パターンの文字列が入力されているフィールドがあります

それをフォームで表示する際にコンボボックスで表示させたいのですが
どのようにすればよいのでしょうか?

コンボボックスを作るときフィールドを割り当てると
同じ入力内容も全て表示されてしまってものすごい量になってしまいます

これを5種類のいずれかを選択させる形で表示させたいです

あと、入力されている内容とは別のものを表示したいのです
たとえば

フィールドの内容は
G1,G2,G3,G4,G5
だとして
G1だったら「印刷」
G2だったら「表示」
というような表示をさせたいと思っています

ご存知の方よろしくお願いいたします

A 回答 (4件)

>フィールドの内容は


>G1,G2,G3,G4,G5
>だとして
>G1だったら「印刷」
>G2だったら「表示」
これだけだったら

F1 F2
---------
G1 印刷
G2 表示
G3 ・
G4 ・
G5 ・
というテーブルを作って
コンボのソースにするだけですが

連結列をF1
表示幅はF1:0、F2:適当に
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/07 10:22

> 同じ入力内容も全て表示されてしまってものすごい量になってしまいます


これは、コンボボックスのソースにデータの入ったテーブルそのものを使っているからです。
コンボボックスのコントロール・ソースにG1からG5を指定するか、
別にG1からG5のレコードが入ったテーブルを作成し、これをソースとすれば良いです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/07 10:23

読みにくいので・・・。



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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/07 10:20

質問内容自体は、明瞭であって問題はないと思います。


が、解決の方向性の選択に悩みます。
そこで、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の方法いずれも半ば成功したようなものです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!