Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

comboboxとTextBoxのデータ連結

ComboBox TextBox データバインド タグの編集...

投稿者 えりん   ()   投稿日時 2008/7/11 21:15:00
いつも拝見させていただいています。 
当方VB初心者です。。 
 
データベースを使った開発をしています。 
データベースにあるテーブルの商品IDをcomboboxに 
商品名をtextboxに表示させたいのですが 
comboboxとtextboxを連結させる方法がわかりません。 
 
comboboxに仮に商品ID"AA"を入れると 
textboxに商品名、仮に"CDケース"という表示に 
したいのですがどなたかご存知の方アドバイス 
をいただけないでしょうか。。 
 
comboboxのTextChangedイベントで実行させたいのですが・・なかなかうまくいかず(T_T) 
 
接続は非接続型です。 
データベースはoracleを使っています。(こんな情報でいいのでしょうか・・すみません;;) 
 
心優しきどなたかご教示お願いいたします(>_<;)

投稿者 るきお   ()   投稿日時 2008/7/11 21:43:00
いろいろ方法はありますが、とりあえず2つほど紹介します。 
VB2005、Option Strict Offで試しました。 
 
■方法1 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
 
        Dim table As DataTable = GetData() 
        ComboBox1.DataSource = table 
        ComboBox1.DisplayMember = "ProductID" 
 
    End Sub 
 
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 
 
        TextBox1.Text = ComboBox1.SelectedItem("ProductName") 
 
    End Sub 
    Private Function GetData() As DataTable 
 
        'ここにOracleなどからデータを取得する処理を書く 
        '※この例ではこの部分は直書きで代替とする。 
 
        Dim table As New DataTable 
        table.Columns.Add("ProductID", GetType(String)) 
        table.Columns.Add("ProductName", GetType(String)) 
 
        table.Rows.Add("AA", "CDケース") 
        table.Rows.Add("BB", "鉛筆") 
        table.Rows.Add("CC", "分度器") 
 
        Return table 
 
    End Function 
 
■方法2 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
 
        Dim bind As Binding 
        Dim table As DataTable = GetData() 
 
        bind = New Binding("Text", table, "") 
 
        ComboBox1.DataSource = table 
        ComboBox1.DisplayMember = "ProductID" 
 
        ComboBox1.DataBindings.Add("Text", table, "ProductID") 
        TextBox1.DataBindings.Add("Text", table, "ProductName") 
 
    End Sub 
 
    Private Function GetData() As DataTable 
 
        'ここにOracleなどからデータを取得する処理を書く 
        '※この例ではこの部分は直書きで代替とする。 
 
        Dim table As New DataTable 
        table.Columns.Add("ProductID", GetType(String)) 
        table.Columns.Add("ProductName", GetType(String)) 
 
        table.Rows.Add("AA", "CDケース") 
        table.Rows.Add("BB", "鉛筆") 
        table.Rows.Add("CC", "分度器") 
 
        Return table 
 
    End Function 
 
こんなんでいかがでしょうか?

投稿者 えりん   ()   投稿日時 2008/7/11 22:36:00
>>1 
るきおさんさっそくのアドバイスありがとうございます! 
方法2のやり方でスムーズにできました! 
 
まだVBまもないのでデータベース系は難しいです。。 
 
日々勉強ですね(~~) 
 
ご教示ありがとうございました!