發表文章

目前顯示的是有「Crystal Report報表開發」標籤的文章

Crystal Report報表開發(11)_透過Crystal Report 9報表設計軟體去跟資料庫資料做綁定

圖片
  每一天的累積都是未來的一大步... 在歷史故事或小說中,特別是在傳統的武俠小說中,常常有類似於到特定地點修行或學習以獲得特定武功技能的情節,就好比在不同公司工作可以學到不同的技能和經驗。 比方金庸的武俠小說《射雕英雄傳》中的主角郭靖先後歷經了 江南七怪傳授的基礎武功,跟洪七公學到降龍十八掌。 從黃蓉那裡間接學到了九陰真經。 在絕情谷中從老頑童周伯通那裡學到的空明拳。 隨後還有陸續跟丐幫接觸到打狗棒法等武術,每一位師傅教他不同的技巧。 基本上每一天工作不管學到捨麼程式語法技能, 每次在實際工作中施展出來就很像使用了某一招武功秘笈。 也可以讓工作過程保有一點儀式感跟熱忱,就很像打電動發出特殊絕招。 接續之前篇章-原先的前七篇篇章(水晶報表七日成蝶) 基本上因為在之前公司接觸到的水晶報表設計開發模式 都是針對visual studio 針對C#/vb.net搭配的開發設計情境 講白話一點就是你可能要在runtime時候都出一個類似DataTable等datasource元件之類透過程式碼方式回填到報表中。 Crystal Report報表開發(一)_專案配置 Crystal Report報表開發(二)_基礎操作排版對齊_基本組成部分介紹 Crystal Report報表開發(三)_綁定資料庫資料源_動態參數傳入 Crystal Report報表開發(四)_報表欄位的自動換行與自動編號 Crystal Report報表開發(五)_每張報表表頭表尾顯示差別_調整區段自動縮放技巧 Crystal Report報表開發(六)_每頁限制細目顯示資料列數 Crystal Report報表開發(七)_缺列補空白_Runtime參數設置_公式設置_避免多浪費空白頁的後端程式修正 看起來七日好像還不太能成蝶XDD Crystal Report其實已經有段時間了也是滿多公司在用的 當然也有些公司若用.net (C#,vb.net)會藉由類似像 pdfsharp 或是 iTextSharp 匯出pdf報表方式 或透過 RDLC  ,若是node.js開發者則可能藉由 pdfkit 。 上述都是在之前篇章有介紹過的常見pdf報表匯出功能solution 不過不得不承認 水晶報表功能真的是滿強大 在後續的篇章中(由於近期公司用到的報表開發模式比較不一樣) 要下載獨立一套c...

Crystal Report報表開發(十)_Crystal Report列印中文字體跑出亂碼異常

圖片
將該報表欄位字體嘗試從Times New Roman改成新細明體即可 Work Around方式(適用於功能還沒辦法立即上線) 有些出貨列印不能等的情況可先用此招 請使用者匯出用RTF(類似word)存出來後字體會正常 之後再將該RTF檔案另存成PDF 實測就OK Ref: Crystal Reports 2008, PDF export, Chinese Characters are not visible for Arial Font https://stackoverflow.com/questions/32478586/crystal-reports-2008-pdf-export-chinese-characters-are-not-visible-for-arial-f VB調用水晶報表轉換成Pdf https://www.twblogs.net/a/5b83b1392b71777a2efcef49 列印成績表中文字出現亂碼, 急! https://forum.hkedcity.net/index.php?threads/%E5%88%97%E5%8D%B0%E6%88%90%E7%B8%BE%E8%A1%A8%E4%B8%AD%E6%96%87%E5%AD%97%E5%87%BA%E7%8F%BE%E4%BA%82%E7%A2%BC-%E6%80%A5.47186/ 報表中,學生名字出現亂碼問題 https://forum.hkedcity.net/index.php?threads/%E5%A0%B1%E8%A1%A8%E4%B8%AD%EF%BC%8C%E5%AD%B8%E7%94%9F%E5%90%8D%E5%AD%97%E5%87%BA%E7%8F%BE%E4%BA%82%E7%A2%BC%E5%95%8F%E9%A1%8C.146159/ 解決Crystal Reports 8.5轉PDF中文出現亂碼情形 https://suya081212.pixnet.net/blog/post/27509438 Adobe PDF 印表機的另一個選擇 https://rainmakerho.github.io/2021/08/27/AdobePDF-Writer-Alternative/ CrystalReports水晶报表开发中遇到的问题 https...

Crystal Report報表開發(九)_將靜態 OLE(Object Linking and Embedding)物件轉換成點陣圖影像物件

