2016-11-04 5 views
0

데이터 세트를 반복하고 각 값을 활성 보고서의 텍스트 상자에 적용하려고합니다. 나는이 텍스트 상자가 그룹/머리글 영역 또는 무엇 일 필요가 있는지 알지 못합니다. 아래 코드는 첫 번째 행만 검색한다는 것을 알고 있습니다. 어떻게 모든 행을 반복하고 활성 보고서는 그룹 섹션에서 여러 행을 얻기 위해 관리 상자를 텍스트로 데이터를 적용 할 수 있습니다데이터 집합을 반복하고 활성 열의 텍스트 상자에 7 열 중 5 열의 값을 적용하십시오.

Private Sub rptUserCellPhoneSwap_ReportStart(sender As Object, e As System.EventArgs) Handles Me.ReportStart 
    Me.PageSettings.Orientation = GrapeCity.ActiveReports.Document.Section.PageOrientation.Landscape 
    DateTxt.Text = Now.ToShortDateString & " " & Now.ToShortTimeString 
    Dim DataSet = GrabInformation(FirstName, LastName) 
    UserTxt.Text = LastName + ", " + FirstName 

    'For Each dr As DataRow In DataSet.Tables(0).Rows 
    ' OldIMEITxt.Text = DataSet.Tables(0).Rows(dr("OldIMEI")).ToString 
    ' NewIMEITxt.Text = DataSet.Tables(0).Rows(dr("NewIMEI")).ToString 
    ' ReasonTxt.Text = DataSet.Tables(0).Rows(dr("SwapReason")).ToString 
    ' DateRepTxt.Text = DataSet.Tables(0).Rows(dr("DateSwapped")).ToString 
    ' ValueTxt.Text = DataSet.Tables(0).Rows(dr("EstimatedAccumulatedValue")).ToString 

    'Next 

    If Not IsNothing(DataSet) Then 
     If DataSet.Tables(0).Rows.Count > 0 Then 
      OldIMEITxt.Text = DataSet.Tables(0).Rows(0)("OldIMEI") 
      NewIMEITxt.Text = DataSet.Tables(0).Rows(0)("NewIMEI") 
      ReasonTxt.Text = DataSet.Tables(0).Rows(0)("SwapReason") 
      DateRepTxt.Text = DataSet.Tables(0).Rows(0)("DateSwapped") 
      ValueTxt.Text = DataSet.Tables(0).Rows(0)("EstimateAccumulatedValue") 
     End If 
    End If 



End Sub 

답변

1

ActiveReports는 코드에서 추가 루프없이 데이터 집합에서 데이터를 읽을 수 있습니다. 데이터 테이블을 보고서 개체의 DataSource 속성으로 반환하면 보고서에 데이터를 표시하기 위해 TextBox 컨트롤 및 GroupHeader 섹션의 DataField 속성을 올바르게 설정하면됩니다. 렌더링 엔진이 자동으로 모든 데이터 행을 통해 이동합니다

Private Sub SectionReport1_ReportStart(sender As Object, e As EventArgs) Handles MyBase.ReportStart 
    ' bind TextBox controls to fields in table 
    Me.txtF1.DataField = "F1" 
    Me.txtF2.DataField = "F2" 
    ' set the grouping field 
    Me.GroupHeader1.DataField = "F2" 
    ' set the report data source 
    Me.DataSource = GetSampleData().Tables(0) 
End Sub 

Private Function GetSampleData() As DataSet 
    Dim ds = New DataSet() 
    Dim dt = ds.Tables.Add("TestData") 
    dt.Columns.Add("F1") 
    dt.Columns.Add("F2") 
    dt.Rows.Add("1", "0") 
    dt.Rows.Add("2", "0") 
    dt.Rows.Add("1", "1") 
    dt.Rows.Add("2", "1") 
    Return ds 
End Function 

는 "반자동 모드"에서 행에 의해 데이터 행을 읽을 선호하는 경우, 다음 FetchData 이벤트 핸들러는 여기에 도움이 될 수 있습니다

Dim i As Integer 
Dim dt As DataTable = Nothing 

Private Sub SectionReport2_ReportStart(sender As Object, e As EventArgs) Handles MyBase.ReportStart 
    i = 0 
    ' bind TextBox controls to fields in table 
    Me.txtF1.DataField = "F1" 
    Me.txtF2.DataField = "F2" 
    ' set the grouping field 
    Me.GroupHeader1.DataField = "F2" 
    dt = GetSampleData().Tables(0) 
End Sub 

Private Sub SectionReport2_DataInitialize(sender As Object, e As EventArgs) Handles MyBase.DataInitialize 
    Me.Fields.Add("F1") 
    Me.Fields.Add("F2") 
End Sub 

Private Sub SectionReport2_FetchData(sender As Object, eArgs As FetchEventArgs) Handles MyBase.FetchData 
    If dt.Rows.Count > i Then 
     Me.Fields("F1").Value = dt.Rows(i)(0) 
     Me.Fields("F2").Value = dt.Rows(i)(1) 
     eArgs.EOF = False 
    Else 
     eArgs.EOF = True 
    End If 
    i = i + 1 
End Sub 

Private Function GetSampleData() As DataSet 
    Dim ds = New DataSet() 
    Dim _dt = ds.Tables.Add("TestData") 
    _dt.Columns.Add("F1") 
    _dt.Columns.Add("F2") 
    _dt.Rows.Add("1", "0") 
    _dt.Rows.Add("2", "0") 
    _dt.Rows.Add("3", "1") 
    _dt.Rows.Add("4", "1") 
    Return ds 
End Function 

또한 ActiveReports 설치 패키지에서 런타임 데이터 바인딩을 사용하여 샘플을 살펴볼 것을 권장합니다. 여기 공식 사이트의 샘플 설명에 대한 링크입니다 : Unbound Data

+0

thats 내가 한 짓. 나는 반환 된 테이블에 DataSource를 설정하고 텍스트 상자를 설정합니다. 감사 ! – Edgar

1

이다 방법 것 루프 만이 예에서는 모든 행을 얻을 통해 텍스트 상자에 남을 데이터 만 마지막 행이됩니다.

지정한 텍스트 상자에 각 행 정보를 연결하려면 다음과 같은 정보가 있어야합니다.

OldIMEITxt.Text = OldIMEITxt.Text & dr("OldIMEI") 

루프 코드

For each dr as Datarow in DataSet.Tables(0).Rows 
    OldIMEITxt.Text = dr("OldIMEI") 
    NewIMEITxt.Text = dr("NewIMEI") 
    ReasonTxt.Text = dr("SwapReason") 
    DateRepTxt.Text = dr("DateSwapped") 
    ValueTxt.Text = dr("EstimateAccumulatedValue") 
Next