水晶報表 推模式

2022-05-09 21:56:12 字數 1237 閱讀 5016

問題由來:

公司換新系統,過渡期要和老系統共存,原報表使用odbc資料來源,因只有一台伺服器,所有新系統報表不能再使用odbc資料來源了,(兩個系統的報表不能使用同一伺服器odbc資料來源)

解決方案:方案一,修改新系統水晶報表的資料來源,改為oledb方式。

方案二,修改水晶報表資料來源為推模式,在程式中動態設定資料來源。

部分報表使用了方案一,適用於資料量大,頁數多的報表。(財務報表)

因為方案一需要修改每個報表的資料來源,設定過於麻煩,而公司的報表檔案過多,每個系統近百個報表。有5、6個系統,而且方案一太不靈活。所以針對資料量小的使用方案二。

經過幾天查詢資料測試,終於執行通過。

大概分兩種方式:reportdocument物件,report資料來源控制項。

report資料來源控制項適用於預覽,reportdocument物件更加靈活,但是為什麼不能動態設定資料來源?出現未將物件引用設定到物件的例項。

report資料來源控制項crystalreportsource1.reportdocument作為引數發郵件等偶爾會出現莫名其妙錯誤。

以下:reportdocument rd = new reportdocument()

case "manifest":

rd.recordselectionformula = sb.tostring();

crystalreportsource1.reportdocument.recordselectionformula = sb.tostring();

//第四步:繫結控制項

crystalreportviewer1.reportsource = crystalreportsource1;

= rd;//未將物件引用設定到物件的例項。

// crystalreportviewer1.databind();

me.showpdfreport(crystalreportsource1.reportdocument);

// me.showpdfreport(rd);

public dataset getrddatamainfest(string siteid, string kid)

//對主報表和子報表追加資料來源。

public void setdatasource(dataset ds, reportdocument rd)

foreach (reportdocument subrd in rd.subreports)}}

補充,對於子報表引數新增,後面會用到時再來更新。

水晶報表的推模式

在乙個多層結構中,水晶報表的使用往往比較繁瑣 1 在專案中新增資料集,形成xsd檔案 2 利用xsd檔案,在水晶報表環境中生成報表 3 回到.net,新增rpt檔案 這樣做的壞處除了繁瑣,就是在ui層直接要訪問資料庫,將使得層次結構晚節難保。其實利用水晶報表的推模式,將很靈活的實現報表。思路是 事先...

水晶報表公式組合,推試顯示報表

舉例 現在有3張表 student表 course表 class 表 學號 姓名 班級id id 學號 所修課程 班級id 名稱 001 peter jd001 1 001 英語 jd001 文科班 002 sam jd001 2 001 語文 jd002 理科班 003 tony jd001 3 ...

水晶報表的PUSH模式

水晶報表一般分為pull模式以及push模式。pull模式是指使用控制項連線資料,push模式是指使用 的方式。由於進行編碼練習,所以也就沒有進行pull的嘗試。以下是乙個最簡單的水晶報表的push模式。1.rpt 報表模版 2.資料表結構 3.form樣式 控制項型別 crystalreportv...