我正在尝试使用代码生成器(PDSA)创建的动态SQL数据集中的数据填充数据集。如果我想要第一行数据,或者我使用特定的“Where”子句来检索1行,我没有问题。但是,当我遍历具有四个条目的数据集时,而不是获得四个条目,我得到第一行4次。知道为什么吗?
代码示例:
Dim DS_C as New DS
Dim dr_A As DS_C.Tbl_ARow
Me.DS_C.Tbl_A.Clear()
Dim bo As PDSA.DataLayer.tbl_BDC = New PDSA.BusinessLayer.tbl_B
With bo
.ConnectionString = AppConfig.SQLConnectString
.SelectFilter = PDSA.DataLayer.tbl_BDC.SelectFilters.All
.WhereFilter = tbl_BDC.WhereFilters.None
.Load()
End With
For Each dr As DataRow In bo.DataSet.Tables(0).Rows
dr_A = DS_C.Tbl_A.NewRow
With dr_A
.CustomerID = bo.CustomerID
.FirstName = bo.FirstName
.LastName = bo.LastName
.Street = bo.Street
.City = bo.City
.State = bo.State
.ZipCode = bo.ZipCode
End With
DS_C.Tbl_A.AddTbl_ARow(dr_A)
Next
如果我尝试将其更改为使用dr而不是bo,则不会接受它。
我明白了:
.CustomerID = dr.CustomerID(CustomerID is not a member of System.Data.DataRow)
如果我尝试使用DS_C.Tbl_ARow
For Each dr As DS_C.Tbl_ARow In bo.DataSet.Tables(0).Rows
我输入的类型'DS_C.Tbl_ARow'未定义
如果我尝试:
For Each dr As DS.Tbl_ARow In bo.DataSet.Tables(0).Rows
我明白了:
System.InvalidCastException = {"Unable to cast object of type 'System.Data.DataRow' to type 'TblXLMajorPerilsRow'."}
答案 0 :(得分:4)
您需要像这样访问它:
.CustomerID = dr("CustomerID");