插入/删除记录后组合框不刷新

时间:2013-03-25 07:56:23

标签: vb.net ms-access-2007

我正在使用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()

它不起作用

请解决我的问题.... 提前谢谢你...... :)

1 个答案:

答案 0 :(得分:0)

刷新ComboBox的代码应该没问题,但是不需要调用cmbSn_no.Items.Clear(),因为cmbSn_no.DataSource = Nothing将从ComboBox中删除所有数据。

但是,根据您的代码,我假设您将DataSet(ds)声明为表单变量,因此当您要填写 ds 时,旧数据(前2个数据 - abcd123 bbbc123) )仍然存在,然后运行Fill方法添加那些带有一整套新数据的旧数据 - 即abcd123 bbbc123 cccc123 。为确保这一点,请尝试在da.Fill之后添加此代码(ds,“Vendor_det”)

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

我认为它会显示5,而不是3.如果是这种情况,请尝试在Fill之前先刷新DataSet,方法是创建一个新的DataSet实例,或删除该表。