在列表vb.net中返回多个值

时间:2012-09-26 17:22:40

标签: asp.net sql vb.net

在告诉你这个问题之前,请原谅我的英语不好,我只知道基本的 我有一个查询函数,我想返回它,我这样做:

Public Function obtenerDataAjuste(ByVal id As Integer)
     Dim ajuste As New Ajuste
     Dim cmd as New SqlCommand("usp_obtenerDataAjuste",cn.getCN")
     cmd.CommandType = CommandType.StoredProcedure
     cn.getCN().Open()
     Dim dr as SqlDataReader
     dr = cmd.ExecuteReader
     Dim ajustelist As New List(Of Ajuste)
     While dr.Read
         ajuste.pesomix = dr("PesoMix")
         ajuste.pesoprod = dr("PesoProd")
         ajuste.unidad = dr("UNIDAD_EMPAQUE")
     End While
     cn.getCN().Close()
     Return ajustelist.ToArray
End Function

但我认为这是错误的,因为我将此函数调用到我的代码后面:

Dim opd As New OPDAO
    For Each objAjuste In opd.obtenerDataAjuste(CInt(Session("idop")))
        Dim pesomix As Decimal = objAjuste.pesomix
        Dim pesoprod As Decimal = objAjuste.pesoprod
        Dim empaque As Integer = objAjuste.unidad

        'Reajuste unidad ajustado
        Dim unidadajustado As Double = pesomix / pesoprod
        Session("undajustado") = Convert.ToInt32(unidadajustado)

        'Reajuste paquete ajustado
        Dim paqueteajustado As Double = Session("undajustado") / empaque
        Session("pqtajustado") = paqueteajustado

    Next

它并不适合我,它会返回最后一条记录。有人可以帮我吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

您没有在列表中添加任何内容。您还需要在Ajuste循环内初始化新的While dr.Read对象

这就是为什么你现在只看到最后一个值的原因,因为你经常覆盖你在while循环中之外Ajuste对象。

  Dim ajustelist As New List(Of Ajuste)
         While dr.Read
             Dim ajuste As New Ajuste       // <-- add this
             ajuste.pesomix = dr("PesoMix")
             ajuste.pesoprod = dr("PesoProd")
             ajuste.unidad = dr("UNIDAD_EMPAQUE")
             ajustelist.Add(ajuste)         // <-- and this
         End While

答案 1 :(得分:1)

每次通过For Each循环,你将覆盖你之前放入Session(“undajustado”)的内容,这将最终成为完成循环中的最后一项。

在能够帮助你之前,我需要知道你想要完成什么。