水晶報表在應用時分兩種方法,分別是拉模式(
pull
)、推模式(
push
)。拉模式:在水晶報表生成時的資料來源是從水晶報表檔案中的
sql語句從資料庫中提取的,在程式設計時不用重寫
sql語句,但要加上登入資訊(具體方法,後面介紹)。
推模式:在水晶報表生成時的資料來源,是用程式設計時重寫水晶報表中
sql語句而生成的
dataset
對像。也就是說,推模式是用
dataset
組裝水晶報表。
水晶報表元件介紹。
水晶報表在
vs2005
中有兩種元件,在
web專案是分別是
crystalreportsource
,crystalreportviewer
。在form
專案裡是分別是
crystalreport
,crystalreportviewer
。crystalreportsource
,crystalreport
是水晶報表的資料提供者;
crystalreportviewer
是水晶報表的瀏覽器。另外還要介紹一下水的報表的檔案是以
rpt為副檔名的檔案,該檔案可以用
vs2005
、vs2008
生成。下面分別介紹具體操作方法:
第一種----
拉模式(
pull
):在拉模式中如要在水晶報表中的
sql語句加上條件引數時要用
方式給出。例:
「select t1, t2, t3 from t wheret1=''''」 parm
就是引數名
以下例子中所用到的水晶報表檔案中使用的
sql語句是
「select t1, t2, t3 from t wheret1=''''」 parm
就是引數名。
【web
方式下】
using crystaldecisions.shared;
using crystaldecisions.crystalreports.engine;
//////
功能:拉模式提取水晶報表
///個人主頁:
//////
///protected void button_pull_click(object sender, eventargs e) 【
form
方式下】//在
form
方式下**同
web方式,用
crystalreport
控制項換掉了
crystalreportsource
;用crystalreportviewer
換掉了crystalreportviewer
;這兩個控制項都可以在工具箱裡找到。同時在程式設計時去掉
databind()
方法。private void form1_load(objectsender, eventargs e)
第二種------
推模式(
push
):在推模式中程式設計組裝的
dataset
裡的sql
語句中的字段要與水晶報表裡的
sql語句字段一致。簡單的說,推模式中的水晶報表是個模板,把在設計器裡報表的格式設好後,再組裝
dataset
就可以生成報表了。
【web
方式下】
using crystaldecisions.shared;
using crystaldecisions.crystalreports.engine;
using system.data.sqlclient;
protected void button_push_click(objectsender, eventargs e)
中的引數可以不用賦值,即使賦了值也不起作用。
"parm"].currentvalues.addvalue("1234567");
crystalreportsource1.reportdocument.parameterfields["title"].currentvalues.addvalue("
這時推模式的報表樣例!
");crystalreportsource1.databind();
crystalreportviewer1.reportsource = crystalreportsource1;
crystalreportviewer1.databind();}
【form
方式下】
private void form1_load(object sender, eventargs e)
中的引數可以不用賦值,即使賦了值也不起作用。
"parm"].currentvalues.addvalue("1234567");
crystalreport1.parameterfields["title"].currentvalues.addvalue("
這時推模式的報表樣例!
");crystalreportviewer1.reportsource = crystalreport1;}
下面我說一下
push
的優勢。
1:可以公用系統資料庫連線,減少資料庫連線損耗
2:可自由組合多資料來源(如多資料庫等),這一點
pull
模式也可以實現,但是不如這個方便
3:靈活多變
。靈活多變的說法,是因為由於我們是把資料獲取後,再
push
給水晶報表的,那麼在這個中間,就有很多資料再加工的可能性。
水晶報表內功心法 推拉之間
水晶報表動態表擴充套件 之 任意無關聯表,任意列,任意資料來源 水晶報表動態表擴充套件 之 任意sql及任意有關聯表,任意列 及其他 好了,總結一下 1 cs模式或小型系統,建議用pull模式,大型bs系統,建議用push模式。但這不是絕對的,可以根據實際情況混用。如果是大資料量的清單類的報表,建議...
水晶報表內功心法 推拉之間
水晶報表程式控制上有兩種模式,也就是傳說中的pull模式和push模式。口語化點就是拉模式和推模式。把這個放在最開始講,是因為模式的選擇,會影響到後續的開發。特別是看到一些使用者,把兩種模式的 裡捏在乙個過程裡,出了錯誤,都不知道怎麼去除錯。本文將講解兩種模式的基本原理,區別,以及各自的優缺點,還有...
水晶報表內功心法 推拉之間
索引 水晶報表內功心法 序言 水晶報表動態表擴充套件 之 任意無關聯表,任意列,任意資料來源 水晶報表動態表擴充套件 之 任意sql及任意有關聯表,任意列 及其他 好了,總結一下 1 cs模式或小型系統,建議用pull模式,大型bs系統,建議用push模式。但這不是絕對的,可以根據實際情況混用。如果...