我正在使用VB2010 C#和CR13。我创建了一个带有空白参数字段的报告,我将在运行时使用用户在多个文本框中输入的文本填充该参数字段。我创建了一个包含参数名称作为键和文本作为值的字典。Crystal Reports无效参数索引?
Dictionary<String, String> textos = new Dictionary<string, string>();
textos.Add("prueba1", textBox1.Text);
textos.Add("prueba2", textBox2.Text);
textos.Add("prueba3", textBox3.Text);
textos.Add("prueba4", textBox4.Text);
textos.Add("prueba5", textBox5.Text);
textos.Add("prueba6", textBox6.Text);
textos.Add("prueba7", textBox7.Text);
textos.Add("prueba8", textBox8.Text);
然后我用这个值添加到报告:
public void addValues()
{
String text;
String parameter;
foreach (KeyValuePair<String, String> t in textos)
{
text = t.Value;
parameter = t.Key;
if (!String.IsNullOrEmpty(text))
cryRpt.SetParameterValue(parameter, text);
}
}
的cryRpt.SetParameterValue(parameter, text);
给了我一个收到COMException(HRESULT:0x8002000B(DISP_E_BADINDEX))我知道这是suposed意味着该我引入的参数名称与报告中的参数名称不同。问题是因为我复制并粘贴它是肯定的,所以它是相同的。
在进一步的测试,我发现,如果我cange参数名称形式prueba1只是prueba它的工作原理。所以我认为这是因为参数字段的名称不能有数字,所以我已经改变了所有名称(例如,而不是prueba2,测试),这又给了我相同的无效索引 excepcion和以前一样。
发生了什么事?
编辑
大量的测试后,还好吧,我意识到,我正在做就OK了,问题与参数字段。我没有创建各种参数字段,而是每次都使用相同的参数字段。对不起,非常感谢大家。
可能需要从报告中删除所有参数并重新创建它们。然后重试。据我所知,参数名称可以有数字,那不是你的问题。 – aMazing
@aMazing那没有用 – Carles
检查答案: http://stackoverflow.com/questions/35862733/crystal-report-invalid-index-exception-from-hresult-0x8002000b-disp-e-badin/35954722# 35954722 – 2016-03-12 07:17:36