2012-12-20 3 views
1

안녕을 반환 나는 다음과 같은 기능이 있습니다목록 마지막 값을

Public Shared Function GetAbrechnung() As List(Of WochenBPlan) 


     Dim wbp = New WochenBPlan 
     Dim allBookings As List(Of WochenBPlan) = New List(Of WochenBPlan) 

     Dim strSQL As String = "SELECT DISTINCT d.ABTEILUNG, d.BEMERKUNG, d.BESTUHLUNG, d.RAUMID, d.ID, d.PERSONENZAHL, d.ADRESSE + ', ' + d.RAUMBEZEICHNUNG AS RAUMBEZEICHNUNG, d.THEMA, p.VN + ' ' + p.NN AS NAME, CONVERT (char(5), d.VON, 108) + ' - ' + CONVERT (char(5), d.BIS, 108) AS ZEIT, p.TEL FROM VIEW_RAUMBUCHUNG_DISPO AS d INNER JOIN PERSONAL AS p ON d.PERSONAL_ID = p.ID WHERE THEMA = 'EVENT'" 
     Dim objRS As SqlDataReader 

     objRS = SQLrunReaderWB(strSQL) 
     If objRS.HasRows Then 

      While objRS.Read() 

       wbp.Raum = objRS("RAUMBEZEICHNUNG") 
       wbp.Zeit = objRS("ZEIT") 

       If Not IsDBNull(objRS("ABTEILUNG")) Then 
        wbp.Bereich = objRS("ABTEILUNG") 
       End If 

       If Not IsDBNull(objRS("THEMA")) Then 
        wbp.Thema = objRS("THEMA") 
       End If 

       If Not IsDBNull(objRS("NAME")) Then 
        wbp.Mieter = objRS("NAME") 
       End If 

       If Not IsDBNull(objRS("TEL")) Then 
        wbp.Mieter_Tel = objRS("TEL") 
       End If 

       wbp.Personen = objRS("PERSONENZAHL") 
       wbp.Bestuhlung = objRS("BESTUHLUNG") 

       If Not IsDBNull(objRS("BEMERKUNG")) Then 
        wbp.Bemerkung = objRS("BEMERKUNG") 
       End If 



       allBookings.Add(wbp) 


      End While 


     Else 

     End If 

     ConnWB.Close() 
     Return allBookings 

End Function 

내 문제는 내가 생성 한 내 목록 방금 마지막 값을 반환하는 것을입니다. 내가 뭘 잘못하고 있니? 누군가 도울 수 있습니까?

답변

2

범위 객체를 루프 내부에 선언해야합니다. 그렇지 않으면 동일한 객체에 대한 참조 만 가져오고 변경되므로 목록을 포함 할 마지막 수정이됩니다.

은 다음과 같이 뭔가를 시도 :

Public Shared Function GetAbrechnung() As List(Of WochenBPlan) 

     Dim allBookings As List(Of WochenBPlan) = New List(Of WochenBPlan) 

     Dim strSQL As String = "SELECT DISTINCT d.ABTEILUNG, d.BEMERKUNG, d.BESTUHLUNG, d.RAUMID, d.ID, d.PERSONENZAHL, d.ADRESSE + ', ' + d.RAUMBEZEICHNUNG AS RAUMBEZEICHNUNG, d.THEMA, p.VN + ' ' + p.NN AS NAME, CONVERT (char(5), d.VON, 108) + ' - ' + CONVERT (char(5), d.BIS, 108) AS ZEIT, p.TEL FROM VIEW_RAUMBUCHUNG_DISPO AS d INNER JOIN PERSONAL AS p ON d.PERSONAL_ID = p.ID WHERE THEMA = 'EVENT'" 
     Dim objRS As SqlDataReader 

     objRS = SQLrunReaderWB(strSQL) 
     If objRS.HasRows Then 

      While objRS.Read() 

       'declare here a new instance to add on the list 
       Dim wbp = New WochenBPlan 

       wbp.Raum = objRS("RAUMBEZEICHNUNG") 
       wbp.Zeit = objRS("ZEIT") 

       If Not IsDBNull(objRS("ABTEILUNG")) Then 
        wbp.Bereich = objRS("ABTEILUNG") 
       End If 

       If Not IsDBNull(objRS("THEMA")) Then 
        wbp.Thema = objRS("THEMA") 
       End If 

       If Not IsDBNull(objRS("NAME")) Then 
        wbp.Mieter = objRS("NAME") 
       End If 

       If Not IsDBNull(objRS("TEL")) Then 
        wbp.Mieter_Tel = objRS("TEL") 
       End If 

       wbp.Personen = objRS("PERSONENZAHL") 
       wbp.Bestuhlung = objRS("BESTUHLUNG") 

       If Not IsDBNull(objRS("BEMERKUNG")) Then 
        wbp.Bemerkung = objRS("BEMERKUNG") 
       End If 


       ' add the reference to the new object on the list 
       allBookings.Add(wbp)  

      End While  

     'Else ---> you do not need this ELSE scope, just remove it 

     End If 

     ConnWB.Close() 

     Return allBookings 

End Function 
+0

고맙습니다. 나는 네 대답을 받아 들일 것이지만 나는 10 분을 기다려야한다. – Paks

2

당신은 각 루프 반복에 WochenBPlan의 새로운 인스턴스를 작성해야합니다. 그렇지 않으면 이전에 설정 한 값을 바꿀뿐입니다. 이것을 루프에 추가하십시오.

wbp = New WochenBPlan() 
관련 문제