2013-07-02 1 views
1

У меня есть сводка, связанная с БД и отлично работающая.Комбинированное сохранение старого значения индекса

Однако, когда пользователь добавляет значение в таблицу, к которой привязан combobox, combobox сохраняет старое значение и добавляет текущие элементы в таблицу.

В этом случае таблица первоначально содержала только одну запись («2012»). Пользователь добавил 2013, поэтому в таблице теперь отображаются две записи («2012» и «2013»), но в поле со списком отображаются три записи («2012», «2012» и «2013»). UNTIL Я выхожу из приложения и перезапускаю, и в этом случае он правильно отражает только две записи в таблице («2012» и «2013»).

Я пробовал cboYear.Datasource = Nothing, cboYear.items.clear, cboYear.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 
+0

Эй, вы должны очистить свой набор данных или создать новый экземпляр с каждым связываясь с dataadapter.'Dim йза как новые Dataset'.Hope это помогает –

ответ

1

Вам нужно очистить ds, прежде чем заполнить его снова:

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

Проверьте это: DataAdapter.Fill

Вы можете использовать метод Fill несколько раз на том же DataTable. Если существует первичный ключ, входящие строки объединяются с совпадающими строками, которые уже существуют. Если первичный ключ не существует, входящие строки добавляются к DataTable.

+0

Это сделали трюк. Благодаря! – user898642