当我的应用程序遍历下面的第一个代码块时,我会获得所有datarow字段的有效数据。
For Each dRow In dtExportAddr.Rows
dtExportAddr.Rows.Add(dRow("MgrID"), dRow("LocationNum"), dRow("DeptNum"), dRow("AddressLinkID"), dRow("PositionID"))
Next
但循环浏览代码块时出现错误“修改了集合;枚举操作可能无法执行。”
所以我使用下面的代码块:
Dim rowCount As Integer = dtExportAddr.Rows.Count
Dim index As Integer = 0
For index = 0 To rowCount - 1
Dim dRow As DataRow = dtExportAddr.Rows.Item(index)
dtExportAddr.Rows.Add(dRow("MgrID"), dRow("LocationNum"), dRow("DeptNum"), dRow("AddressLinkID"), dRow("PositionID"))
Next
但是,在第二个代码块中,我获得了MgrID的有效记录,但是我得到了其他字段的空白值。
当我查看数据库时,该表中的所有字段都具有有效值。
导致空白值的原因是什么?
答案 0 :(得分:1)
不确定你想要获得什么,因为你从dtExportAddr中选择了数量并将记录添加回来
试试这个 - 未经测试
Dim dRow As DataRow = dtExportAddr.Rows(index)
答案 1 :(得分:1)
您仍在向第一个代码块中的相同数据表添加行,您只是以不同的方式枚举它。您应该创建一个新的数据表来添加行,而不是您要循环的行。
如果你这样做,你应该可以使用任何一种方法进行循环。
Dim tempTable As New DataTable
For Each dRow As DataRow In dtExportAddr.Rows
Dim tempRow As DataRow = tempTable.NewRow(dRow("MgrID"), dRow("LocationNum"), dRow("DeptNum"), dRow("AddressLinkID"), dRow("PositionID"))
tempTable.Rows.Add(tempRow)
Next
我不确定这会让你更接近你的目标,但是当你循环浏览数据表时,我确实无法弄清楚你想要完成什么。
答案 2 :(得分:1)
您的空白值可能是因为列名与您输入的名称略有不同而导致的?
我对你正在做的事情有点困惑,因为你似乎基本上复制了这些行?我真的不确定这与将它们写成excel文件有什么关系