0

vb.netを使用していて2007にアクセスしていますコンボボックスの更新に関して問題があります

これは私のコードです:

Private Sub comboRefresh()

    Try
        cmbSn_no.DataSource = Nothing
        cmbSn_no.Items.Clear()

        Dim asql As String = ("SELECT * FROM Vendor_det")
        da = New OleDb.OleDbDataAdapter(asql, cnnOLEDB)
        da.Fill(ds, "Vendor_det")

        cmbSn_no.ValueMember = "sr_no"
        cmbSn_no.DataSource = ds.Tables(0)
        cmbSn_no.SelectedIndex = 0


        'DataGridView1.DataSource = ds.Tables(0)
        'DataGridView1.Update()

    Catch ex As Exception
        MsgBox("ERROR : " & ex.Message.ToString)

    End Try

End Sub

Private Sub cmbSn_no_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbSn_no.SelectedIndexChanged


    Dim asql As String = ("SELECT * FROM Vendor_det where sr_no='" & cmbSn_no.Text & "'")
    cnnOLEDB.Open()
    cmd = New OleDb.OleDbCommand(asql, cnnOLEDB)
    dr = cmd.ExecuteReader
    If dr.Read = True Then

        cmbSn_no.Text = dr("sr_no")
        txtPart_no.Text = dr("part_no")
      .......... 
    End If
    cnnOLEDB.Close()
End Sub

そして、レコードボタンのクリックイベントの追加と削除からcomborefresh()メソッドを呼び出します。コメント付きのコードを使用せずに[追加/削除]ボタンをクリックすると、出力は次のようになります。

dbのレコード:

abcd123 bbbc123

レコードcccc123を追加すると、更新され、コンボボックスに次のレコードが入力されます。

abcd123 bbbc123 cccc123

しかし、それはいっぱいです

abcd123 bbbc123 cccc123 abcd123 bbbc123

コメント行を使用すると、コンボボックスに「System.Data.DataRowView」が表示されます。プロンプトエラーは表示されませんが、回答が得られません。

combobox.refresh()combobox.selectedindex = -1およびcombobox.items.clear()

それは動作しません

私の問題を解決してください....よろしくお願いします...:)

4

1 に答える 1

0

ComboBoxを更新するコードは問題ないはずですが、cmbSn_no.DataSource = ComboBoxからすべてのデータを削除するものはないため、cmbSn_no.Items.Clear()を呼び出す必要はありません。

ただし、コードに基づいて、DataSet(ds)をフォーム変数として宣言していると想定します。したがって、dsを入力する場合、古いデータ(最初の2つのデータ-abcd123 bbbc123)はまだそこにあり、Fillを実行します。メソッドは、これらの古いデータを新しいデータのセット全体(abcd123 bbbc123 cccc123)とともに追加します念のため、da.Fill(ds、 "Vendor_det")の後にこのコードを追加してみてください。

MsgBox.Show(ds.Tables(0).Rows.Count)

3ではなく5が表示されると思います。その場合は、DataSetの新しいインスタンスを作成するか、テーブルを削除して、Fillの前に最初にDataSetを更新してみてください。

于 2013-03-25T08:42:28.820 に答える