如何将参数传递给水晶报表? [英] How to pass parameters to crystal report?

查看:101
本文介绍了如何将参数传递给水晶报表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

水晶报表有两个参数现场,但是,我使用了三种方法搜索,都失败了。
错误缺少参数值。

crystal report has two parameters field, however, i used three method searched, all failed. Error is missing parameter values.

确定参数是通过查询字符串传递
<一href=\"http://localhost:1604/Cheques/viewReport.aspx?type=TT&ID=5&tCOMDB=Project_TR_TP_COM_Test\" rel=\"nofollow\">http://localhost:1604/Cheques/viewReport.aspx?type=TT&ID=5&tCOMDB=Project_TR_TP_COM_Test
通过检查标签

sure parameter is passing by query string http://localhost:1604/Cheques/viewReport.aspx?type=TT&ID=5&tCOMDB=Project_TR_TP_COM_Test checked by Label

但是,不知道为什么错误缺少参数值。

However, do not know why Error is missing parameter values.

方法1

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

            crParameterDiscreteValue.Value = Request.QueryString["ID"];
            crParameterFieldDefinitions = objRpt.DataDefinition.ParameterFields;
            crParameterFieldDefinition = crParameterFieldDefinitions["Cheque_IssueRecord_Secretary_Review_TT_ID"];
            crParameterValues = crParameterFieldDefinition.CurrentValues;

            crParameterValues.Clear();
            crParameterValues.Add(crParameterDiscreteValue);
            crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
            // Second parameter
            ParameterFieldDefinitions crParameterFieldDefinitions2;
            ParameterFieldDefinition crParameterFieldDefinition2;
            ParameterValues crParameterValues2 = new ParameterValues();
            ParameterDiscreteValue crParameterDiscreteValue2 = new ParameterDiscreteValue();

            crParameterDiscreteValue2.Value = Request.QueryString["tCOMDB"];
            crParameterFieldDefinitions2 = objRpt.DataDefinition.ParameterFields;
            crParameterFieldDefinition2 = crParameterFieldDefinitions2["tCOMDB"];
            crParameterValues2 = crParameterFieldDefinition2.CurrentValues;

            crParameterValues2.Clear();
            crParameterValues2.Add(crParameterDiscreteValue2);
            crParameterFieldDefinition2.ApplyCurrentValues(crParameterValues2);

方法2

//objRpt.SetParameterValue("Cheque_IssueRecord_Secretary_Review_TT_ID", Request.QueryString["ID"]);
            //objRpt.SetParameterValue("tCOMDB", Request.QueryString["tCOMDB"]);

方法3

var value = new ParameterDiscreteValue();
            value.Value = Request.QueryString["ID"];
            objRpt.ParameterFields["Cheque_IssueRecord_Secretary_Review_TT_ID"].CurrentValues.Add(value);

            var value2 = new ParameterDiscreteValue();
            value2.Value = Request.QueryString["tCOMDB"];
            objRpt.ParameterFields["tCOMDB"].CurrentValues.Add(value2); 

这水晶报告数据库中使用存储过程,
参数字段会自动添加,添加后我删除@字符
不知道为什么,缺少参数

This crystal report database use stored procedure, parameter field is automatically added, after added i removed @ character do not know why parameter missing

推荐答案

我解决了

            objRpt.SetParameterValue(0, Convert.ToInt32(Request.QueryString["Cheque_IssueRecord_Secretary_Review_TT_ID"]));
            objRpt.SetParameterValue(1, Request.QueryString["tCOMDB"]);

            //The viewer's reportsource must be set to a report before any parameter fields can be accessed.
            CrystalReportViewer1.ReportSource = objRpt;

使用上述code和删除刷新报告和setlogondatabase(用户,passwd文件),然后成功

use above code and remove refresh report and setlogondatabase("user", "passwd") then succeed

这篇关于如何将参数传递给水晶报表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