所見非所得 使用引數控制水晶報表的部分元素不列印

2021-05-07 08:13:34 字數 3051 閱讀 5936

一般我們在使用水晶報表的時候,列印的時候是所見即所得的,就是模板上有什麼,肯定會列印出什麼來。

這就有乙個問題,比如說列印票據,為了呈現效果,我們一般會做個底圖,而只要求列印出數字來。

以前單純想從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...