プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (1件)

DataSourceを変更した後は


再クエリーが必要です

ListBox1.Requery()

この回答への補足

Con.Colseが 必要だったみたいです。
正しい表示がされるようになりました
ありがとうございました。

補足日時:2011/08/01 11:59
    • good
    • 3
この回答へのお礼

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

ListBox1.DataSource = LIST
ListBox1.Requery()としました。

'Requery'は system.windows.forms.listboxのメンバーではありません
と出てきてしまいます。


色々調べて再クエリの意味はわかったのですがどの様記述をするのかがわかりません

出来れば教えてもらえませんか、よろしくお願いします。

お礼日時:2011/07/30 19:57

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

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


このQ&Aを見た人がよく見るQ&A