將靜態 OLE 物件轉換成點陣圖影像物件 以滑鼠右鍵按一下插入的靜態 OLE 物件,然後從快速鍵功能表中選擇 [轉換圖片物件]。 即顯示 [轉換] 對話方塊。 在 [物件類型] 清單中選取 [調色盤圖片],然後按一下 [確定]。 您剛把靜態 OLE 物件轉換成可修改的 OLE 物件。 註記 如果原始的檔案是中繼檔,這個選項就不會顯示。 https://help.sap.com/docs/SAP_CRYSTAL_REPORTS/dfc124becfa845ffa91b1e717b20e3ec/476ddc876e041014910aba7db0e91070.html?version=2016.4 在剛轉換過的物件上按一下右鍵。 快速鍵功能表上的命令現在變成「點陣圖影像物件」。 連按兩下該物件。 Microsoft Paint 或安裝在電腦上的其他圖形應用程式即開啟。 就地編輯 就地編輯是指在 OLE 容器應用程式 (例如 Crystal Reports) 中變更 OLE 物件屬性的能力。容器應用程式的功能表項目會改提供伺服器應用程式的編輯工具,以方便您進行變更。 當 OLE 物件放置到報表中時,物件會變成報表的一部份。若要編輯物件,請連按兩下物件,然後使用物件原始應用程式中的編輯工具,或使用允許就地編輯的類似應用程式的編輯工具,來修改該物件。只有在電腦上安裝了對應的伺服器應用程式,才可以編輯 OLE 物件。就算沒有安裝伺服器應用程式,也可以檢視並列印包含 OLE 物件的報表。 OLE 與插入圖片命令 使用 [插入] 功能表上的 [OLE 物件] 命令將圖片置於報表中時,圖片會轉換成與 Microsoft 小畫家 (或其他的影像編輯應用程式) 相關的嵌入或連結物件。 使用 [插入] 功能表上的 [圖片] 命令將圖片置入報表中時,[Report Designer] 會把它們轉換成靜態物件。 靜態物件無法編輯。若要編輯靜態物件,必須先使用 [編輯] 功能表上的 [轉換] 命令,把靜態物件轉換成可編輯的物件類型。 OLE 名詞 OLE 是由 Object Linking and Embedding 開頭字母組成。它是指建立複合文件的能力;複合文件也就是包含其他應用程式之元素的文件,且這些元素可使用原始應用程式來編輯。 OLE 物件 廣義而言,OLE 物件是其他應用程式所建立的...

Crystal Report報表開發(八)_The maximum report processing jobs limit configured by your system administrator has been reached.

