我正在使用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