字符串参数记录选择公式

本文关键字:选择 记录 参数 字符串 | 更新日期: 2023-09-27 18:24:08

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

我正在学习本教程。我在筛选时遇到问题。我需要将两个参数字段应用到我的报告中——根据用户类型或用户状态对其进行排序。我在一个cmb框中有这些,旁边有一个文本框,用于输入文本并在单击按钮时过滤报告。

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

在我的记录选择公式编辑器中,它看起来是这样的。

{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}

此外,请确保每个参数的数据类型都与引用的数据库字段的值相匹配。