Pages

Subscribe:

Ads 468x60px

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.EngineCrystalDecisions.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()
寫入EXCEL資料夾權限部分要設定,將網站資料夾的「安全性」開放給ASPNET, 否則會出現 拒絕存取報表檔。其他程式可能正在使用該檔案錯誤
因為我的OSXP, 如果登入者非網域帳號時在設定資料夾權限時會找不到安全性頁籤此時要進"控制台-->資料夾選項-->檢視à使用簡易檔案共用(建議選項)”前方的打勾勾掉不要選頁籤就會出現了
如果出現 匯出 DLL 偵測到錯誤” , 可能是OS修補檔SP2的問題可以參照JOHOYA的作法C:Program FilesCommon FilesCrystal Decisions1.0Bin底下的ExportModeller.dll(9.1.1.527換成9.1.1.528
(我測試的結果是就算是改成英文語系灌了修補檔那個9.1.1.528版的ExportModeller.dll還是出不來無法只好去網路上下載)

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.進入印表機設定。


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部落格與無名部落格,過去曾經是愛用者,後來慢慢不認識你,雖然日後將會重新在中華電信出現,但是維護的動力還是取決於使用況狀。

這或許是市場法則吧!!

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...