2014-02-18 6 views
1

У меня возникла проблема с обновлением таблицы через представление сетки данных нажатием кнопки. вот мой код.System.InvalidOperationException: ошибка при обновлении таблицы через datagridview с использованием метода dt.update

Public Sub loaddgvfrm3() 
    cmdconn = New SqlConnection 
    cmd = New SqlCommand 
    cmdconn.ConnectionString = sqlstr 
    cmdconn.Open() 
    cmd.Connection = cmdconn 
    cmd.CommandText = "select period, VOUCH_AMT, INDIVIDUAL_AMT, check_no, D_MAILED, DIR_NO, who_updated, year_student from tobee.EBD_BILLHISTORY where CLAIM_NO like '" + txtClaimno.Text + "'" 
    'cmd.CommandText = "select a.period, a.VOUCH_AMT, a.INDIVIDUAL_AMT, a.check_no, a.bal_ent, a.D_MAILED, a.DIR_NO from tobee.EBD_BILLHISTORY a left join carlos.claims_waivee b on a.CLAIM_NO = b.claim_no where b.CLAIM_NO like '" + claimno.ToString + "'" 

    'Dim ds As New DataTable 
    'Dim cmdbuilder = New SqlCommandBuilder(da) 
    'da = New SqlDataAdapter() 
    da.SelectCommand = cmd 

    da.Fill(dt) 
    Me.DataGridView1.DataSource = dt 
    Me.DataGridView2.DataSource = dt 
    cmdconn.Close() 

End Sub 

приведенный выше код представляет собой контент datagridview, где я помещаю свой оператор select. и что DataGridView это я модифицирование прямо сейчас

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 



    Try 

     cmdBuilder = New SqlCommandBuilder(da) 
     da.Update(dt) 
     dt.AcceptChanges() 
     'End If 
     MsgBox("changes done") 

    Catch ex As Exception 
     MsgBox(ex.ToString) 
    End Try 
End Sub 

всякий раз, когда я нажмите кнопку сохранения после изменения определенной строки, журнал ошибок выходит,

как это взгляд ошибки-х:

системы. InvalidOperationException: динамическая генерация SQL для UpdateCommand не поддерживается с помощью SelectCommand, которая не возвращает никакой информации о столбце. на system.data.common.dbdataadapter.updatingrowstatusErrors (RowUpdatingeventArgs rowUpdatedEvent, DataRow DataRow) в System.data.Common.DbDataAdapter.UpdateFromDataTable (DataTable DataTable, DataTableMapping tablemapping) в System.Data.Common.DataAdapter.Update (DataTable DataTable) в Educational.frmEb.btnSave_Click (объект отправителя, EventArgs е) в C: \ Users \ Fox \ Documents \ Stress Test \ Обучающие \ form3.vb: линия 220

, но программа все еще продолжается. Я не вижу изменений, внесенных в базу данных DGV. есть что-то, что мне не хватает?

вот моего заявление

Dim connstr As String = "server=midtelephone\sqlexpress; database=testdb; user= sa; password=sa;" 
Dim cmdconn = New SqlConnection 
Dim cmdBuilder As SqlCommandBuilder 
Dim da As New SqlDataAdapter() 
Dim dt As New DataTable 

до этой ошибки, они говорят, что мне нужно, чтобы установить первичный ключ/уникальный ключ в базе данных, так что я сделал, но та же самая ошибка выходит.

pls help me, im действительно застрял на этом этапе, я буду навсегда благодарен, если вы это сделаете, так как это последняя часть моего проекта. обновление изменений, сделанных из dgv в базу данных с использованием материалов da.update.

+0

Это поможет показать таблицу базы данных, о которой идет речь, но я чувствую, что у нее нет первичного ключа. –

+0

Я создал первичный ключ в выбранной таблице, но та же ошибка появляется. –

+0

Я не вижу ваш SelectCommand в SqlDataAdapter, пожалуйста, покажите это –

ответ

0

Команда строитель может только генерировать UpdateCommand и DeleteCommand если:

  1. SelectCommand запрашивает одну таблицу.
  2. Эта таблица имеет первичный ключ.
  3. Этот первичный ключ известен адаптеру данных.

Если у вас уже есть 1 и 2 конвертированных, убедитесь, что для свойства MissingSchemaAction адаптера данных установлено значение AddWithKey.

+0

Где я могу найти свойство missingSchemaAction? –

+0

На вашем SqlDataAdapter. Если вы говорите, что у вашей таблицы есть первичный ключ, то это, вероятно, ответ, который вы ищете. –

+0

Это мое воображение? Я просто подумал, что я набрал «свойство MissingSchemaAction ** адаптера данных **», и я действительно не понял? Даже если бы я этого не сделал, меню Help на вашей IDE сломано? – jmcilhinney