2012-09-27 85 views
2

我有一個簡單的Crystal報表,其中包含一個參數,該報表應該在報表上生成一個項目。我列出了下面的代碼以及報告中的參數設置。當我嘗試將打印報告打印到打印機(代碼片段中的最後一行)時,我收到以下異常;無法將int參數傳遞給Crystal報表

CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException未處理 消息=缺少參數值。

我也試過了使用ParameterFieldDefinitions和ParameterFieldDefinition對象的報告,但我最終得到了相同的結果。

任何幫助將不勝感激。

 ReportDocument loReport = new ReportDocument(); 

     loReport.Load(path+"InventoryItemsBarCodeLabel.rpt"); 

     SqlConnectionStringBuilder loConnectionString = new SqlConnectionStringBuilder(ConnectionUtilities.getConnectionString()); 

     ParameterValues currentParameterValues = new ParameterValues(); 
     ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue(); 
     parameterDiscreteValue.Value = Convert.ToInt32(psMasterId); 

     loReport.SetParameterValue("pnMasterId", parameterDiscreteValue.Value); 
     loReport.SetDatabaseLogon(loConnectionString.UserID, 
      loConnectionString.Password, 
      loConnectionString.DataSource, 
      loConnectionString.InitialCatalog); 
     loReport.Refresh(); 
     loReport.PrintToPrinter(1, false, 1, 1); 

報表參數:名稱:pmMasterId,類型:Number,值列表:動態,值= MasterId,說明= MasterId,參數= pnMasterId

報告選擇記錄:{} Inventory_Items.MasterId = {?pnMasterId}

+0

你可能已經檢查拼寫: 「pnMasterId」 與 「pnMasterID」 –

+0

@SteveWellens - 是史蒂夫,雙重檢查拼寫。 – ggrewe1959

+0

我甚至嘗試將參數類型更改爲靜態並列出其中一個值,我嘗試將其打印爲值。仍然沒有運氣。我完全被這個弄糊塗了。 – ggrewe1959

回答

2

嘗試移動SetDatabaseLogon()方法之前設置參數;我相信它會重置報告文件和之前通過的任何參數。

+0

我也試過這個。我創建了報表對象,加載了報表,然後執行了數據庫登錄,創建了參數並重新打印。同樣的錯誤。 – ggrewe1959

+0

好吧,這裏是我如何設置PARAMS(我記得類似的問題,所以我放棄了通過名稱來設置他們,而我將它們通過索引): \t \t \t如果(ID!= NULL){ \t \t \t \t ParameterDiscreteValue descreteValue = new ParameterDiscreteValue(); \t \t \t \t descreteValue.Value = Convert.ToDecimal(id); \t \t \t \t reportDocument.SetParameterValue(0,descreteValue); //如果設置參數 \t \t \t} 是的,不叫刷新()是你設置PARAMS沒有刷新 - 該報告將自動更新 – serop

+1

這是它。不是參數類型,而是調用loReport.Refresh()謝謝! – ggrewe1959

1

您是否嘗試過直接設置參數而不是使用參數對象?

loReport.SetParameterValue("pnMasterId", Convert.ToInt32(psMasterId)); 
+0

是的!試過這個,沒有運氣。 – ggrewe1959