2012-02-10 3 views
0

처음에는보고를 배우기 시작했습니다. 이러한 Crystal Reports의 모든 버전은 저를 혼란스럽게합니다. 어쨌든 VS2008의 Crystal Reports를 사용했습니다.문자열 매개 변수 레코드 선택 수식

다음은 this tutorial입니다. 필터링하는 데 문제가 있습니다. 보고서에 두 개의 매개 변수 필드를 적용하여 사용자 유형 또는 사용자 상태에 따라 정렬해야합니다. 나는 텍스트를 입력하고 단추를 클릭 할 때 보고서를 필터링하기 위해 cmb 상자와 그 옆에있는 텍스트 상자에이 항목이 있습니다.

  1. 필터 코드를 시스템에 적용한 경우 (버튼 클릭시). 필터없이 전체 보고서를로드하는 초기 코드가 작동하지 않았습니다 (formload에서). 그것은 매개 변수 값을 입력하라는 팝업을 보여줍니다.
  2. 필터가 잘 작동했습니다. 다른 매개 변수 필드를 추가하고 효과를 복제하려고 시도했습니다. 나는 같은 과정을 겪었다. 매개 변수 필드를 추가하고 보고서> 선택 수식> 레코드 선택을 마우스 오른쪽 단추로 클릭 한 다음 다른 행을 추가합니다. 그것은 작동하지 않았다.

내 레코드 선택 수식 편집기에서 다음과 같이 보입니다.

{UserType.UserType} = {?UserType} 
{UserStatus.UserStatus} = {?UserStatus} 

나는 매개 변수 필드에 할당하는 방법을 모르겠다. 그리고 레코드 선택 수식 편집기를 사용하는 방법을 모른다.

나는이 매개 변수 {UserType.UserType} = {?이 UserType을} 과 UserStatus 매개 변수 필드가 가지고 {UserStatus.UserStatus} = {? UserStatus}

을 위해 UserType을 매개 변수 필드을 원하는 도움이 필요합니다. Google에 적합한 문구를 올바르게 입력하는 법을 모르겠습니다. 이 버튼 클릭에 대한 내 코드입니다. 나는 그 코드가 단지 반복된다는 것을 안다. 이 작업을 쉽게 수행 할 수있는 방법을 알고 있다면 조언하십시오.

private void ShowReport_Btn_Click(object sender, EventArgs e) 
    { 
     //IF SELECTED 
     if (Filter_cmb.SelectedItem.ToString() == "UserType") 
     { 
      ReportDocument cryRpt = new ReportDocument(); 
      TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
      TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
      ConnectionInfo crConnectionInfo = new ConnectionInfo(); 

      cryRpt.Load("D:\\MY_THESIS\\WORKING FILES\\WindowsFormsApplication2\\WindowsFormsApplication2\\Reports\\Crystal Reports\\UsersReport.rpt"); 
      crConnectionInfo.ServerName = "RITZEL-PC\\SQLEXPRESS"; 
      crConnectionInfo.UserID = "NNIT-Admin"; 
      crConnectionInfo.Password = "password"; 
      crConnectionInfo.DatabaseName = "NNIT DB"; 

      Tables CrTables = cryRpt.Database.Tables; 
      foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables) 
      { 
       crtableLogoninfo = CrTable.LogOnInfo; 
       crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
       CrTable.ApplyLogOnInfo(crtableLogoninfo); 
      } 

      ParameterFieldDefinitions crParameterFieldDefinitions; 
      ParameterFieldDefinition crParameterFieldDefinition; 
      ParameterValues crParameterValues = new ParameterValues(); 
      ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue(); 

      crParameterDiscreteValue.Value = textBox1.Text; 
      crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields; 
      crParameterFieldDefinition = crParameterFieldDefinitions["UserType"]; 
      crParameterValues = crParameterFieldDefinition.CurrentValues; 

      crParameterValues.Clear(); 
      crParameterValues.Add(crParameterDiscreteValue); 
      crParameterFieldDefinition.ApplyCurrentValues(crParameterValues); 

      crystalReportViewer1.ReportSource = cryRpt; 
      crystalReportViewer1.Refresh(); 
     } 
     else if (Filter_cmb.SelectedItem.ToString() == "UserStatus") 
     { 
      ReportDocument cryRpt = new ReportDocument(); 
      TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
      TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
      ConnectionInfo crConnectionInfo = new ConnectionInfo(); 

      cryRpt.Load("D:\\MY_THESIS\\WORKING FILES\\WindowsFormsApplication2\\WindowsFormsApplication2\\Reports\\Crystal Reports\\UsersReport.rpt"); 
      crConnectionInfo.ServerName = "RITZEL-PC\\SQLEXPRESS"; 
      crConnectionInfo.UserID = "NNIT-Admin"; 
      crConnectionInfo.Password = "password"; 
      crConnectionInfo.DatabaseName = "NNIT DB"; 

      Tables CrTables = cryRpt.Database.Tables; 
      foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables) 
      { 
       crtableLogoninfo = CrTable.LogOnInfo; 
       crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
       CrTable.ApplyLogOnInfo(crtableLogoninfo); 
      } 

      ParameterFieldDefinitions crParameterFieldDefinitions; 
      ParameterFieldDefinition crParameterFieldDefinition; 
      ParameterValues crParameterValues = new ParameterValues(); 
      ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue(); 

      crParameterDiscreteValue.Value = textBox1.Text; 
      crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields; 
      crParameterFieldDefinition = crParameterFieldDefinitions["UserStatus"]; 
      crParameterValues = crParameterFieldDefinition.CurrentValues; 

      crParameterValues.Clear(); 
      crParameterValues.Add(crParameterDiscreteValue); 
      crParameterFieldDefinition.ApplyCurrentValues(crParameterValues); 

      crystalReportViewer1.ReportSource = cryRpt; 
      crystalReportViewer1.Refresh(); 
     } 

답변

2

귀하의 기록 선택 수식 할 필요가 :

또한
{UserType.UserType} = {?UserType} 
AND {UserStatus.UserStatus} = {?UserStatus} 

, 매개 변수의 데이터 유형의 각 참조 된 데이터베이스 필드의 값과 일치하는지 확인합니다.

+0

이 답변이 귀하의 질문에 만족하면이를 승인 된 것으로 표시하는 것을 잊지 마십시오. – craig