【问题标题】:VB.NET Unable to add or import rows to a DataTable from a existing DataSet TableVB.NET 无法从现有数据集表向数据表添加或导入行
【发布时间】:2021-03-08 11:40:40
【问题描述】:

下面的代码有问题,在dt.ImportRow(cr) 行出现“对象未设置为对象的实例”错误。

Dim DataGrid As DataTable = Me.DataSet1.MyGrid()

    For i As Integer = DataGrid.Rows.Count - 1 To -0 Step -1
        Dim dr As DataRow = DataGrid.Rows.Item(i)
        Dim new_value1 = 0
        Dim new_value2 = 0
        Dim new_value3 = 0
        Dim new_value4 = 0
        Dim new_value5 = 0

        If CheckItem(dr("WH"), dr("PC")) Then
            Dim dt As DataTable 
            For Each cr As DataRow In Me.DataSet1.MyGrid()
                If cr("parent") = dr("WH") + dr("PC") And cr("lev") = dr("lev") + 1 Then
                    dt.ImportRow(cr)

                End If
            Next
            dt.AcceptChanges()

            RemoveDuplicateRows(dt)

            For Each dr1 As DataRow In dt.Rows
                new_value1 = new_value1 + dr1("new_value1")
                new_value2 = new_value2 + dr1("new_value2")
                new_value3 = new_value3 + dr1("new_value3")
                new_value4 = new_value4 + dr1("new_value4")
                new_value5 = new_value5 + dr1("new_value1") + dr1("new_value2") + dr1("new_value3") + dr1("new_value4")
            Next

            dr("new_value1 ") = Math.Round(new_value1 , 4)
            dr("new_value2 ") = Math.Round(new_value2 , 4)
            dr("new_value3 ") = Math.Round(new_value3 , 4)
            dr("new_value4 ") = Math.Round(new_value4 , 4)
            dr("new_value5 ") = Math.Round(new_value5 , 4)
        End If

    Next

我要做的是在dt 中填充可以在Me.DataSet1.MyGrid() 中重复的行,这样我就可以执行RemoveDuplicateRows() 方法,以便只显示不同的行,然后将值从他们。问题是我有重复的值,当我将值相加时,它会重复结果,例如我期望 4 我得到 8。

为什么我无法将Rows.Add(cr)ImportRow(cr) 写入dt 数据表?

【问题讨论】:

    标签: vb.net datatable


    【解决方案1】:

    你的线路在哪里:

    将 dt 调暗为数据表

    需要稍微扩展一下:

    Dim dt As DataTable = DataGrid.Clone()
    

    这将导致新的 DataTable dt 与原始 DataTable DataGrid 具有相同的列

    【讨论】:

    • 工作就像一个魅力!正是我错过了 .Clone()... 无法弄清楚如何复制结构,因为我确实认为这是问题所在。谢谢,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2018-03-26
    相关资源
    最近更新 更多