コンボボックスの表示に関して

解決


misamisa  2012-10-03 02:24:23  No: 147831

教えて下さい。

以下のように、Oracleから取得したデータを、コンボボックスのデータとして表示させたいと
考えていますが、下記のように記述した場合、コンボボックスのデータが、Windows7では表示され
ますが、WindowsXP  では表示されません。

PC個別の問題か、あるいはWindows update かと思い、複数台のPCや最新のWindows Updateを
しましたが、現象は変わりませんでした。

何か記述に問題があるか?ご指摘頂ければ幸いです。

よろしくお願いします。

《記述内容》

Dim Connection As New OracleConnection
Dim Command As OracleCommand

'Oracleへのコネクションの確立
Connection.ConnectionString = "User Id=XXXXX; Password=00000; Data Source=XE"

'オープン  
Connection.Open()

'コマンド作成  
Command = Connection.CreateCommand

Try

    Dim dt1 = New DataTable
    Dim ds1 As New DataSet

    Dim Select_SQL As String

    'SQL文作成
    Select_SQL = "SELECT 部品コード,部品名称 FROM T_部品名称"

    Select_SQL = String.Concat(Select_SQL, " ORDER BY 部品コード")

    Dim adp1 As New OracleDataAdapter(Select_SQL, Connection)

    ds1.Clear()

    'データセットの中にT_部品名称というテーブルを作成し、そこへ格納する。
    adp1.Fill(ds1, "T_部品名称")

    ' コンボボックスに部品名称テーブルを連結する
    CMB_部品名称.DataSource = ds1.Tables("T_部品名称")
    ' コンボボックスに部品名称を表示する
    CMB_部品名称.DisplayMember = "部品名称"
    ' 部品コードをSelectdValueで取得する
    CMB_部品名称.ValueMember = "部品コード"

Catch ex As Exception

     例外が発生した時の処理
    MessageBox.Show(ex.ToString, "例外発生")

End Try


オショウ  2012-10-04 19:36:55  No: 147832

手元にもうWinXPが無いので未確認ですが・・・

OSの差異によるComboBoxの挙動の差異ではないでしょうか?

CMB_部品名称.SelectedIndex = 0

を足せば表示される?

※  adp1.Fill(ds1, "T_部品名称") の部分

    Dim iRet as Integer
    iRet = adp1.Fill(ds1, "T_部品名称") 

    とでもして、取得数が、1以上であるのかもご確認
    下さい。取得できていなければ、表示されるはず
    がない・・・

以上。


misamisa  2012-10-05 01:48:20  No: 147833

オショウ様、ご回答ありがとうございます。

あれから色々試してみたけ結果、どうもSQL分の中にカタカナがまじっている為に
SQL文でエラーが起こっていたようでした。

そんな事があるのかと思っていましたが、項目名をダブルコーテーションで囲うように
したところ、問題なくXPでも表示させる事ができました。

せっかく教えていただいたのに申し訳ありません。

またよろしくお願いします。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加