[リストへもどる]
一括表示

投稿時間:2003/10/29(Wed) 22:03
投稿者名:ぱく
Eメール:
URL :
タイトル:
Access風コンボボックス
始めまして。
質問内容
VB6.0でコンボボックスを使ってみたのですが
Accessにあるような カラム指定はできないのでしょうか?
Accessの場合IDを見えなくしつつ、必要な時にカラムを指定して
IDを取得できたのですが、VBではできないのでしょうか?

この投稿するまでは、配列を一つ用意してあげて
レコード数分ReDimして、コンボのIndex と 実際のセレクトしたIDを保存していって
IDが欲しくなった時にその配列から取得していたのですが・・。
他にも良いアイディアがあれば教えてください!

@SQLで 「鳥マスタ」から「IDと名称」をセレクトしてきました。
結果↓
ID 名称
01 ハト
02 キジ
03 スズメ
04 ハト

Aさっそくこの名称をコンボに登録しました。

+-------+--+
|ハト   |▼|
+-------+--+
|ハト   |
|キジ   |
|スズメ |
|ハト   |←選んだ
+-------+

おお、しっかり選ばれてる!できた〜と喜んでいたのですが、
利用者には「ハト」が見えたらいいので、OKなのですが
プログラム的にはハトの「ID」が欲しいのです
(この場合は 「04」)名称が重複可能な情報なので
名称から再セレクトする事は難しいです。

と、ざっくり経緯はこんな感じです。

投稿時間:2003/10/30(Thu) 00:36
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: Access風コンボボックス
> Accessにあるような カラム指定はできないのでしょうか?
残念ながら、そういう機能は用意されていません。

> Accessの場合IDを見えなくしつつ、必要な時にカラムを指定して
> IDを取得できたのですが、VBではできないのでしょうか?
一覧には名称を表示し、値としてはIDを取得したいという場合には、
『DataComboコントロール』を使うという方法があります。

また、IDが整数の場合には、標準ComboBoxの「ItemDataプロパティ」を使う事もできます。

Option Explicit

Private Sub Combo1_Click()
    MsgBox Combo1.ItemData(Combo1.ListIndex)
End Sub

Private Sub Form_Load()

    With Combo1
        .List(0) = "ハト"
        .ItemData(0) = 1

        .List(1) = "キジ"
        .ItemData(1) = 2

        .List(2) = "スズメ"
        .ItemData(2) = 3

        .List(3) = "ハト"
        .ItemData(3) = 4
    End With

End Sub


IDが整数以外(たとえば文字列)の場合にも対応させたいのであれば、
IDの一覧を配列かCollectionとして管理し、それらを
ComboBoxのListIndexにて管理するようにすれば OK でしょう。

投稿時間:2003/10/30(Thu) 01:00
投稿者名:ぱく
Eメール:
URL :
タイトル:
Re^2: Access風コンボボックス
なるほど!
ありがとうございます。早速試してみます!
重ねて質問になってしまいますが、
DataComboコントロール は DataListコントロールに入ってる奴でしょうか?