2016-12-09 1 views
0

양식의 두 매개 변수 (콤보 상자 1 개와 변수 1 개)를 기반으로 데이터베이스에서 뷰를 표시해야하는 보고서가 있습니다.vb.net의 보고서 뷰어에서 2 개의 매개 변수를 기반으로 테이블을 표시하는 방법

다음은 내 View (view_population)의 이미지입니다. view_population

다음은 보고서 표를 작성하는 데 사용 된 코드입니다.

Me.view_populationTableAdapter.Fill(Me.phil_vetDataSet.view_population) 

나는 양식 (frmReport)에서 올해 (콤보 상자)에 따라보기와 범주 (varCategory)를 필터링해야하지만, 내가 어떻게 보고서의 테이블을 필터링이 개 매개 변수를 사용합니까?

이 코드를 사용하여 작성했지만 제대로 사용하는 방법을 모르겠습니다.

Dim varCategory As String = "" 
If frmReport.cbBackyard.Checked = True Then 
    varCategory = "Backyard" 
ElseIf frmReport.cbCommercial.Checked = True Then 
    varCategory = "Commercial" 
Else 
    varCategory = "" 
End If 

Dim Year As New ReportParameter("for_year", frmReport.cboYear.Text) 
ReportViewer1.LocalReport.SetParameters(Year) 

나는 보고서에서이 출력을 필요로하지만, 내가보기를 필터링하는 형태로 SQL 문을 넣어하는 방법을 모르겠어요.

enter image description here

어떤 제안이나 의견이 크게 감사하고 있습니다. 감사합니다.

답변

1

런타임시 보고서를 필터링하려는 경우 이와 비슷한 작업을 수행 할 수 있습니다.

Dim con As New OleDbConnection 
    con.ConnectionString = connection_string 
    con.Open() 


    Dim cmd As New OleDbCommand("<Query>", con) 

    cmd.CommandType = CommandType.Text 

    Dim ds As New DataSet 
    Dim da As New OleDbDataAdapter(cmd) 

    da.Fill(ds) 

    Dim rpt As New <ReportName> 
    rpt.SetDataSource(ds.Tables(0)) 



    <TableName>.CrystalReportViewer1.ReportSource = rpt 
    cmd.ExecuteNonQuery() 
    con.Close() 

이 코드는 어떻게하면 좋을지 생각해 볼 수 있습니다. 매개 변수의 경우 쿼리에 개체를 추가하기 만하면 보고서의 레코드가 필터링됩니다.

+0

Windows 보고서 뷰어를 사용하고 있습니다. 귀하의 코드에서'Dim rpt As New '과' .CrystalReportViewer1.ReportSource' 코드에 어떻게 사용하는지 모르겠습니다. 보고서 이름으로 변경하려고했습니다. 그러나 오류는'ReportSource는 Microsoft.Reporting.Winforms.ReportViewer'의 구성원이 아닙니다. 너의 아이디어를 주셔서 감사합니다 – Clorae

+0

오, 알겠습니다, 선생님 :) 감사합니다 :) – Clorae

+0

도움이되면 다행입니다. 도움이 필요하시면 알려주세요. – SMHasnain

관련 문제