アプリ版:「スタンプのみでお礼する」機能のリリースについて

開発言語:Visual Basic 2008

現在、コンボボックスをフォーム上に作成し、そのコンボボックスにテーブルから取得した項目を表示させ、
選択させるような事を考えています。

その際に、コンボボックスに表示する内容として、例えば2つの列、

 コード、内容
 001、北海道
 002、青森

というように、コード、内容という2つの項目が存在し、内容だけでなく、コードも同時に表示させる事を検討しています。

インターネット等で検索した際に、そもそも2つの項目を1つのコンボボックスに表示させる事は難しく、仮に表示させたい
項目がテーブルに存在するのであれば、SQLで対応すればとの事が記載があった為に、以下のように対応しました。

《内容》

'SQL文作成
Select_SQL = "select 案件コード,案件名, CONCAT(CONCAT(案件コード,' :'),案件名) as fullname from T_案件"

'SQL文と接続情報を指定し、MySQLコマンドを作成
da = New MySqlDataAdapter(Select_SQL, Connection)

'DataAdapterを指定し、自動的に更新コマンドを生成するコマンドビルダーを作成
cb = New MySqlCommandBuilder(da)


'データセットの中に案件マスタ_Tというテーブルを作成し、そこへ格納する。
da.Fill(ds, "案件マスタ_T")


'コンボボックスに案件マスタ_Tを連結する
CMB_2.DataSource = ds.Tables("案件マスタ_T")
'コンボボックスに結合項目名を表示する
CMB_2.DisplayMember = "fullname"
'案件コードをSelectdValueで取得する
CMB_2.ValueMember = "案件名"

但し、この場合、仮にコードが3桁でなく2桁のものが混在してしまった場合、プルダウンの
表示としてガタガタな形(内容の表示が綺麗に左でそろわない)となってしまいます。

そこで、別の方法で、何かコンボボックスに複数列表示させ、なおかつ、項目の列幅が整列
するような方法はないでしょうか。。。

教えて下さい。

A 回答 (1件)

最近 Oracle しかやってないのですぐには出てきませんが、


SQLServer 系は CONVERT LEN RIGHT とかかな?
文字列編集用の関数を組み合わせるだけでしょう。

> そもそも2つの項目を1つのコンボボックスに表示させる事は難しく、
1つの文字列として処理すれば、そうでもないけど?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  With Me.ComboBox1
    .Items.Add(New MyComboItem(1, "北海道"))
    .Items.Add(New MyComboItem(12, "青森"))
  End With
End Sub

Private Class MyComboItem
  Private _Code As Integer
  Private _Naiyou As String
  Private Sub New()
  End Sub
  Public Sub New(ByVal Code As Integer, ByVal Naiyou As String)
    Me._Code = Code
    Me._Naiyou = Naiyou
  End Sub
  Public Overrides Function ToString() As String
    Return Me._Code.ToString("0000") & ", " & Me._Naiyou
  End Function
End Class
    • good
    • 0
この回答へのお礼

ありがとうございました。

とても参考になりました!

お礼日時:2011/11/18 09:00

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

このQ&Aを見た人はこんなQ&Aも見ています