一般我們在使用水晶報表的時候,列印的時候是所見即所得的,就是模板上有什麼,肯定會列印出什麼來。
這就有乙個問題,比如說列印票據,為了呈現效果,我們一般會做個底圖,而只要求列印出數字來。
以前單純想從sdk層面控制模板元素的顯示與隱藏,未果。今天突然想到了這樣的方法,與大家分享。
方法很簡單:使用自定義列印功能,列印前重新用引數控制模板元素的顯示與隱藏,然後再進行列印。
在下例中,我通過乙個簡單的例子來演示文字物件,資料庫字段,背景圖,子報表的控制。
程式設計環境:vb.net 2005 / crystal reports for visual studio 2005
模板是這樣的,新建立5個引數。箭頭方向表示了引數控制的物件。引數值為1時顯示,引數值為0時不顯示。其中紫色色塊處為乙個背景。
sub1和sub2是子報表。
**:報表正常顯示**段(此處僅為核心示例**):
報表的正常顯示(注意報表控制項上的列印按鈕可能需要禁止掉showprintbutton=false)
private
subconfigurecrystalreports()
'注意!此處的myreport不能設定為class級別的變數,僅能為本函式體變數
dimmyreport
asnew
reportdocument
dimreportpath
asstring=&
"/"&
"crystalreport1.rpt
"myreport.load(reportpath)
myreport.parameterfields("x1
").currentvalues.addvalue(1)
myreport.parameterfields("x2
").currentvalues.addvalue(1)
myreport.parameterfields("x3
").currentvalues.addvalue(1)
myreport.parameterfields("x4
").currentvalues.addvalue(1)
myreport.parameterfields("y
").currentvalues.addvalue(1)
crystalreportviewer1.reportsource
=myreport
end sub
private
subform1_load(
byval
sender
assystem.object,
byval
e as
system.eventargs)
handles
mybase
.load
configurecrystalreports()
end sub
介面上增加乙個按鈕(名稱為myprint),實現列印功能:
private
subbutton1_click(
byval
sender
assystem.object,
byval
e as
system.eventargs)
handles
myprint.click
'注意此處的myreport應重新定義或初始化後再用,不能使用初始load的myreport
dimmyreport
asnew
reportdocument
dimreportpath
asstring=&
"/"&
"crystalreport1.rpt
"myreport.load(reportpath)
myreport.parameterfields("x1
").currentvalues.addvalue(0)
myreport.parameterfields("x2
").currentvalues.addvalue(0)
myreport.parameterfields("x3
").currentvalues.addvalue(0)
myreport.parameterfields("x4
").currentvalues.addvalue(1)
myreport.parameterfields("y
").currentvalues.addvalue(0)
myreport.printoptions.printername ="
microsoft office document image writer
"myreport.printtoprinter(1,
false, 1
, 9999)'
匯出方法
'crystalreportviewer1.reportsource = myreport
'myreport.exporttodisk(exportformattype.portabledocformat, "d:/ae0000.pdf")
'使用控制項列印方法,
'最好使用乙個隱藏的crystalreportviewer2, 這樣不影響crystalreportviewer1的效果
'crystalreportviewer2.reportsource = myreport
'crystalreportviewer2.printreport()
end sub
將這些**段結合到你現在的應用中即可,這幾段**在winform和webform中簡單修改即可使用。
所見非所得 使用引數控制水晶報表的部分元素不列印
一般我們在使用水晶報表的時候,列印的時候是所見即所得的,就是模板上有什麼,肯定會列印出什麼來。這就有乙個問題,比如說列印票據,為了呈現效果,我們一般會做個底圖,而只要求列印出數字來。以前單純想從sdk層面控制模板元素的顯示與隱藏,未果。今天突然想到了這樣的方法,與大家分享。方法很簡單 使用自定義列印...
所見非所得2 控制水晶報表的部分元素不列印
在前文 所見非所得 使用引數控制水晶報表的部分元素不列印 中,使用了引數結合程式設計的方法實現。csdn論壇上的提供了另外一種更好的方法 方法重點 顯示與列印分離,程式中直接設定物件的抑制顯示屬性。然後列印。核心語句 myreport.reportdefinition.reportobjects t...
水晶報表在VS中的使用
水晶報表在應用時分兩種方法,分別是拉模式 pull 推模式 push 1 拉模式 在水晶報表生成時的 資料來源 是從水晶報表檔案中的sql語句從資料庫中提取的,在程式設計時不用重寫sql語句,但要加上登入資訊 具體方法,後面介紹 2 推模式 在水晶報表生成時的資料來源,是用程式設計時重寫水晶報表中s...