在告诉你这个问题之前,请原谅我的英语不好,我只知道基本的 我有一个查询函数,我想返回它,我这样做:
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
它并不适合我,它会返回最后一条记录。有人可以帮我吗? 谢谢!
答案 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”)的内容,这将最终成为完成循环中的最后一项。
在能够帮助你之前,我需要知道你想要完成什么。