C# 字符串参数记录选择公式

C# 字符串参数记录选择公式,c#,winforms,crystal-reports,C#,Winforms,Crystal Reports,首先,我刚刚开始学习报告,所有这些版本的Crystal Report都让我困惑。总之,我在VS2008中使用了内置的Crystal Reports 我跟在后面。我在过滤方面有问题。我需要将两个参数字段应用于我的报告-根据用户类型或用户状态对其进行排序。我在cmb框和它旁边的文本框中有这些按钮,用于输入文本并在单击按钮时过滤报告 当我将过滤代码应用到我的系统时(单击按钮)。加载整个报表而不使用筛选器的初始代码不起作用(在formload上)。它显示一个弹出窗口,要求我输入参数值 过滤器工作得很好。

首先,我刚刚开始学习报告,所有这些版本的Crystal Report都让我困惑。总之,我在VS2008中使用了内置的Crystal Reports

我跟在后面。我在过滤方面有问题。我需要将两个参数字段应用于我的报告-根据用户类型或用户状态对其进行排序。我在cmb框和它旁边的文本框中有这些按钮,用于输入文本并在单击按钮时过滤报告

  • 当我将过滤代码应用到我的系统时(单击按钮)。加载整个报表而不使用筛选器的初始代码不起作用(在formload上)。它显示一个弹出窗口,要求我输入参数值
  • 过滤器工作得很好。。直到我添加了另一个参数字段并尝试复制效果。我也经历了同样的过程。添加一个参数字段,右键单击>报告>选择公式>记录选择,然后添加另一行。它不起作用 在我的记录选择公式编辑器中,它如下所示

    {UserType.UserType} = {?UserType}
    {UserStatus.UserStatus} = {?UserStatus}
    
    我相信我不知道如何将其分配给参数字段。我不知道如何使用记录选择公式编辑器

    我希望UserType参数字段具有此参数{UserType.UserType}={?UserType} 而UserStatus参数字段具有{UserStatus.UserStatus}={?UserStatus}

    我需要帮助,我不知道如何为谷歌恰当地表达我的问题。这是我点击按钮的代码。我知道代码只是重复它自己。如果您知道一种更简单的方法,请提供建议

        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();
            }
    

    您的记录选择公式需要是:

    {UserType.UserType} = {?UserType}
    AND {UserStatus.UserStatus} = {?UserStatus}
    
    另外,确保每个参数的数据类型都与引用的数据库字段的值匹配