2016-03-04 4 views
0

Я работаю с 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 означает, что имя параметра, которое я представил, не совпадает с именем параметра в отчете. Проблема в том, что он IS тот же, поскольку я скопировал и вставил его, чтобы быть уверенным.

После дальнейшего тестирования я обнаружил, что если я Канг формы имени параметра prueba1 к только Prueba это работает. Поэтому я подумал, что это произошло потому, что имя поля параметра не может иметь номера на нем, поэтому я изменил все имена (например, вместо prueba2, test), и это дает мне то же самое Недопустимый индекс excepcion, как и раньше.

Что происходит?

редактировать

Allright после многих испытаний я понял, что я делаю это нормально, проблема была с полями параметрами. Вместо создания различных полей параметров я использовал один и тот же каждый раз. Извините И большое спасибо всем.

+0

Возможно, необходимо удалить все параметры из отчета и воссоздать их. Затем повторите попытку. Насколько я знаю, имена параметров могут иметь номера, это не ваша проблема. – aMazing

+0

@aMazing Это не сработало – Carles

+0

Отметьте этот ответ: http://stackoverflow.com/questions/35862733/crystal-report-invalid-index-exception-from-hresult-0x8002000b-disp-e-badin/35954722# 35954722 –

ответ

0

Попробуйте так:

List<string> s = new List<string>(); 
foreach (KeyValuePair<String, String> t in textos) 
{ 
    text = t.Value; 
    s.Add(text); 
} 

Затем в новом цикле, как это:

for (int i = 0; i < s.Count; i++) 
{ 
    cryRpt.SetParameterValue(i, s[i]); 
} 

А что вы имеете в виду о пустых полей параметров?