我花了一段時間,但我想通弄明白了,這是我第一次嘗試使用水晶報表。 Crystal報告可能是相當具有挑戰性的項目實施!簡而言之,我試圖重新創建一個非常古老的水晶報告,它具有很多功能。
首先我試圖讓用戶決定是否打印一個訂單或幾個訂單,所有用戶在水晶報告生成之前定義。然後使用代碼將該數據發送到報告。這將允許用戶通過點擊一次按鈕來基本打印幾個不同的報告。
在開始和現在之間,你必須確保你連接到你的數據源。在我的情況是一個SQL數據庫。這給了我很多問題!也許是由於我們以前的ERP軟件不得不使用非常舊的sqlserv32.dll。我使用了OLE DB連接,選定的SQL Server Native Client 10.0(用於SQL Server 2008)。然後,我必須在每個客戶端上同時安裝Crystal Runtime 32bit和Crystal Runtime 64bit和sqlncli.msi,這樣Crystal Reports才能在客戶端工作站上運行。
我的代碼發送參數到水晶報告。
string OrderList = "";
OrderList += "18528-7" + ",";
OrderList += "18527-2" + ",";
OrderList += "18532-2" + ",";
等等。用循環可以更好地完成,只是這樣做了測試目的。
//Set Crystal Report Parameter. This parameter must be created in crystal reports designer with the same name. The parameter type must match your code type, ie a string.
CrystalReport11.SetParameterValue("@MyCrystalReportParameter", OrderList);
在Crystal Reports(CR)中接受使用Select Expert的多值參數。我用我的訂單SQL領域和所使用的公式:
{MySQLTable.MySQLField} in split({[email protected]}, ",")
在CR,你必須爲你創建發送的參數組,要創建多個報告。這些小組將允許在上次報告結束時爲您傳遞的每個價值都附上一份新報告,在我的案例中就是Orders。這爲每個新值(我的訂單號)提供了不同數據的頁眉和報告主體。
在CR中,我使用Group Expert並創建了一個Group。該組被設置爲我的SQL Order字段。
要爲每個不同的訂單報告重置頁碼我抑制了以下部分:報表標題,組頁眉,詳細信息部分,報表頁腳,頁腳。我使用頁眉作爲我的報告標題。我爲我的各個部分使用組頁腳,根據需要插入其他組頁腳。這些載我這顯示,如發貨單,零件清單等
在組專家對我的集團通過訂單數據庫字段我籤新頁面後1個可見集團和重複組附加數據的表格各個部分和子報表每頁上的標題。
章節專家在頁面選項卡上的最後組頁腳我選擇了重置頁碼後。在公共選項卡上檢查保持在一起也很重要。
對於每個包含我的動態數據表的子報表,這些數據表的增長量取決於數據庫中的數據行數。我右鍵點擊SubReport並選擇SubReport Links,選中該字段並將其添加到字段以鏈接至。在下面的兩個下拉列表中選擇它並確保在SubReprot中選擇基於字段的數據已被選中。在我的SubReport中,我不得不創建一個組以一定的方式來訂購我的數據,但是抑制了組部分,並且只使用了ReportHeader和Detail Sections。
你想破解一個報告嗎? – craig