2015-12-31 35 views
2

我正在開發一個水晶報告,它是動態添加正確的滲透物 即使我使用了crystalreportviewer上的Paramfieldinfo屬性進行檢查,它顯示了 5個參數,它的名字很完美。爲什麼水晶報告總是告訴參數不正確?在c#中動態生成報告時?

但它仍然顯示「參數不正確」當創建參數我有 選擇ListOfValues選項是動態的。 我從4小時左右的時間裏苦苦掙扎,我不知道它在哪裏可以告訴我 ,謝謝。

我的代碼是:

 string query = "SELECT "; 
     int columnNo = 0; 

     if (chbCode.Checked) 
     { 
      columnNo++; 
      query = query.Insert(query.Length, "Customer_Code as Column" + 
      columnNo.ToString()); 

      paramField = new ParameterField(); 
      paramField.Name = "col" + columnNo.ToString(); 
      paramDiscreteValue = new ParameterDiscreteValue(); 
      paramDiscreteValue.Value = "Customer Code"; 
      paramField.CurrentValues.Add(paramDiscreteValue); 
      //Add the paramField to paramFields 
      paramFields.Add(paramField); 
     } 
     if (chbFirstName.Checked) 
     { 
      columnNo++; 
      if (query.Contains("Column")) 
      { 
       query = query.Insert(query.Length, ", "); 
      } 
      query = query.Insert(query.Length, "FirstName as Column" + 
      columnNo.ToString()); 

      paramField = new ParameterField(); 
      paramField.Name = "col" + columnNo.ToString(); 
      paramDiscreteValue = new ParameterDiscreteValue(); 
      paramDiscreteValue.Value = "First Name"; 
      paramField.CurrentValues.Add(paramDiscreteValue); 
      //Add the paramField to paramFields 
      paramFields.Add(paramField); 
     } 
     if (chbLastName.Checked) 
     { 
      columnNo++; //To determine Column number 
      if (query.Contains("Column")) 
      { 
       query = query.Insert(query.Length, ", "); 
      } 
      query = query.Insert(query.Length, "LastName as Column" + 
      columnNo.ToString()); 

      paramField = new ParameterField(); 
      paramField.Name = "col" + columnNo.ToString(); 
      paramDiscreteValue = new ParameterDiscreteValue(); 
      paramDiscreteValue.Value = "Last Name"; 
      paramField.CurrentValues.Add(paramDiscreteValue); 
      //Add the paramField to paramFields 
      paramFields.Add(paramField); 
     } 
     if (chbAddress.Checked) 
     { 
      columnNo++; 
      if (query.Contains("Column")) 
      { 
       query = query.Insert(query.Length, ", "); 
      } 
      query = query.Insert(query.Length, "Address as Column" + 
      columnNo.ToString()); 

      paramField = new ParameterField(); 
      paramField.Name = "col" + columnNo.ToString(); 
      paramDiscreteValue = new ParameterDiscreteValue(); 
      paramDiscreteValue.Value = "Address"; 
      paramField.CurrentValues.Add(paramDiscreteValue); 
      //Add the paramField to paramFields 
      paramFields.Add(paramField); 
     } 
     if (chbPhone.Checked) 
     { 
      columnNo++; 
      if (query.Contains("Column")) 
      { 
       query = query.Insert(query.Length, ", "); 
      } 
      query = query.Insert(query.Length, "Phone as Column" + 
      columnNo.ToString()); 

      paramField = new ParameterField(); 
      paramField.Name = "col" + columnNo.ToString(); 
      paramDiscreteValue = new ParameterDiscreteValue(); 
      paramDiscreteValue.Value = "Phone"; 
      paramField.CurrentValues.Add(paramDiscreteValue); 
      //Add the paramField to paramFields 
      paramFields.Add(paramField); 
     } 

     //if there is any remaining parameter, assign empty value for that 
     //parameter. 
     for (int i = columnNo; i < 5; i++) 
     { 
      columnNo++; 
      paramField = new ParameterField(); 
      paramField.Name = "col" + columnNo.ToString(); 
      paramDiscreteValue = new ParameterDiscreteValue(); 
      paramDiscreteValue.Value = ""; 
      paramField.CurrentValues.Add(paramDiscreteValue); 
      //Add the paramField to paramFields 
      paramFields.Add(paramField); 
     } 

     crystalReportViewer1.ParameterFieldInfo = paramFields; 

     query += " FROM Customer"; 
     return query; 

請解決我的問題。由於

回答

0

嘗試增加這樣的:

CrystalReportSource1.ReportDocument.SetParameterValue(0, "ParameterValue"); 
+0

CrystalReportSource1不會在目前情況下錯誤信息存在,則顯示插孔。還有什麼是「parameterValue」我會傳遞什麼參數值,因爲我將從數據庫中檢索存儲在數據集中的數據,所以現在我想根據用戶選擇將這些值分配給水晶報表。所以在我的情況下,我的參數值是什麼。我提供了用於用戶選擇的複選框。謝謝。 – Nag

+0

加入後我解決了crystaldecision.web dll。但是它顯示crystalReportSource1從不分配,並且總是默認值爲null。 NullReference異常引發了我將在這裏提供的值。我是新來的水晶報告可以告訴我傑克? – Nag

+0

我也解決了上述問題,但它引發了一個「報告文件是空的」它告訴了什麼?我創建了報告文檔對象並指定了水晶報告的路徑,同時它也告訴我這樣的感謝。 – Nag