对于每个Next循环仅获取第一行数据

时间:2011-07-14 19:46:56

标签: vb.net

我正在尝试使用代码生成器(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'."} 

1 个答案:

答案 0 :(得分:4)

您需要像这样访问它:

.CustomerID = dr("CustomerID");