“此行已属于此表”

时间:2013-06-06 00:16:17

标签: vb.net visual-studio-2010 ado.net

我已经阅读了stackoverflow中的现有代码,但我仍然迷失了,因为我如何解决这个问题。 此行已属于此表。 任何建议总是受到赞赏。 它在我的命令按钮保存事件中出错。 我列出了整个表单的代码,只是为了让您了解我正在做的事情。希望这有帮助

Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
    DataGridView1.EndEdit()
    Dim con As SqlConnection = CompDB.GetConnection
    Dim cmd As New System.Data.SqlClient.SqlCommand
    Dim SPgetStandards As String = "dbo.SPgetStandards"
    Dim SPgetRecordDetail As String = "dbo.SPgetRecordDetail"


    Dim dsStandard As New DataSet

    Dim dsRecords As New DataSet
    Dim currentrow As DataRow
    Dim currentcolumn As DataColumn


    MsgBox("Record id is " & RecordID)
    Using con
        con.Open()

        Dim Standardsdataadapter As New SqlClient.SqlDataAdapter(SPgetStandards, con)

        Dim Detaildataadapter As New SqlClient.SqlDataAdapter(SPgetRecordDetail, con)
        Detaildataadapter.Fill(dsRecords, "Record")
        Standardsdataadapter.Fill(dsStandard, "Standard")




        '5/31/13 
        'Figured out how to run a loop through a table and write to the console

        For Each currentrow In dsStandard.Tables("Standard").Rows
            For Each currentcolumn In dsStandard.Tables("Standard").Columns
                'Debug.WriteLine(currentrow(currentcolumn) & ControlChars.Tab & ControlChars.Tab)
                'MsgBox(currentcolumn.ToString)
                'Debug.WriteLine(currentrow.Item(0))
            Next currentcolumn

        Next currentrow

        ' con.Close()
        'con.Dispose()

        Dim newrow As DataRow = dsRecords.Tables("Record").NewRow
        For Each oRow As DataGridViewRow In DataGridView1.Rows
            If Convert.ToInt16(oRow.Cells("chkbox").Value) = 1 Then
                ' Debug.WriteLine("It was clicked ", DataGridView1.Columns.Item(1))
                Debug.WriteLine(oRow.Cells("ID").Value)
                'dsStandard.Tables.Add.Rows("RecordID") = 1234
                'dsRecords.Tables.Add.Rows("Standard_Name_ID") = 1234
                ' newrow("Record_Detail_ID") = RecordID
                '  newrow("Record_ID") = RecordID
                newrow("Standard_Name_ID") = (oRow.Cells("ID").Value)
 '/////Errors out here!!!!!dsRecords.Tables("Record").Rows.Add(newrow) '/////Errors out here!!!!!
                dsRecords.AcceptChanges()


            End If

        Next
    End Using




End Sub

1 个答案:

答案 0 :(得分:0)

移动此行:

Dim newrow As DataRow = dsRecords.Tables("Record").NewRow

成为If区块内的第一行。