2012-09-26 5 views
1

문제를 알려주기 전에 나쁜 영어로 실례합니다. 기본 지식 만 알고 있습니다. 쿼리가있는 함수가 있는데 반환하고 싶습니다. :목록에서 하나 이상의 값을 반환 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 

을하고 나를 위해 작동하지 않습니다, 그것은 마지막 레코드를 반환합니다. 누구든지 나를 도울 수 있습니까?. 감사합니다.

+0

'id'매개 변수는 무엇입니까? –

답변

2

귀하의 목록에 아무 것도 추가하지 않습니다. 또한 새 Ajuste 객체 안에 넣고 While dr.Read 루프를 초기화해야합니다.

외부에서 초기화 한 Ajuste 개체를 끊임없이 덮어 쓰기 때문에 while 루프는 밖에 없기 때문에 지금 바로 마지막 값만 볼 수 있습니다.

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 
+0

안녕하세요 Jane Doe, 네 말이 맞아, 그건 내 잘못이야. 고마워,이 stackoverflow 내 첫 시간이며 그것은 나를 위해 너무 유용했다! 다시 한 번 감사드립니다! –

+0

문제 없습니다. 기꺼이 도와 드리겠습니다! :) – Thousand

1

For Each 루프를 반복 할 때마다 이전에 Session ("undajustado")에 쓴 내용을 덮어 씁니다.이 작업이 끝나면 루프의 마지막 항목이됩니다.

나는 당신이 당신을 도울 수 있기 전에 성취하려는 것을 알아야합니다.

관련 문제