圖片
  最近由於需要在大量rpt檔案中去search是否有要替換的關鍵字 簽名字有一些人員職務調整就更換人員名稱 但尷尬的是報表檔裡面人名是直接寫死的.....>~< 而誕生需要寫這段程式的小需求 為何要寫程式盤點? 因為rpt檔案數量大概有300個吧每一個都一個個打開來盤點大概2~3天就過去了 而且下次又有類似需求 你要花一樣多時間甚至更久...... 在此用vs2008來開發 水晶報表的小程式 創建好的winform專案 直接跑 using System ; using System.Collections.Generic ; using System.ComponentModel ; using System.Data ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Windows.Forms ; using System.IO ; using CrystalDecisions.CrystalReports ; using CrystalDecisions.CrystalReports.Engine ; using CrystalDecisions.ReportAppServer ; using CrystalDecisions.ReportSource ; namespace CrystalReportFilterTool { public partial class Form1 : Form { public Form1 () { InitializeComponent(); //Control.CheckForIllegalCrossThreadCalls = false; /* for (int i = 1; i <= 100; i++) { this.textBox1.Text += "item." + i.ToString(); ...

Crystal Report報表開發(七)_缺列補空白_Runtime參數設置_公式設置_避免多浪費空白頁的後端程式修正

圖片
  在很久之前由於接獲需要用水報翻升廠內用ActiveX舊版報表程式 因而遇到有點挑戰的報表程式設計 特徵: 有格子框住頁首頁尾 每頁20筆(缺列補空白) 轉用水晶報表 有格子框住頁首頁尾 ==>可插入方塊 問題1.每頁20筆(缺列補空白) 這裡就先解決空白列問題,由於Crystal Report 設定細目(詳細資料) 資料源頭時候,主要透過ReportDocument物件SetDataSource的 方法,其中一個overload型態可以Assign DataTable。 這裡自定義一個回傳DataTable的Function,命名為 GetTableWithInSufficientEmptyRow (考量到當只有一頁或不只一頁的問題) 傳入原本兜好資料的DataTable(可能11筆or55筆這種...剛好不足 每頁預顯示的基數的) 傳入每頁預指定顯示的資料筆數(目前驗證 當每頁水晶報表只有一個Grid時候最大可設到22,這裡設定20)==>設定每頁顯示列數請參考上一篇針對細目的公式設定 程式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ''' <summary> ''' 自動湊滿每頁N筆,缺列補空白列 ''' </summary> ''' <param name="tbGridData"></param> ''' <param name="RowCountEachPage"></param> ''' <returns></returns> Function GetTableWithInSufficientEmptyRow (tbGridD...

Crystal Report報表開發(六)_每頁限制細目顯示資料列數

圖片
  每頁限制細目顯示資料列數 限制每一頁每隔15個資料就換頁 這裡模擬當資料有到達55筆的情況,由於目前 測資from真實案例的只有11列,因此後端暫時用Merge先連續5次。 公式編輯:對細目右鍵 -> 區段專家 -> 選細目 -> 切分頁 -> 在之後新增分頁(X-2)  ->  編寫如下公式 (在寫好後存檔就會變成紅色代表已經套用至報表) if RecordNumber mod 15 =0 and OnLastRecord=false then  true 最終效果 控制每頁顯示多少列,還是會有頁面空間限制!! 這裡Try 每頁若只有單一個表格包含頁首頁尾,最大限制可以到每一頁顯示22列空間 這裡將公式中的15改為30 結果 第一頁顯示22筆隨後的8筆被編排到第二頁去了 這裡在安排報表距離時候也要注意記得拉好適當距離並且右鍵調整區段來進行空間縮放的調適 比如下方是有留多餘空間的時候 會使每頁限制列數機制失真 。

Crystal Report報表開發(五)_每張報表表頭表尾顯示差別_調整區段自動縮放技巧

圖片
  Crystal Report 中分為這些基本區段 Section1. 報表首 ( 放置於此內容只會在第一張出現 ) Section2. 頁首 ( 每一頁開頭都會出現 , 適合資料表頭和其他 Title 內容 ) Section3. 細目 ( 每一頁都會出現 , 適用於每一列資料內容呈現 ) Section4. 報表尾 ( 放置於此內容只會在 最後一 張出現 ) Section5. 頁尾 ( 每一頁底部都會出現 ) 以收驗單樣板為例 目前每一張上限為20筆,每張都會有黃色標註的上下區塊。 這裡的資料是水晶報表預設自動串出的系統 因此在報表設計時報表首、報表尾皆不太會需要用到 且留太多空白會影響實際列印空間被壓縮 因此記得要縮短不留太大空白。 將要呈現的內容(LineObhect、TextObject、BoxObject)放置於頁首、頁尾即可, 這裡可對此兩個 section右鍵=>選擇調整區段自動縮放 不用自己去拉縮放空間喔!! (其餘Section如有類似要節省自動縮放列印剩餘空白也能用這招稍微調適一下) 最終效果 (PS:這裡顯示出來的資料也是水晶報表自動串出來模擬的非真實資料喔!!)

Crystal Report報表開發(四)_報表欄位的自動換行與自動編號

圖片
在 Crystal Report  中若要去顯示 表頭 ( 固定唯一的 Columns)                 ==> 是設置在 頁首 ( 大陸用語 : 頁眉  /  英文 :Page Header) ==> 拖放或自動產生的物件為 ITextObject 很多欄位 ( 會變動的 Data Row 內容 )==> 是設置在 細目 ( 大陸用語 : 詳細資料  /  英文 :Details Section ) ==> 拖放或自動產生的物件為 IFieldObject 頁首==>拖放或自動產生的物件為ITextObject 細目==>拖放或自動產生的物件為IFieldObject 若細目中某些欄位突然太多字而超出欄寬就可能出現被遮蔽or重疊的問題 效果如下(這裡尚未串資料) 目前顯示的是Crystal Report自動生成的演示用測資 所以看起來會感覺內容怪是正常的,已經開始有換行了只是超出格線。 Step1.至細目對該IFieldObject屬性修改GanRow 為True Step2.對細目Section進行區段專家的屬性設置(可從上面或直接右鍵點擊),放置在隨後區段勾選起來。 Step3.對線條或BOX的EXTENDTOBOTTOMSECTION為『True』,可以一個一個點對屬性設置,也可以用程式動態設置。 (備註:除了表頭的兩橫線之外,做了表頭就沒有橫格線了) 方法1.刻苦耐勞一個一個設置法 方法2.程式調整避開Header上半部分兩條 最終效果 自動編號 每列若要自動添加流水編號可直接在細目中增加一個[特殊欄位]->[資料錄編號]即可