C#CLR此报告需要报告参数的默认值或用户定义值

时间:2017-10-06 16:23:01

标签: c# .net sql-server reporting-services clr

说我有这个clr程序 exec [SqlStoredProcedure1]'param1 = 1,param2 = 2,param3 = 3'

并且已将其编码为分成不同的参数

string[] initparam = reportParameters.Split(','); //PARAM STRING
string[] param = null; //PARAM SELECTOR
string[] paramvalues = new string[initparam.Length * 2];
int cursor=0;
for(int i=0; i < initparam.Length; i++)
    {
    param = initparam[i].Split('=');
    for (int j = 0; j < param.Length; j++)
        {
        paramvalues[cursor] = param[j];
        cursor++;
    }
}
int counter = 0;
foreach (ConsoleApp2.ReportService2005.ReportParameter rp in 
_parameters)
{      
    for(int i = 0; i < paramvalues.Length; i = i + 2)
    {
        if (string.Equals(paramvalues[i], rp.Name, 
        StringComparison.CurrentCultureIgnoreCase))
        {
        parameters[_parameters.Length - totalParams] = new 
        ConsoleApp2.ReportExecution2005.ParameterValue();
        parameters[_parameters.Length - totalParams].Name = 
        rp.Name;
        parameters[_parameters.Length - totalParams].Value = 
        paramvalues[i + 1];
        }
}
SqlContext.Pipe.Send("names: " + parameters[counter].Name);
SqlContext.Pipe.Send("values: " + parameters[counter].Value);
counter++;
totalParams--;
}
re2005.SetExecutionParameters(parameters, "en-us");

管道输出

Param1
1
Param2
2
Param3
3

然而,在点击.SetExecutionParameters后,我会在SSMS中收到错误。

  

此报告需要报告的默认值或用户定义值   参数'Param3'。要运行或订阅此报告,您必须   提供参数值。   Microsoft.ReportingServices.Diagnostics.Utilities.ReportParameterValueNotSetException:   此报告需要报告的默认值或用户定义值   参数'Param3'。要运行或订阅此报告,您必须   提供参数值。

我在代码中没有看到任何错误。如果使用只有一个参数的报表抛出代码就可以正常工作了,我不知道为什么在使用多个参数时它不会出现。

0 个答案:

没有答案