System.Runtime.InteropServices.COMException
(0x8002000B): 無效的索引。 (發生例外狀況於
HRESULT: 0x8002000B (DISP_E_BADINDEX)) 於
CrystalDecisions.ReportAppServer.DataDefModel.FieldsClass.get_Item(Int32 Index)
於
CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions.get_Item(Int32
index) 於
CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions.get_Item(String
fieldName) 於
CrystalDecisions.CrystalReports.Engine.ReportDocument.SetParameterValue(String
name, Object val)
以上很明顯看出是設定參數時發生錯誤。
報表的欄位可以分很多種,如下圖:
//這裡是設定資料庫欄位的綁定
rpDoc.SetDataSource(dtFinall);
//這裡是設定參數欄位的綁定
rpDoc.SetParameterValue("formno", dtFinall.Rows[0]["formno"].ToString());
rpDoc.SetParameterValue("orderno", dtFinall.Rows[0]["orderno"].ToString());
rpDoc.SetParameterValue("budget_code", dtFinall.Rows[0]["budget_code"].ToString());
rpDoc.SetParameterValue("batchno", dtFinall.Rows[0]["batchno"].ToString());
rpDoc.SetParameterValue("vat_num", dtFinall.Rows[0]["vat_num"].ToString());
rpDoc.SetParameterValue("supp_nm", dtFinall.Rows[0]["supp_nm"].ToString());
rpDoc.SetParameterValue("addr", dtFinall.Rows[0]["addr"].ToString());
rpDoc.SetParameterValue("work", dtPur_Basic.Rows[0]["purchaser_nmc"].ToString());
而錯誤主要是找不到參數欄位,明明有formno、orderno等欄位,但是在參數欄位中卻沒有設定,程式match不到就出錯了。
This error occurs when your
parameters
not matched in both reports & coding. May be your parameter name is wrong. So verify the parameters
& parameter names
are same in report
& your coding
.