2012-02-10 11 views
0

まず、レポートを学び始めました。これらのバージョンのCrystalレポートはすべて私を混乱させています。とにかく、VS2008のCrystal Reportsを使っていました。文字列パラメータレコードの選択式

私は、this tutorialに従っています。私はフィルタリングの問題を抱えています。レポートに2つのパラメータフィールドを適用する必要があります。ユーザータイプやユーザーステータスに応じて並べ替える必要があります。私はcmbボックスとテキストボックスの横にテキストを入力し、ボタンをクリックするとレポートにフィルタをかけることができます。

  1. システムにフィルタコードを適用したとき(ボタンをクリックしたとき)。フィルタなしでレポート全体をロードするための初期コードは、(formloadで)機能しませんでした。パラメータ値を入力するようにポップアップが表示されます。
  2. フィルタはうまく機能しました。別のパラメータフィールドを追加し、そのエフェクトを複製しようとしました。私は同じプロセスを経た。パラメータフィールドを追加し、右クリック> [レポート]> [選択式]> [レコードを選択]を選択し、別の行を追加します。それは仕事をしなかった。

私のレコード選択式エディタでは、次のようになります。

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

私はそれをパラメータフィールドに割り当てる方法がわかりません。レコード選択式エディタの使い方はわかりません。

私は{UserStatus.UserStatus} = {?USERSTATUS}を持っているために、このパラメータ{UserType.UserType} = {?のUserType} と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

関連する問題