close

winform & Fastreport 

 

由winform製作使用介面

再由fastreport繪製表格出來

 

fastreport必須先連接至資料庫

若使用的資料庫資料是屬於在不同資料表時

在fastreport上也必須join出一張新的表出來

不行使用多張表,然後一一拖拉出來當欄位(資料會有誤)

而在fastreport的新表名稱要記住!

要記住!

要記住!

因為很重要 要講三次

 

在winform裡的介面前端基本上不需要設定什麼

重點在後端的C#程式碼

 

 

//如果不需要在一個datatable中再次搜尋條件 即不用這段

var v = from r in dt.Rows.Cast<DataRow>()
            where r["Stay_day"].ToString() != "" && Convert.ToInt32(r["Stay_day"].ToString()) > Stay_day
            select r;

dt = v.CopyToDataTable();   //這邊為我存放資料的datatable

Report report = new Report();  //建立新的report

string path = Application.StartupPath + @"\Report\report.frx"//抓取winform資料夾裡可執行的檔案 (.exe檔) 基本上在根目錄裡的bin之中

report.Load(path);  //讀取檔案

report.RegisterData(dt, "Table");   //註冊report
                
report.Show();  //執行report (等同於fastreport中的ctrl+P)

 

=========我是分隔線=========

 

比較要注意的是fastreport上的設定

 

剛剛說fastreport上如果要join  那SQL語句也是不可馬虎

常用到的join語句中 我們常常會因為join因此改了原有的欄位名稱

 

假設現在下方有一段最簡單的join的方法

select abc from abc,cba where abc01 = cba01

當有需要時就必須把欄位名稱給了的話就會變成

select abc as "123" from abc,cba where abc01 = cba01  --(as可以刪除沒關西)

而在這邊的123 必須與後端C#的datatable的名稱一樣!(這地方的大小寫沒有關西 fastreport 扔然抓得到)

而且在fastreport也要預先把列印出來的畫面中的樣子設計好

(fastreport中的名稱如果有變動 Name屬性有改變的話 保險起見可以把介面中的欄位再重拉一次,

因為如果改變過 在datatable丟過去的時候可能會抓不到欄位)

 

再來就是剛剛說的join 出來的table名字為什麼要記住

因為在註冊report的時候  後方有一個雙引號中的名稱  是要跟你在fastreport的join表格名字

要一模一樣!

一模一樣!

一模一樣!!

 

不然他會說找不到表格  會註冊失敗  會沒辦法繪製圖表!

 

(下台一鞠躬)

arrow
arrow
    文章標籤
    fastreport winform C#
    全站熱搜
    創作者介紹
    創作者 Jungle 的頭像
    Jungle

    姜勾 的隨手記錄冊

    Jungle 發表在 痞客邦 留言(0) 人氣()