- 締切済み
LISTBOXの内容が更新されません。
VB初心者です。よろしくお願いします。 visual basic2010expressにて作成してます 担当者の新規・更新のプログラムで テキストBOX(2)・LISTbox(1)・ボタンで構成されてます。 DBを読み込み LISTBOXに表示し LISTBOXで セレクトされたものを テキストBOXに表示し 修正し 更新処理(DB更新・LISTBOX更新)をします。 新規の場合は テキストBOXに入力し 新規処理(DB追加・LISTBOX更新)をします。 DB更新迄はされるのですが リストボックスに反映されません。 再度 更新ボタンを押下すると 変更後の内容になります。 初心者の為 コードが分かりにくいと思いますがよろしくお願いします。 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load '**********リストボックスセット********** LISTBOX_SET() End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click '**********新規登録********** 'データベース接続用オブジェクト生成 Try Dim CON As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\TEST.mdb") '開始 CON.Open() Dim selectcommand As String = "INSERT INTO tantousya (ta_no, ta_mei) VALUES ('{0}', '{1}' );" Using cmb As OleDbCommand = New OleDbCommand( String.Format( selectcommand, TextBox1.Text, TextBox2.Text), CON) cmb.ExecuteNonQuery() End Using '**********リストボックスセット********** LISTBOX_SET() End Try End Sub Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click End End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click '**********変更登録********** 'データベース接続用オブジェクト生成 Try Dim CON As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\TEST.mdb") '開始 CON.Open() Dim selectcommand As String = "UPDATE tantousya SET ta_mei = '{0}' WHERE ta_no = {1};" Using cmb As OleDbCommand = New OleDbCommand( String.Format(selectcommand, TextBox2.Text, TextBox1.Text), CON) cmb.ExecuteNonQuery() End Using '**********リストボックスセット********** LISTBOX_SET() End Try End Sub Private Sub LISTBOX_SET() '**********リストボックスセット********** '接続文字列 Dim i As Integer 'データベース接続用オブジェクト生成 Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\TEST.mdb") Try '開始 con.Open() Dim SQLCom As OleDbCommand = con.CreateCommand Dim selectcommand As String = "SELECT * FROM tantousya;" Dim da As OleDbDataAdapter = New OleDbDataAdapter(selectcommand, con) Dim ds As DataSet = New DataSet() 'データーセット() da.Fill(ds) Dim LIST As List(Of String) = New List(Of String) For i = 0 To ds.Tables(0).Rows.Count - 1 LIST.Add(ds.Tables(0).Rows(i)("ta_no") & ds.Tables(0).Rows(i)("ta_mei") Next ListBox1.DataSource = LIST ・・・・・・・・・<ここのLISTの内容は変更になってます>・・・ Finally 'データベース終了 con.Close() End Try End Sub Private Sub ListBox1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown TextBox1.Text = MID(ListBox1.SelectedItem,1,2) TextBox2.Text = MID(ListBox1.SelectedItem,3,10) End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- gokigen2525
- ベストアンサー率28% (2/7)
DataSourceを変更した後は 再クエリーが必要です ListBox1.Requery()
お礼
回答ありがとうございました。 ListBox1.DataSource = LIST ListBox1.Requery()としました。 'Requery'は system.windows.forms.listboxのメンバーではありません と出てきてしまいます。 色々調べて再クエリの意味はわかったのですがどの様記述をするのかがわかりません 出来れば教えてもらえませんか、よろしくお願いします。
補足
Con.Colseが 必要だったみたいです。 正しい表示がされるようになりました ありがとうございました。