1

DB にバインドされていてうまく機能するコンボボックスがあります。

ただし、コンボボックスがバインドされているテーブルにユーザーが値を追加すると、コンボボックスは古い値を保持し、現在の項目をテーブルに追加します。

この場合、テーブルはもともと 1 つのレコード ("2012") しか保持していませんでした。ユーザーが 2013 を追加したため、テーブルには 2 つのレコード ("2012" と "2013") が表示されますが、コンボボックスには 3 つのレコード ("2012"、"2012"、および "2013") が表示されます。アプリを終了して再起動するまで、テーブル内の 2 つのレコード (「2012」と「2013」) のみが正しく反映されます。

cboYear.Datasource = Nothing、を試しましたがcboYear.items.clearcboYear.DataBindings.clear何も機能しません。

コードは次のとおりです。

Try
    Dim asql As String = ("SELECT * FROM YearsAvailable ORDER BY CurrentYear")
    Dim da As New OleDbDataAdapter(asql, con)
    da.Fill(ds)

    cboYear.ValueMember = "CurrentYear"
    cboYear.DataSource = ds.Tables(0)
    cboYear.SelectedIndex = 0
    CurrentYear = cboYear.Text
    Me.Text = "MSD of Perry Township Compensation Model: " & CurrentYear
Catch ex As Exception
    MsgBox("ERROR filling the YEAR control: " & ex.Message.ToString)
End Try
4

1 に答える 1

1

再度入力する前にクリアする必要がありますds:

ds.Clear();
da.Fill(ds);

これをチェックしてください:DataAdapter.Fill

同じ DataTable で Fill メソッドを複数回使用できます。主キーが存在する場合、着信行は既存の一致する行とマージされます。主キーが存在しない場合、受信行は DataTable に追加されます。

于 2013-07-02T11:14:14.233 に答える