- PR -

comboBoxにSQLの結果を二つ以上格納したい

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2007/04/09
投稿数: 21
投稿日時: 2007-09-12 02:11
SQLServerのデータディクショナリを検索するシステムをVB2005で作成しています。
comboBoxにSELECT文の結果を二つ以上格納したいのですが、

言語:Visual Bacic 2005
【ソースコード】

Dim con As String = String.Empty
Dim da As SqlDataAdapter
Dim ds As New DataSet

Dim SQLkubun As String = "SELECT 区分,区分詳細 FROM 区分リスト"

con &= "Data Source = xxxxx;"
con &= "Database = xxxDB;"
con &= "Integrated Security = SSPI;"

da = New SqlDataAdapter(SQLkubun , cn)
da.Fill(ds, "区分リスト")

BindingSource1.DataSource = ds
BindingSource1.DataMember = "区分リスト"

ComboBox1.DisplayMember = "区分"
ComboBox1.DataSource = BindingSource1


このコードだとComboBox1に"区分"だけはちゃんと表示できるのですが、

ComboBox1.DisplayMember = "区分" & "区分詳細"

このようにするとComboBox1に「System.Data.DataRowView」と表示されてエラーになってしまいます。
二つ以上の結果を表示させるにはどうすればよいのでしょうか?
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-09-12 07:43
さかもとと申します。

今手元に環境が無いので正攻法かどうか分かりませんが、

引用:

Dim SQLkubun As String = "SELECT 区分,区分詳細 FROM 区分リスト"




Dim SQLkubun As String = "SELECT 区分 + 区分詳細 FROM 区分リスト"

にしては・・・?
_________________
------------------------------------------
拝啓、さかもとと申します♪
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-12 09:52
引用:

未記入さんの書き込み (2007-09-12 02:11) より:

ComboBox1.DisplayMember = "区分" & "区分詳細"

このようにするとComboBox1に「System.Data.DataRowView」と表示されてエラーになってしまいます。


これは当然だと言わざるを得ません。 DisplayMember プロパティは String 型です。"区分" & "区分詳細" などと書いても "区分区分詳細" として渡されているのと相違ありません。 ComboBox のデータバインド機構は、"区分区分詳細" というフィールドが自身の DataSource に含まれているかを確認し、存在しているならばそのフィールドの内容が表示されます。 が、今回の例では存在しないのですから '型名' が表示されるわけです。

2 つ以上のフィールドを表示したい場合、標準の ComboBox でやれることは知れています。 さかもとさんの案は桁数を揃えて 1 つのフィールドに連結して出力する方法です。 私ならば ListView や専用の 3rd パーティ製品を使います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
常連さん
会議室デビュー日: 2007/04/09
投稿数: 21
投稿日時: 2007-09-12 16:24
さかもとさん、じゃんぬねっとさんありがとうございます。
引用:

さかもとさんの書き込み (2007-09-12 07:43) より:
Dim SQLkubun As String = "SELECT 区分 + 区分詳細 FROM 区分リスト"
にしては・・・?


にしてみましたがやはり「System.Data.DataRowView」と表示されてエラーになってしまいました。SQL文で実行したところ、(列名なし)になっていたので

ComboBox1.DisplayMember = "区分"
ComboBox1.DisplayMember = ""
ComboBox1.DisplayMember = "(列名なし)"

と、ひとつずつ試してみましたが駄目でした。
引用:

じゃんぬねっとさんの書き込み (2007-09-12 09:52) より:
DisplayMember プロパティは String 型です。"区分" & "区分詳細" などと書いても "区分区分詳細" として渡されているのと相違ありません。

今回の例では存在しないのですから '型名' が表示されるわけです。


なるほど。それでは表示されないのも当然ということですね。
引用:

じゃんぬねっとさんの書き込み (2007-09-12 09:52) より:
2 つ以上のフィールドを表示したい場合、標準の ComboBox でやれることは知れています


とありますが、一応ComboBox で2 つ以上のフィールドを表示することは可能なのでしょうか?
仕事内容の都合もありますので、できましたらComboBoxで表示したいのですが・・・

さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-09-12 16:33
さかもとです。

Dim SQLkubun As String = "SELECT (区分 + 区分詳細) AS 区分 FROM 区分リスト"



ComboBox1.DisplayMember = "区分"

だと如何でしょうか?

_________________
------------------------------------------
拝啓、さかもとと申します♪
未記入
常連さん
会議室デビュー日: 2007/04/09
投稿数: 21
投稿日時: 2007-09-12 16:42
引用:

さかもとさんの書き込み (2007-09-12 16:33) より:
さかもとです。

Dim SQLkubun As String = "SELECT (区分 + 区分詳細) AS 区分 FROM 区分リスト"



ComboBox1.DisplayMember = "区分"

だと如何でしょうか?





おお!できました!さかもとさんありがとうございます!
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-12 16:48
引用:

未記入さんの書き込み (2007-09-12 16:24) より:

とありますが、一応ComboBox で2 つ以上のフィールドを表示することは可能なのでしょうか?仕事内容の都合もありますので、できましたらComboBoxで表示したいのですが・・・


先の投稿で、フィールドを連結して (さかもとさんの案) 桁数を揃えるというのが 1 つの案であるとお話しました。 それに加えるならパイプ線 (仕切り線) をつけることもできます。 ですが相当頑張らないとその程度しかできないですよという意味です。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)