2013年9月22日 星期日
2013年9月17日 星期二
水晶報表使用法
最近接到的案子是用.NET 2003+Crystal Report, 用水晶報表不是第一次了,
這次把所學到讀到的筆記整理下來, 讓之後的自己可以參考
當然, 也謝謝敎我, 幫我debug的同事b大囉
建立步驟:
1. 建立水晶報表的模板
在專案中按右鍵à加入新項目à Crystal Reportà加入一個空白報表, 並設計出自己想要的格式
2. 建立資料集
在專案中按右鍵à加入新項目à資料集à加入一空白資料集
點進該資料集, 將報表所要顯示的資料表結構定義在此(最簡單的方法即是利用伺服器總管, 直接拖拉出想要的資料表結構定義, 再慢慢調整)
資料集中的皆只是資料結構定義, 非實體的資料, 用處在於將此資料定義放入水晶報表的模板中, 實體的資料會在程式中即時run出來
3. 在水晶報表中放置資料欄位
回到水晶報表, 點開後, 在左方的”欄位總管” 定義該報表的資料來源為2.的資料集(如下圖一, 二)
作法: 按右鍵à新增/移除資料庫, 在”更多的資料來源”àADO.NET(XML)à建立新的連結 按兩下, 會跳出一視窗讓我們輸入XML檔路徑, 在此輸入2.做好的XSD檔的路徑
做好後, 在”資料庫欄位”節點下就會顯示出剛剛連好的資料集, 我們就可以使用該資 料集下的欄位囉(用法:直接將要顯示的欄位拖拉至報表中所想要顯示的位置)
做好後, 在”資料庫欄位”節點下就會顯示出剛剛連好的資料集, 我們就可以使用該資料集下的欄位囉(用法:直接將要顯示的欄位拖拉至報表中所想要顯示的位置)
4. 在AP中寫程式連結報表
再網頁中拖拉進一個CrystalReportViewer跟一個DataGrid
在Page_Loa中寫下列程式連結報表
(要先引入CrystalDecisions.CrystalReports.Engine跟CrystalDecisions.Shared這兩個命名空間)
Dim myconn As SqlConnection = New SqlConnection("Server=SERVER;Database=DB;UID=User;PWD=;")
Dim cmd As New SqlCommand
Dim conn As String
myconn.Open()
'先將資料撈出顯示於Gridview
Dim sql As String
sql = "Select UserID from TSUser where UserId <='008'"
cmd.CommandText = sql
cmd.Connection = myconn
Dim ds As New DataSet
Dim adp As New SqlDataAdapter
adp.SelectCommand = cmd
adp.Fill(ds)
Me.DataGrid1.DataSource = ds
Me.DataGrid1.DataBind()
'將資料顯示於水晶報表
Dim MyReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
MyReport.Load(Server.MapPath("CrystalReport2.rpt"))
Dim i As Integer
MyReport.Database.Tables.Item(0).SetDataSource(ds.Tables(0))
Me.CrystalReportViewer1.DisplayGroupTree = False
Me.CrystalReportViewer1.ReportSource = MyReport
Me.CrystalReportViewer1.DataBind()
5. 存檔, 執行
就會發現報表已順利產生出來囉
6. 將報表轉成EXCEL
程式寫法:
將
‘顯示於網頁
Me.CrystalReportViewer1.DisplayGroupTree = False
Me.CrystalReportViewer1.ReportSource = MyReport
Me.CrystalReportViewer1.DataBind()
換成
'輸出成EXCEL
Dim diskOpts As CrystalDecisions.Shared.DiskFileDestinationOptions = New CrystalDecisions.Shared.DiskFileDestinationOptions
MyReport.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile
MyReport.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel
'設置磁碟選項
diskOpts.DiskFileName = "D:rpt_testcoffee_rpt.xls"
MyReport.ExportOptions.DestinationOptions = diskOpts
MyReport.Export()
將
‘顯示於網頁
Me.CrystalReportViewer1.DisplayGroupTree = False
Me.CrystalReportViewer1.ReportSource = MyReport
Me.CrystalReportViewer1.DataBind()
換成
'輸出成EXCEL
Dim diskOpts As CrystalDecisions.Shared.DiskFileDestinationOptions = New CrystalDecisions.Shared.DiskFileDestinationOptions
MyReport.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile
MyReport.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel
'設置磁碟選項
diskOpts.DiskFileName = "D:rpt_testcoffee_rpt.xls"
MyReport.ExportOptions.DestinationOptions = diskOpts
MyReport.Export()
寫入EXCEL時, 資料夾權限部分要設定,將網站資料夾的「安全性」開放給ASPNET, 否則會出現” 拒絕存取報表檔。其他程式可能正在使用該檔案”錯誤
因為我的OS是XP, 如果登入者非網域帳號時, 在設定資料夾權限時會找不到”安全性”頁籤, 此時要進"控制台-->資料夾選項-->檢視à將”使用簡易檔案共用(建議選項)”前方的打勾勾掉不要選, 頁籤就會出現了
如果出現” 匯出 DLL 偵測到錯誤” , 可能是OS修補檔SP2的問題, 可以參照JOHOYA的作法, 將C:Program FilesCommon FilesCrystal Decisions1.0Bin底下的ExportModeller.dll(9.1.1 .527版) 換成9.1.1.528版
P.S.水晶報表模版也可以直接連資料庫
如果直接連的話, 就要在程式中再指定資料庫連線字串
但這樣的作法只能直接撈出該資料表所有的資料, 無法照自己的意思只顯示自己要的資料
'將資料顯示於水晶報表
Dim MyReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim logOnInfo As New CrystalDecisions.Shared.TableLogOnInfo ‘連結資料庫
MyReport.Load(Server.MapPath("CrystalReport2.rpt"))
Dim i As Integer
‘指定資料庫連結資料
logOnInfo.ConnectionInfo.ServerName = "ServerName"
logOnInfo.ConnectionInfo.DatabaseName = "DatabaseName"
logOnInfo.ConnectionInfo.UserID = " UserID"
logOnInfo.ConnectionInfo.Password = " Password "
MyReport.Database.Tables.Item(0).ApplyLogOnInfo(logOnInfo)
Me.CrystalReportViewer1.DisplayGroupTree = False
Me.CrystalReportViewer1.ReportSource = MyReport
Me.CrystalReportViewer1.DataBind()
資料來源
點矩陣印表機:中一刀設定方式
現在公司行號應該很多都是用點矩陣印表機,幾乎會使用報表(中一刀格式),
這邊就教大家怎麼設定中一刀格式!
XP設定方式:(Win2000類似)
1.點選【開始】→【設定】→【印表機和傳真】,如圖1所示。
1.點選【開始】→【設定】→【印表機和傳真】,如圖1所示。
圖1.進入印表機設定。
2.點選功能列的【檔案】→【伺服器內容】,如圖2~3所示。
圖2.選擇伺服器內容。
圖3.列印伺服器 內容。
3.依順序輸入下列設定值:
一、在「建立新格式」框框打勾
二、在「格式名稱」輸入:中一刀
三、選擇「英制」
四、在「寬度」輸入:8.5,「高度」輸入:5.5
最後再按下「確定」即可,如圖4所示。
圖4.輸入「中一刀」設定值。
4.選擇要使用中一刀格式的印表機,按右鍵選擇「列印喜好設定(E)....」,如圖5所示。
圖5.選擇要使用中一刀格式的印表機。
5.選擇「進階」,如圖6所示。
圖6.列印喜好設定畫面。
6.將原本「紙張大小」:A4,改成「中一刀」格式,在「﹀」(黃色箭頭)按一下,如圖7~8所示。
圖7.更改「紙張大小」。
圖8.改成「中一刀」格式。
圖9.確定「紙張大小」:中一刀。
8.最後執行進銷存軟體,並指定這一台印表機即可!
PS:「中一刀」紙張大小,剛好是A4的一半。
資料來源:
2013年9月16日 星期一
Calm9: 第一次使用電子發票就中獎
Calm9: 第一次使用電子發票就中獎: 今天統一發票開獎了,我的電子發票中了一張六獎的: 這是我從四月開始用電子發票以來,頭一次對獎就中了統一發票!!既然中獎了,那就註定要來寫這篇文章 (雖然只是中了 $200 元)。 話說財政部的「電子發票」從 2006 年推行到現在已經很久了,一直到去年...
Calm9: vCard 與 QRcode 條碼掃描器 App 功能比較
Calm9: vCard 與 QRcode 條碼掃描器 App 功能比較: 國外有愈來愈多的名片設計是在名片中加入 QRcode,讓使用智慧手機的人可以直接將名片上的聯絡資料加到手機的聯絡人。 這種 QRcode 的內容格式稱為 vCard 。
2013年9月7日 星期六
告別Yahoo部落格與無名部落格
親愛的朋友
由於Yahoo已經宣布將要終止Yahoo部落格與無名部落格的服務
感謝這麼多年來提供這麼好的服務,但是慢慢的有更好的出現,所以就換到別個地方去。
至少我是如此
呵呵...
這完全沒有忠誠度,只是純粹的使用狀況。
我有新設中華電信的部落格,但是未來還是會以Google部落格為主
請未來各位親朋好友踴躍棒我宣傳...
再會啦!Yahoo部落格與無名部落格,過去曾經是愛用者,後來慢慢不認識你,雖然日後將會重新在中華電信出現,但是維護的動力還是取決於使用況狀。
這或許是市場法則吧!!
由於Yahoo已經宣布將要終止Yahoo部落格與無名部落格的服務
感謝這麼多年來提供這麼好的服務,但是慢慢的有更好的出現,所以就換到別個地方去。
至少我是如此
呵呵...
這完全沒有忠誠度,只是純粹的使用狀況。
我有新設中華電信的部落格,但是未來還是會以Google部落格為主
請未來各位親朋好友踴躍棒我宣傳...
再會啦!Yahoo部落格與無名部落格,過去曾經是愛用者,後來慢慢不認識你,雖然日後將會重新在中華電信出現,但是維護的動力還是取決於使用況狀。
這或許是市場法則吧!!
2013年9月3日 星期二
Jacek Fedoryński's blog: NXT Drawbot
Jacek Fedoryński's blog: NXT Drawbot: When I saw this drawbot , I immediately thought it was something I should be able to recreate with Lego Mindstorms. And so I did. The idea i...
Jacek Fedoryński's blog: Sonar
Jacek Fedoryński's blog: Sonar: This is my first Mindstorms robot. It rotates around the vertical axis while gathering data from the ultrasonic sensor. Every time it makes ...
Jacek Fedoryński's blog: Music Tape Player
Jacek Fedoryński's blog: Music Tape Player: My second NXT creation is a music player that uses the color sensor to read notes from tape. The notes are encoded using colors. I consi...
Jacek Fedoryński's blog: Line Following Robot
Jacek Fedoryński's blog: Line Following Robot: Everyone with a Lego Mindstorms set must at some point build a line following robot. Here's mine. The trick to following a line when...
Jacek Fedoryński's blog: Face tracking robot
Jacek Fedoryński's blog: Face tracking robot: Android 4.0 introduced an API for face detection. It's really simple to use, you only have to set up a listener and it gets called each ...
Jacek Fedoryński's blog: NXT Remote Control
Jacek Fedoryński's blog: NXT Remote Control: Two of my favorite toys right now are my Lego Mindstorms set and my Android phone. And thanks to the Bluetooth protocol I've found a way...
2013年9月2日 星期一
訂閱:
文章 (Atom)