之前有人問到怎麼在**中動態新增子報表,或者其他物件。我的答覆一般是這個是做不到的,但是可以通過預置物件的顯示與隱藏來模擬此效果。
這是因為現在大多數朋友用的都是微軟vs200x自帶的水晶報表,這個版本是個簡化版本,所以有很多東西是實現不了的。
前幾天有人問到了 bo xi 的問題,我也很高興終於能在這個層面上做一些討論。後面如果有必要,我會寫一些boe sdk層面的程式設計。
這個前提是,開發機器上需要安裝了bo或crystalreports server(或其客戶端、 sdk)
然後我們就可以使用ras sdk在動態新增物件了。
當然也可以使用水晶報表開發版的rdc來實現這個功能,但是**上還是有不少差別的。
關於ras我在這裡做過一些說明
也可參考msdn
本文的**用以演示乙個簡單的子報表動態新增。
新建立乙個水晶報表winform工程(vb.net),缺省會增加乙個報表crystalreport1.rpt,再增加乙個forsub1.rpt
因本**只演示子報表的動態新增,所以兩個報表裡都只放了些文字,均未鏈結資料庫
imports
crystaldecisions.shared
imports
crystaldecisions.windows.forms
imports
crystaldecisions.crystalreports.engine
imports
imports
public
class
form1
private
subform1_load(
byval
sender
asobject
, byval
e as
system.eventargs)
handles
me.load
dimboreportdocument
asreportdocument
dimboreportclientdocument
asiscdreportclientdocument
dimbosubreportclientdocument
asdim
boarea
asdim
bosection
asdim
strsubrptfile
asstring
boreportdocument
=new
reportdocument()
'載入主報表
boreportdocument.load(
"e:/crquestions/addsubreportruntime/crystalreport1.rpt")
'----------------------------------------
'如果要進行資料、引數、公式操作,請在此處對主報表boreportdocument進行操作
'----------------------------------------
boreportclientdocument
=new
reportclientdocumentclass()
'由主報表返回待ras操作的reportclientdocument
boreportclientdocument
=boreportdocument.reportclientdocument
'設定待處理的報表區域(此處使用了報表頁首)
boarea
=boreportclientdocument.reportdefcontroller.reportdefinition.reportheaderarea
'建立乙個新的section,用來放置子報表
bosection
=new
'設定新節的名稱
bosection.kind ==
"reportheaderforsub1"'
設定節物件寬度。注意1cm=567緹,可自行調整,此處為20cm
bosection.width
=567*20
'待載入的子報表
strsubrptfile ="
e:/crquestions/addsubreportruntime/forsub1.rpt"'
將section加到reportclientdocument
boreportclientdocument.reportdefcontroller.reportsectioncontroller.add(bosection, boarea, -1
)'匯入子報表,ss1是子報表物件在主報表上的名稱
bosubreportclientdocument
=boreportclientdocument.subreportcontroller.importsubreport(
"ss1
", strsubrptfile, bosection)
'----------------------------------------
'如果要進行資料、引數、公式操作,請在此處對子報表bosubreportclientdocument 進行操作
'----------------------------------------
'重新整理viewer
crystalreportviewer1.reportsource
=boreportdocument
end sub
end class
c#版本(winform):
using
system;
using
system.windows.forms;
using
crystaldecisions.shared;
using
crystaldecisions.windows.forms;
using
crystaldecisions.crystalreports.engine;
using
using
namespace
public
partial
class
form1 : form
private
void
form1_load(
object
sender, eventargs e)}}
Grid Report 報表動態使用
1.使用報表設計器新增你要的記錄集和標題行 內容行等內容 2.載入時 gri report subreport new gri report 建立個報表物件 3.建立個構造類 private struct matchfieldpairtype 4.載入報表檔案並新增個fetchrecord 事件 s...
水晶報表中動態新增字段
水晶報表中,因為資料來源的字段是不固定的,可否在執行時動態新增字段,就象在winform中動態新增控制項一樣?更新 2003 11 05 解決方案 用 公式字段 1 根據欄位的最大數量,定義若干個 公式字段 formulafeild1 formulafeild2 公式為空 2 把 公式字段 按順序放...
如何在水晶報表中動態新增字段
問題 水晶報表中,因為資料來源的字段是不固定的,可否在執行時動態新增字段,就象在winform中動態新增控制項一樣?更新 2003 11 05 解決方案 用 公式字段 1 根據欄位的最大數量,定義若干個 公式字段 formulafeild1 formulafeild2 公式為空 2 把 公式字段 按...