水晶報表使用經驗總結

轉自
 
   http://blog.csdn.net/louisp/archive/2005/10/27/517621.aspx
 
 
資料:

Asp.Net中使用水晶報表(上)

www.dotnet8.com  2002-9-6  DotNet吧

 


這篇文章教你如何在.Net Web應用中使用水晶報表,也可以讓你在學習過程中少走一些彎路。爲了得到最好的效果,讀者最好需要有一些基礎

的Asp.Net訪問數據庫的知識以及使用VS.Net的開發經驗。

簡介 

水晶報表可以由很多的方法得到,其中一個就是使用VS.Net來創建,它提供了非常豐富模型以使我們能夠在運行時操作屬性和方法。如果你正

在使用VS.Net開發.Net程序,那麼你就不需要再安裝其它軟件了,因爲他已經內嵌在VS.Net中了。

 優點:

VS.Net水晶報表有下面一些主要的優點:

 快速的報表開發

 能夠導出成爲複雜的交互性圖表

 可以與其它控件一起在WebForm中使用

 能夠動態地將報表導出成爲.pdf,.doc,xls,html,rtf等多種格式  

結構:

 一些組件組成了水晶報表的二層結構,需要的Web應用有:

 客戶端 :

    客戶端僅需要一個可以訪問嵌入aspx頁面報表的遊覽器就可以了

 服務器 :

      - 水晶報表引擎(Crystal Report Engine (CREngine.dll))

    通過它可以完成一些任務,如在報告文件中合併數據,轉換報告爲其它格式等。也正是因爲報告引擎的作用,纔可以將Asp.Net中的水晶報

錶轉換成爲普通HTML格式

    - 水晶報表設計器(Crystal Report Designer (CRDesigner.dll))

    水晶報表就是在設計器中創建的,在設計器中你可以設計標題,插入數據,公式,圖表,子報表等。

     -  .rpt報表文件

    執行報表中的第一步就是在水晶報表設計器接口創建此報表,在默認安裝中微軟已經提供了一些現成的.rpt例子。

     -  Data Source

     .rpt文件取得數據庫的方法取決於你方法的選擇,你能選擇讓水晶報表自己選擇數據而不使用任何代碼或者也可以選擇手動的組裝

DataSet,然後再將其傳送到報表文件。

    - 水晶報表查看控件(Crystal Report Viewer web form Control (CRWebFormViewer.dll))

    水晶報表查看控件是一個WebForm控件,可以將它看成是一個在.aspx頁面中存放報表的容器。  注意:在一些複雜的操作中,報表服務器

與Web服務器可能不在同一物理主機上,Web服務器將HTTP請求傳送到報表服務器上去。水晶報表也可以當做WebService來執行。

 執行模式

水晶報表取數據可以使用下面的方法實現:

- Pull 模式:

 被請求時,水晶報表直接根據指定的驅動連接數據庫然後組裝這些數據。

- Push 模式 :

此時開發表不得不自己編寫代碼連接數據並組裝DataSet,同時將它傳送至報表。在些這種情況下,通過使用連接共享以及限制記錄集合的大小

,可以使用報表性能最大化。

   報表類型:

水晶報表設計器能夠直接包含報表至工程也能夠使用獨立的報表對象。

- Strongly-typed 報表 :

當你將報表文件加入到項目中去時,它就變成了一個了“ strongly-typed“報表。在這些情況下,你將擁有直接創建報表的對象的權力,這將

減少一些代碼並且能夠提供一些性能。

 - Un-Typed 報表 :

這裏的報表並不直接包含在項目中,因此稱爲‘un-typed’ 報表。在這種情況下,你不得不使用水晶報表的”ReportDocuemt“對象建立一個

實例,並且”手動“地凋用報表。

  其它注意事項

-        儘管水晶報表查看器擁有一些很酷的功能,如縮放、頁面導航等。但是他不提供打印功能,你不得不調用遊覽器的打印功能。

-         VS.Net中的水晶報表如果沒有註冊,那麼它只能使用30次,30次後,”保存“功能就不能再使用了。爲了避免這個,你不是不在

http://www.crystaldecisions.com/這裏註冊此產品。 (好像不是這樣子的,不註冊也好像能用很長的時間,只是不能提供支持)

-         默認安裝的水晶報表只能支持5個用戶,爲了支持更多的用戶,你不得不在 http://www.crystaldecisions.com/中購買許可證。

   

讓我們感受一下----在Asp.net中使用一個現成的水晶報表文件

  1) 從WebForm工具欄中拖動水晶報表查看器控件(Crystal Report Viewer)至.aspx頁面中。  

    

2) 調出水晶報表查看器控件的屬性窗口  

3) 點擊[...]按鈕查看"Data Binding"屬性,並彈出了DataBinding窗口。

4)  從左邊的"Bindable屬性”區中選擇“Report Source”

5) 選中"自定義綁定表達式"單選按鈕,在右邊的底部的窗口中指定.rpt文件的文件名和路徑,例如:"C://Program Files//Microsoft Visual

Studio.NET//Crystal Reports//Samples//Reports//General Business//World Sales Report.rpt",然後”確定“

   

注意:文件”World Sales Report.rpt“文件是在VS.Net安裝時創建的。如果你在安裝過程中指定了其它目錄,此時你最好確認一下路徑的正

確性。

上面的步驟中實際上是插入了下面這些代碼至Asp.Net文件中:

 

以及:

       

                  id="CrystalReportViewer1"

                  runat="server" Width="350px" Height="50px"

                  ReportSource=''>

       

注意:在飛刀我的VS.Net正式版中自動生成的代碼中ReportSource產生的樣式不是這樣子的,它是:

  ReportSource=""

這樣是錯誤的,會出現錯誤信息,有兩處錯誤:

必須按照使用本文介紹的格式來手動修改,這也算是VS.Net的一個Bug吧。

6) 在Page_Load方法中調用DataBind方法。(代碼爲VB.Net)

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

    DataBind()

End Sub

7)保存並編譯你的頁面。 現在,你就有一個內嵌水晶報表的WebForm頁面了。

注意:實際開發中,一開始會出現無法訪問inetsrv目錄的錯誤,解決的辦法是改變其目錄的安全屬性,使User用戶有可寫的權限。飛刀我發現

.Net系統自已給出的解決方法是沒有用的,也可能是我使用的是Windows.Net操作系統的原因。  

   

[/HTML]

 

 

 

 


 
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-10 23:04:53 得分:0 
 
 
 
Asp.Net中使用水晶報表(中)

www.dotnet8.com  2002-9-6  DotNet吧

 

[HTML]使用Pull模式

我們將通過下面的這些步驟來通過Pull模式來執行水晶報表

1.首先創建rpt文件,並使用水晶報表設計接口設置一些必須的數據連接。

2.拖放一個 CrystalReportViewer控件至aspx頁面,設置它的屬性指定我們上一步創建的.rpt文件。

3. 在代碼中調用DataBind方法。

創建 .rpt 文件:

1) 在右擊”解決方案遊覽器“,在彈出的菜單中選擇”添加“--”添加新項“-->”Crystal Report”  

 

2) 在”Crystal Report 庫”中選擇”作爲空白報表“單選按鈕,最後單擊“確定“。  

 

3)這裏將彈出水晶報表設計器。  

 

4) 右擊報表中的”詳細資料區”,選擇“數據庫”->“添加/刪除數據庫..."

5) 在彈出的”數據庫專家“中,擴展”OLE DB(ADO)“選項,此時會彈出另外一個”OLE DB(ADO)“窗口。

6) 在 "OLE DB (ADO)" 彈出窗口中,選擇 "Microsoft OLE DB Provider for SQL Server" 然後 "Next"

 

7) 指定連接的信息

服務器 : ASPCN (您的機器是什麼名字就寫什麼)

用戶 ID: sa

密碼:

數據庫 : Pubs

8) 單擊”Next“,最後單擊”Finish“按鈕。

9) 這時你就能在”數據庫專家“窗口中看到我們選擇的數據庫。

10) 擴展”Pubs“數據庫,擴展”表“,選擇”Stores“表並將其加到”選定的表“區中,單擊”OK"按鈕。

  

11) 現在在”字段資源瀏覽器“中就會在左邊”數據庫字段“區中顯示你選擇的表,以及表中的字段。

12) 拖放需要的字段進入報表的”詳細資料“區。字段名將會自動出現在”頁眉“區。如果你想修改頭部文字,則可以右擊”頁眉“區中的文

字,選擇”編輯文本對象“選項並進行編輯。

 

13) 保存,這樣我們就有了一個水晶報表文件。

創建 CrystalReportViewer 控件

14) 回到前面的WebForm中,拖放一個Crystal Report Viewer控件到頁面中去。

15) 調出Crystal Report Viewer控件的屬性窗口,選擇“DataBindings"區點擊[...]

16) ”Crystal Report Viewer 數據綁定窗口”中,在右邊的“可綁定屬性”中選擇”ReportSource“,並選擇右下角的“自定義綁定表達式

”中指定.rpt文件路徑。   

17) 此時你能夠從Crystal Report Viewer 控件中看到使用一些虛擬數據組成的報表文件的預覽。

  注意:在上面的例子中,CrystalReportViewer可以在設計時直接調用真實的數據,因爲此時數據已經保存。在這種情況下,設計時當沒有

保存數據時,他是不能顯示數據的。取而代這的是顯示一些虛擬的數據,只有在執行時纔會選取真實的數據。

Code Behind 程序設計

18) 在Page_Load方法中調用DataBind方法。

執行你的程序

19) 創建並運行你的程序!  

 

您現在就可以直接在Web頁面中使用水晶報表內置的一些功能,如頁面導航,縮放等。

[/HTML]

 

 

Asp.Net中使用水晶報表(下)

www.dotnet8.com  2002-9-6  DotNet吧

 

[HTML]我們採用下面的幾步使用Push模式執行水晶報表:

1. 設計一個DataSet

2. 創建一個.rpt文件同時將其指定給上一步建立的DataSet。

3. 在aspx頁面中拖放一個CrystalReportViewer控件同時將其與前面的rpt文件建立聯繫。

4. 在代碼中訪問數據庫並把數據存入DataSet

5. 調用DataBind方法。

 設計一個DataSet

1) 右擊“解決方案瀏覽器”,選擇“添加”--“添加新項”-->“數據集”

 

2) 從“服務器資源管理器”中的“SQL Server”中拖放“Stores”表(位於PUBS數據庫中)。

 

 

3) 此時在數據集中就會有一個Stores表的結構圖。

 

- .xsd文件中僅僅包含一個結構圖,但是不會有任何數據在裏面。

創建 .rpt 文件 :

4) 使用上面的介紹過的方法創建此文件,唯一的不同就是使用數據集來代替前面的直接連接數據。

5)建立.rpt文件之後,右擊“詳細資料”-->"添加/刪除數據庫“

6) 在”數據庫專家“窗口中,展開”項目數據“(代替以前的OleDb),展開“ADO.Net數據集”--"DataSet1“,選擇”Stores“表。

7) 將”Stores"表添加到“選定的表”中,點擊“OK”

 

 

 

8) 使用PULL模式下的方法,建立一個WebForm

建立一個Crystal Report Viewer 控件

9) 建立一個Crystal Report Viewer 控件,並設定其屬性,此處與PULL模式下是一致的。

Code Behind 代碼:

10) 在Page_Load方法中使用下面的子函數:

VB.Net代碼:

    Sub BindReport()

        Dim myConnection As New SqlClient.SqlConnection()

        myConnection.ConnectionString= "server= (local)/NetSDK;database=pubs;Trusted_Connection=yes"

        Dim MyCommand As New SqlClient.SqlCommand()

        MyCommand.Connection = myConnection

        MyCommand.CommandText = "Select * from Stores"

        MyCommand.CommandType = CommandType.Text

        Dim MyDA As New SqlClient.SqlDataAdapter()

        MyDA.SelectCommand = MyCommand

        Dim myDS As New Dataset1()

       '這就是我們在設計模式上使用的DataSet    

        MyDA.Fill(myDS, "Stores")  

        '你不得不使用與你前面DataSet相同名字。

        Dim oRpt As New CrystalReport1()

         ' 水晶報表綁定

        oRpt.SetDataSource(myDS)

         ' 設定水晶報表的ReportSource

        CrystalReportViewer1.ReportSource = oRpt

    End Sub

C#代碼:

private void BindReport()

{

    string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";

    CrystalReport1 oCR = new CrystalReport1();

    Dataset1 ds = new Dataset1();

    SqlConnection MyConn = new SqlConnection(strProvider);

    MyConn.Open();

    string strSel = "Select * from Stores";

    SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);

    MyAdapter.Fill(ds,"stores");

    oCR.SetDataSource(ds);

    this.CrystalReportViewer1.ReportSource = oCR;

}

 

注意:在上面的代碼中,你得注意一下oRpt是"Strongly Typed"的報表文件。如果你需要使用"UnTyped"報表,你得使用ReportDocument對象,

然後再調用報表文件。

 運行你的程序。

11) 運行你的程序

 

將報表文件導出成爲其它格式

 

你能夠將報表文件導出成爲下列格式:

             1. PDF (Portable Document Format)

1.                                 2. DOC (MS Word Document)

2.                                 3. XLS (MS Excel Spreadsheet)

3.                                 4. HTML (Hyper Text Markup Language – 3.2 or 4.0 compliant)

4.                                 5. RTF (Rich Text Format)

 

使用Pull模式導出報表

當導出使用Pull模式創建的文件時,水晶報表準確地打開所需要的數據,下面是執行導出功能的代碼:

 C#代碼:

VB.Net代碼:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim myReport As CrystalReport1 = New CrystalReport1()

      '注意:這裏我們建立一個strong-typed的水晶報表實例。

        Dim DiskOpts As CrystalDecisions.Shared.DiskFileDestinationOptions = New

CrystalDecisions.Shared.DiskFileDestinationOptions()

        myReport.ExportOptions.ExportDestinationType = CrystalDecisions.[Shared].ExportDestinationType.DiskFile

        ' 導出成爲其它文件時也需要這個選項

        ' 如Microsoft Exchange, MAPI等.       

        myReport.ExportOptions.ExportFormatType = CrystalDecisions. [Shared].ExportFormatType.PortableDocFormat

        '這裏我們導出成爲.pdf格式文件,你也能選擇上面的其它類型文件

        DiskOpts.DiskFileName = "c:/Output.pdf"

        '如果你不指定確切的目錄,那麼文件就會保存到[Windows]/System32目錄中去了

        myReport.ExportOptions.DestinationOptions = DiskOpts

        '水晶報表文件不包含直接的FileName屬性,因此你不能直接指定保存的文件名

        '所以你不得不使用DiskFileDestinationOptions對象,設置它的DiskFileName屬性

        '爲你想要的路徑,最後將水晶報表的DestinationsOptions屬性指定爲上面的DiskFileDestinationOption

        myReport.Export()

        '上面的代碼將完成導出工作。

End Sub

 

使用PUSH模式導出水晶報表

當導出的報表是由PUSH模式建立的時,第一步就是通過編程建立連接並組裝DataSet,設置報表的的SetDataSource屬性。再下面的步驟就有

Pull模式一樣的了。

[/HTML]


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-10 23:06:08 得分:0 
 
 
 
.NET環境下水晶報表使用總結

 

水晶報表是一個優秀的報表開發工具,本人在開發通用管理系統的時候,所有報表都使用水晶報表,其簡單、易用和強大的功能令筆者倍加喜

愛,現將水晶報表使用手記呈現給大家。

 

 

 

一、在使用自帶的水晶報表時,請註冊,否則只能使用30次

 

水晶報表註冊碼

註冊號:6707437608

密碼:AAP5GKS0000GDE100DS

 

 

 

二、使用CrystalReportViewer進行預覽

 

CrystalReportViewer控件允許在應用程序中查看 Crystal Report。ReportSource 屬性用於設置要查看哪個報表。該屬性設置之後,報表顯示

在查看器中。報表源可以是ReportDocument、報表文件的路徑,也可以是強類型報表。

 

1.      打開“工具箱”,並將一個 CrystalReportViewer 拖到窗體上,我們命名爲rptVew。

 

2.      通過拖放操作將 Windows 窗體查看器調整到希望的大小並將其移動到所需位置。

 

3.      當運行應用程序時,報表將顯示在查看器中。

 

三、創建新報表

 

1.      指向“添加”,單擊“添加新項”。

 

2.      在“添加新項”對話框中,從“模板”區域選擇 Crystal Report,將報表命名爲rptClient,單擊“打開”。

 

3.      在 Crystal Report 庫中,選擇下列選項之一:

 

·         使用報表專家 — 指導您完成報表的創建過程,並將您的選擇添加到 Crystal Report Designer。

 

·         作爲空白報表 — 打開 Crystal Report Designer。

 

·         來自於現有的報表 — 創建新報表,它與指定的另一報表設計相同。

 

注意   Crystal Report 庫包含許多專家,可以指導您完成數個特定類型報表的創建工作。您可能希望使用專家來創建最初的報表,以確定哪

種報表構造方法適合您的需要。

 

4.      單擊“確定”按鈕。

 

如果選擇使用“報表專家”,便會出現“報表專家”對話框,並帶有數據資源管理器。爲每個文件夾選擇所需數據,完成“報表專家”選項卡

界面上的操作,然後單擊“完成”來訪問 Crystal Report Designer 和您的報表

 

四、是否需要動態設置數據源?

 

Crystal Reports 通過數據庫驅動程序與數據庫連接。每個驅動程序都被編寫爲可處理特定數據庫類型或數據庫訪問技術。

 

拉和推模型

爲了向開發人員提供最靈活的數據訪問方法,Crystal Reports 數據庫驅動程序被設計爲可同時提供數據訪問的拉模型和推模型。

 

拉模型

 

 

 

 

在拉模型中,驅動程序將連接到數據庫並根據需要將數據“拉”進來。使用這種模型時,與數據庫的連接和爲了獲取數據而執行的 SQL 命令都

同時由 Crystal Reports 本身處理,不需要開發人員編寫代碼。如果在運行時無須編寫任何特殊代碼,則使用拉模型。

 

推模型

 

 

相反,推模型需要開發人員編寫代碼以連接到數據庫,執行 SQL 命令以創建與報表中的字段匹配的記錄集或數據集,並且將該對象傳遞給報表

。該方法使您可以將連接共享置入應用程序中,並在 Crystal Reports 收到數據之前先將數據篩選出來。

 

四、從 ADO.NET 數據集製作報表

 

從數據庫創建數據集對象

 

1.      在項目中新建一個架構文件:

 

a.      在解決方案資源管理器中,右擊項目名,指向“添加”,然後單擊“添加新項”。

 

b.      在“添加新項”對話框的“類別”區域,展開文件夾,然後選擇“數據”。

 

c.      在“模板”區域選擇“數據集”。

 

d.      接受默認名稱 Dataset1.xsd。

 

這就創建了一個新的架構文件 (Dataset1.xsd),以後將用它來生成強類型數據集。該架構文件將顯示在 ADO.NET 數據集設計器中。

 

2.      指定數據庫位置:

 

a.      在服務器資源管理器中,右擊“數據連接”並選擇“添加連接”。

 

b.      在“數據鏈接屬性”對話框中,單擊“提供程序”選項卡,然後選擇一個提供程序(例如 Microsoft OLE DB Provider for SQL

Server)。

 

c.      單擊“連接”選項卡,然後指定您的數據庫所在位置。在所需位置輸入服務器和登錄信息。

 

d.      單擊“確定”按鈕。

 

此時,您的數據庫及其表和字段就出現在服務器資源管理器的“數據連接”節點下面。

 

3.      在解決方案資源管理器中,雙擊 Dataset1.xsd (如果它尚不是活動視圖)。

 

Dataset1.xsd 現在應顯示在“數據集”選項卡中。

 

4.      若要爲數據集建立架構,請將需要的表從服務器資源管理器中拖動到 Dataset1.xsd 的“數據集”選項卡上。

 

5.      單擊“保存 Dataset1.xsd”來保存“Dataset1.xsd”文件。

 

6.      在“生成”菜單上,單擊“生成”爲項目生成數據集對象。

 

ADO.NET 數據集對象提供數據的描述,從它可以向 Crystal report 添加表。使用 Crystal Report Designer 中的“數據庫專家”從 ADO.NET

數據集對象添加表。

 

請在使用“報表專家”創建新報表時調用“數據庫專家”。或者,要從一個已經使用 ADO.NET 建立好的報表中訪問“數據庫專家”,請在

Report Designer 中右擊,指向“數據庫”,然後單擊“添加/刪除數據庫”。

 

將報表連接到 ADO.NET 數據集對象

 

1.      在“數據庫專家”中,展開“項目數據”文件夾。

 

2.      展開“ADO.NET 數據集”文件夾。

 

3.      選擇所需數據集對象。

 

例如,如果當時使用的是從項目“WindowsApplication1”的架構文件“Dataset1.xsd”中生成的數據集對象,則應該選擇

“WindowsApplication1.Dataset1”。

 

4.      選擇要向報表中添加的表,和使用其他數據源一樣。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

五、動態改變數據源的代碼

 

 

 

               Dim dsdataSet As New DataSet()

 

                Dim oRpt As New rptClient()   '已建立的報表rptClient

 

                請讀者自行填充數據集dsdataSet

 

                '使用“報表引擎”對象模型將填充的數據集,傳遞給報表

 

                oRpt.SetDataSource(dsdataSet.Tables(0))

 

                ' 將帶有數據的報表對象綁定到 Windows 窗體查看器,rptVew(CrystalReportViewer控件)

 

                rptVew.ReportSource = oRpt

 

注意   FillDataSet 方法可連接到指定的數據庫,提取數據,然後斷開數據庫連接。如果您希望將數據庫中的多個表添加到報表中,請使用

SQL JOIN 語句將這些表聯接在一起;然後在 FillDataSet 方法中指定一個結果表

 

六、創建主從報表

 

在報表中,有許多報表是主從表結構,比如訂單與訂單商品明細,訂單是一個表中的一條記錄,而分錄是另一個表中的多條記錄,兩個表通過

一個字段關聯起來,這種報表可利用其分組功能實現,

 

1.      新建一個工程

 

2.      往FORM1中添加一個CrystalReportViewer控件

 

3.      在服務噐資源管理器中連接到SQL SERVER 2000上的Northwind數據庫

 

4.      添加一個數據集Dataset1,將服務器資源管理器中的Orders和 Order Details加入到數據集中。

 

5.      添加一個水晶報表,使用報表專家,在項目數據中選擇“ADO.NET數據集”,插入表Orders和 Order Details,“鏈接”中是關聯字段

的鏈接,在“字段”中選擇要顯示的主表和明細表的字段,組中選擇分組依據爲Orders表OrdersID字段,總計,圖表,選擇(可進行篩選),

樣式(可設置報表標題),可自行設置。設置完後,點擊完成。

 

6.      在報表設計器中調整需要顯示的字段的位置、寬度等。

 

7.      在窗口中添加代碼。

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

        Dim oRpt As New CrystalReport1()

 

        Dim dsdataSet As New Dataset1()

 

 

 

        Dim CN As New Data.SqlClient.SqlConnection("data source=PMSERVER;initial catalog=Northwind;user id=sa;password=sa")

 

        CN.Open()

 

        Dim daOrders As New Data.SqlClient.SqlDataAdapter("select * from orders", CN)

 

        daOrders.Fill(dsdataSet, "orders")

 

 

 

        Dim daDetails As New Data.SqlClient.SqlDataAdapter("select * from [Order Details]", CN)

 

        daDetails.Fill(dsdataSet, "Order Details")

 

 

 

        '使用“報表引擎”對象模型將填充的數據集,傳遞給報表

 

        oRpt.SetDataSource(dsdataSet)

 

        CrystalReportViewer1.ReportSource = oRpt

 

    End Sub

 

8、運行程序

 

 

 

 

 

 

 

七、用程序改變報表中text的文本

 

代碼如下:

 

                Dim GetTextObject As TextObject

 

                ' 按名稱獲取 ReportObject,將其轉換爲 TextObject,並返回此對象。

 

                GetTextObject = orpt.ReportDefinition.ReportObjects.Item("text13")

 

                GetTextObject.Text = "XXXX系統"

 

 

 

總結:水晶報表具有非常強大的功能,還可進行導出WORD、EXCEL、RTF等文件,還可生成複雜、漂亮圖表,是進行WEB和WINDOWS報表開發的利

器。

 

 

 

(此文部分資料來自MSDN)

 

Author:李洪根

 

E-MAIL:[email protected] 

 


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-10 23:07:11 得分:0 
 
 
 
本人有如下設想: 

1、通過連接查詢獲得SQL數據庫相關數據; 

2、置放在DataSet裏; 

3、調用水晶報表(線形或柱形模板),生成報表; 

4、輸出生成EXCEL文檔。 

 

請教各位大俠,如何實現以上思路?(如有範例就更好了) 

非常感謝! 

--------------------------------------------------------------- 

 

1.在你的工程中添加新項目DataSet,連結數據庫,將需要的數據表或預存程序 

拖入此DataSet中,編譯DataSet 

2.使用Vs.net自帶的Crystal  Report,以DataSet為數據源建立報表 

3.在程序中將數據推入此報表中 

4.Crystal  Report  有輸出為Excel的選項,通過程序也可以實現 

 

 Dim  conn  As  SqlConnection 

 Dim  da  As  SqlDataAdapter 

 Dim  strSQL  As  String 

 

 conn  =  New  SqlConnection() 

 conn.ConnectionString  =  "User  ID=sa;  PWD=1234;Data  Source=xxxx;  Initial  Catalog  =xxxxx" 

 conn.Open() 

 

 strSQL  =  "Select  *  from  TableName"           

 da  =  New  SqlDataAdapter(strSQL,  conn) 

 Dim  ds  As  New  DataSet()                                         

 da.Fill(ds,  "TableName")                                               

 

   Dim  RptDoc  As  New  ReportName()       

   RptDoc.SetDataSource(ds)                                             

 '  給RptDoc  指定數據,       

   CrystalView1.ReportSource  =  RptDoc            '給CrystalView指定數據 

   CrystalView1.DataBind() 

   conn.Close() 

5.如果需要顯示的為多表關聯的字段,最好以存儲過程建立DataSet 

 

--------------------------------------------------------------- 

 

請參考如下代碼: 

                                   string  strconn=連接串; 

                                   SqlConnection  myconn=new  SqlConnection(strconn); 

                                   string  strcmd=@"select語句"; 

 

                                   SqlCommand  mycmd=new  SqlCommand(strcmd,myconn); 

                                   SqlDataAdapter  myda=new  SqlDataAdapter(strcmd,myconn); 

                                   DataSet  myds=new  DataSet(); 

                                   myconn.Open(); 

                                   myda.Fill(myds,"報表名"); 

 

 

                                   報表名  myrpt  =new  報表名(); 

                                   myrpt.SetDataSource(myds); 

                                   this.CrystalReportViewer1.ReportSource=myrpt; 

 

導出到EXCEL: 

myrpt.ExportOptions.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile; 

myrpt.ExportOptions.ExportFormatType=CrystalDecisions.Shared.ExportFormatType.Excel; 

CrystalDecisions.Shared.DiskFileDestinationOptions  opt=new  CrystalDecisions.Shared.DiskFileDestinationOptions(); 

opt.DiskFileName=@"文件名"; 

myrpt.ExportOptions.DestinationOptions  =opt; 

myrpt.Export();

 


 
 
Top
 
 回覆人: tensun(好想學好.NET) ( ) 信譽:100  2003-6-10 23:15:12 得分:0 
 
 
 
水晶報表9的中文幫助 下載:

http://www.ourfly.com/download/download.aspx

http://www.enwell.net/soft/

http://www.fast8.com/news.asp

 

 

 

 

Crystal Reports for Visual Studio .NET   

 

PictureObject 成員請參見

PictureObject 類 ¦ CrystalDecisions.CrystalReports.Engine 命名空間

公共實例屬性

Border(從 ReportObject 中繼承而來) Border。獲取 Border 對象。

Height(從 ReportObject 中繼承而來) Int32。獲取或設置以緹爲單位的對象高度。

Kind(從 ReportObject 中繼承而來) ReportObjectKind。獲取報表對象的類型。

Left(從 ReportObject 中繼承而來) Int32。獲取或設置以緹爲單位的對象左上角位置。

Name(從 ReportObject 中繼承而來) 字符串。獲取對象名。

ObjectFormat(從 ReportObject 中繼承而來) ObjectFormat。獲取 ObjectFormat 對象。 

Top(從 ReportObject 中繼承而來) Int32。獲取或設置以緹爲單位的對象頂部位置。

Width(從 ReportObject 中繼承而來) Int32。獲取或設置以緹爲單位的對象寬度。

 

請參見

PictureObject 類

 

Imports CrystalDecisions.CrystalReports.Engine

 

        Dim picObject As PictureObject

        picObject = oRpt.ReportDefinition.ReportObjects.Item("picture1")

 


 
 
Top
 
 回覆人: tensun(好想學好.NET) ( ) 信譽:100  2003-6-10 23:17:24 得分:0 
 
 
 
來自:http://expert.csdn.net/Expert/topic/1896/1896874.xml?temp=.78677

 

大家在基於webform中使用水晶報表時如果簡單的按照網上“阿刀”的做法,肯定會提示你:登陸失敗。

對於這個問題,斑竹我花了整整一天的時間研究水晶報表的幫助文件,終於得到解決方案。

我不是一個保守的人,我相信有很多的網友正和我一樣在花費精力在研究這個問題,我不願意大家再和我一樣白白的花費精力。

下面是我實現該方案的幾個步驟。大家不要着急,慢慢的看下去會對你有很大的幫助。

步驟一:看示例文件

水晶報表自帶一個示例文件,數據庫是access(不帶密碼的)。我首先運行示例文件(基於webform和winform)結果顯示了正確的報表,正如

“飛刀”的示例。

於是,我自己建立了一個報表文件和.aspx文件,結果顯示登陸失敗!可是我把報表文件換成示例的報表文件,不再出錯。

問題出在什麼地方?難道是報表格式文件有關於登陸權限的設置?通過跟蹤、調試,我對比分析我的報表文件和示例報表文件,沒有發現任何

的不同。看來問題不在報表文件。

是數據庫的問題?我建立一個access結果還是登陸失敗!

不是數據庫的問題(我自己的數據庫是未帶密碼的access,幫助中的數據庫也是如此)?也不是報表格式文件的問題(我仔細分析了兩者的原

代碼是相同的)?

那麼問題出現在什麼地方?我白思不得其解!

步驟二:找幫助文件

於是我再次求助於幫助。我翻遍了水晶報表的幫助,終於找到“ 訪問安全數據庫 [C#]”字樣,發現這裏有下面的一段話:

通過 Crystal Reports for Visual Studio .NET 訪問安全數據庫的過程在 Web 窗體和 Windows 窗體之間有所不同。在 Windows 窗體中,對

話框自動提示用戶輸入用戶名和密碼(測試很容易成功)。而在 Web 窗體中,您需要設計一個表單以從用戶獲取該信息。對於這兩種情況,均

可使用代碼來指定用戶名和密碼,從而爲應用程序的所有用戶提供相同的安全等級。

 

於是我對同樣的數據庫(先是用幫助示例中的access數據庫,後來用自己建立的access數據庫)。發現對於同一個報表文件,對於winform能顯

示成功,而對於webform則仍然顯示登陸失敗!於是我有點明白上面的意思!

看來問題是出在權限的設置上。

 

步驟三:研究幫助,終於成功!

在幫助裏我找到“設置數據庫登錄參數”字樣,裏面提供了一些後來發現是非常有用的信息:

下列示例說明如何將登錄參數傳遞到報表的表中。該示例使用到某個安全的 SQL Server 數據庫的連接。

 

啓動一個新項目

向窗體添加一個“按鈕”和四個“文本框”控件。

將“文本框”控件分別命名爲:serverNameTxt、dbNameTxt、userNameTxt 和 passwordTxt。

雙擊“按鈕”控件以指定 Click 事件的代碼。根據所用語言插入適當的代碼。

[C#]

// 聲明所需變量。

TableLogOnInfo logOnInfo = new TableLogOnInfo ();

int i = 0;

 

// 對報表中的每個表依次循環。

for (i=0;i == Report.Database.Tables.Count - 1;i++)

{

// 設置當前表的連接信息。

logOnInfo.ConnectionInfo.ServerName = serverNameTxt.Text;

logOnInfo.ConnectionInfo.DatabaseName = dbNameTxt.Text;

logOnInfo.ConnectionInfo.UserID = userNameTxt.Text;

logOnInfo.ConnectionInfo.Password = passwordTxt.Text;

Report.Database.Tables [i].ApplyLogOnInfo (logOnInfo);

}

注意 受密碼保護的 Microsoft Access 和 Paradox 等 PC 數據庫也使用該方法,但 LogOnInfo.ServerName 和 LogOnInfo.DatabaseName 要

保留爲空。

於是我仿照這個樣子,嘗試了一下,出錯提示:沒有發現TableLogOnInfo 和Report。

後來我發現TableLogOnInfo 是屬於CrystalDecisions.Shared 命名空間的成員。於是我添加引用:

using CrystalDecisions.Shared ;

這次問題出現在Report。

Report?這是個什麼東西,我查遍了所有的幫助,並沒有這個函數或類!

[說真的!這個問題難到了我很長的時間!一直在查找Report到底是個什麼東西!水景報表公司也真是的,幫助也不寫得詳細一點!該打!!!

]

最終我終於發現Report只是一個用戶定義的對象,不是系統本身的對象。

在我困惑的時候,突然我想,爲什麼不看看Report後面的DataBase,這是個什麼東西,終於問題解決了,在幫助裏找到如下信息

ReportDocument oRpt = new ReportDocument();

Report屬於DocumentCrystalDecisions.CrystalReports .Engine 類的成員。

修改代碼:並添加引用

using CrystalDecisions.Shared ;//負責解釋TableLogOnInfo類

using CrystalDecisions.CrystalReports .Engine ;//負責解釋ReportDocument類private void Page_Load(object sender,

System.EventArgs e)

{

TableLogOnInfo logOnInfo = new TableLogOnInfo ();

//這裏必須事先申明一個ReportDocument對象 Report,同時加載數據報表

ReportDocument oRpt = new ReportDocument();

oRpt.Load("c://inetpub//wwwroot//exer//pagelet//crystal//cr1.rpt");//修改爲你自//己的正確位置

 

//建立安全信息

//受密碼保護的 Microsoft Access 和 Paradox 等 PC 數據庫也使用該方法,但 LogOnInfo.ServerName //和 LogOnInfo.DatabaseName 要保

留爲空

logOnInfo.ConnectionInfo.ServerName = "www";

logOnInfo.ConnectionInfo.DatabaseName = "archives";

logOnInfo.ConnectionInfo.UserID = "sa";

logOnInfo.ConnectionInfo.Password = "123456";

 

oRpt.Database .Tables [0].ApplyLogOnInfo (logOnInfo);

 

//建立.rpt文件與CryStalReportviewer文件之間的連接

CrystalReportViewer1.ReportSource = oRpt;

}

報表文件終於出現!

哇,我好高興,禁不住站起來伸了個懶腰!

 

步驟四:最終的完整版的代碼

上面的代碼不具有系統可擴充和靈活性。缺點有二:

(1)、數據報表格式文件是採用絕對路徑

(2)、數據庫訪問權限的設置一旦設定,在最終發佈是無法修改的,特別是客戶的SQL SERVER服務器不可能和你調試的程序環境是一樣的

基於這個考慮。引進兩個比較好的東西:

(1)、Server.Mappath函數

(2)、讀取web.config(本示例同時告訴你如何操作web.config配置文件)

最終修改如下:(完整代碼)數據庫爲sql server2000

using CrystalDecisions.Shared ;//負責解釋TableLogOnInfo類

using CrystalDecisions.CrystalReports .Engine ;//負責解釋ReportDocument類

 

private void Page_Load(object sender, System.EventArgs e)

{

TableLogOnInfo logOnInfo = new TableLogOnInfo ();

//這裏必須事先申明一個ReportDocument對象 Report,同時加載數據報表

ReportDocument oRpt = new ReportDocument();

//獲取.rpt文件真實路徑

string path1,path2;

path1=Server.MapPath ("//exer//pagelet");

path2=path1+"//crystal//cr1.rpt";

//oRpt.Load("c://inetpub//wwwroot//exer//pagelet//crystal//cr1.rpt");

oRpt.Load (path2);

 

//從web.config中獲取logOnInfo參數信息

string a,b,c,d;

//獲取ServerName

a=System.Configuration .ConfigurationSettings .AppSettings ["servername"];

//獲取DatabaseName

b=System.Configuration .ConfigurationSettings .AppSettings ["database"];

//獲取UserId

c=System.Configuration .ConfigurationSettings .AppSettings ["userid"];

//獲取password

d=System.Configuration .ConfigurationSettings .AppSettings ["pass"];

//設置logOnInfo參數

logOnInfo.ConnectionInfo.ServerName = a;

logOnInfo.ConnectionInfo.DatabaseName = b;

logOnInfo.ConnectionInfo.UserID = c;

logOnInfo.ConnectionInfo.Password = d;

 

oRpt.Database .Tables [0].ApplyLogOnInfo (logOnInfo);

 

//建立.rpt文件與CryStalReportviewer文件之間的連接

CrystalReportViewer1.ReportSource = oRpt;

}

 

 

整個演示的操作過程說明:

1、 在解決方案資源管理器裏,你需要存放報表文件處,添加新項:CrystalReport報表,起名爲cr1.rpt

2、 在隨後出現的“報表專家”中選擇數據源時,請務必選擇OLE DB,然後根據你的數據庫的要求選擇響應的驅動引擎:

SQL SERVER:Microsoft OLE DB Provider for SQL server

Access:Microsoft Jet.4.0

3、 輸入正確的數據庫連接,這一步大家一般的情況下不會出錯!

4、 建立數據報表,並保存cr1.rpt文件

5、 打開webform1.aspx。添加crystalreportviewer控件:名稱爲:CrystalReportViewer1

6、 在webform1.aspx.cs中的page_load事件中添加上面的代碼:

(注意:引用千萬不要忘了!)

 

 

*****************************************************

下面是web.config中與本內容有關的細節

<appSettings>

<add key="servername" value="www"/>

<add key="database" value="archives"/>

<add key="userid" value="admin"/>

<add key="pass" value="123456"/>

</appSettings>

 

 

***注意這裏的<add key="pass" value="123456"/>是pass,所以他必須與

//獲取password

d=System.Configuration .ConfigurationSettings .AppSettings ["pass"];這裏

的AppSettings["pass"] 中的"pass"保持一致。 當然名字是可以隨便起,但必須一致

 

*******************************************************************

轉自 www.chinaspx.com

作者:ydmwy

 


 
 
Top
 
 回覆人: tensun(好想學好.NET) ( ) 信譽:100  2003-6-10 23:20:20 得分:0 
 
 
 
上面貼子解決了數據庫有密碼,水晶報表提示:登陸失敗的問題!!(如果數據庫無密碼不存在上述問題!!)


 
 
Top
 
 回覆人: efyrose(散步的魚) ( ) 信譽:100  2003-6-11 9:21:37 得分:0 
 
 
 
你們都太好了,感動ing。


 
 
Top
 
 回覆人: chyich() ( ) 信譽:100  2003-6-11 9:50:54 得分:0 
 
 
 
up


 
 
Top
 
 回覆人: wen98091(天藍瓜子) ( ) 信譽:100  2003-6-11 9:52:22 得分:0 
 
 
 
thx


 
 
Top
 
 回覆人: xhdai1(先鋒) ( ) 信譽:100  2003-6-11 11:02:05 得分:0 
 
 
 
水晶報表9的中文幫助

http://www.ourfly.com/download/download.aspx

 

怎麼在下載時還要輸入登錄?請問(tensun)怎麼登錄用戶名密碼是什麼?


 
 
Top
 
 回覆人: efyrose(散步的魚) ( ) 信譽:100  2003-6-11 11:03:32 得分:0 
 
 
 
請教一下,爲啥我添加了一個dataset,拖入數據庫中一個表,然後點生成,在添加一個空白報表,爲報表添加數據庫時,彈出數據庫專家,選

擇項目數據中的ADO.NET數據集。裏邊列出了我的DataSet1,然而,點擊DataSet1展開他,下一級提示“..未找到項目..”沒法往報表中加表中

字段,望高手多指教


 
 
Top
 
 回覆人: fengxin107(追逐彩虹) ( ) 信譽:100  2003-6-11 11:10:14 得分:0 
 
 
 
看ing...


 
 
Top
 
 回覆人: liuketao111() ( ) 信譽:64  2003-6-11 11:38:16 得分:0 
 
 
 
請教樓上幾位高手,我最近安裝了CrystalReport,出現下面的錯誤,不知道如何處理,請幫助!

 

 

說明: 在編譯向該請求提供服務所需資源的過程中出現錯誤。請檢查下列特定錯誤詳細信息並適當地修改源代碼。

 

編譯器錯誤信息: CS1595: 已在多處定義“CrystalDecisions.Web.CrystalReportViewer”;使用

“C:/WINNT/assembly/GAC/CrystalDecisions.Web/9.1.3300.0__692fbea5521e1304/CrystalDecisions.Web.dll”中的定義

 

源錯誤:

 

 

 

行 14:   <form id="Report" method="post" runat="server">

行 15:    

行 16:    <CR1:CrystalReportViewer id=crvClient style="Z-INDEX: 101; LEFT: 6px; POSITION: absolute; TOP: 10px"

runat="server" Height="1156px" Width="890px" ReportSource='<%# "E:/WorkFiles/Learn/ZC_SuperOA/CRM/ClientReport.rpt" %>'>

行 17:    </CR1:CrystalReportViewer>

行 18:   </form>

 

 


 
 
Top
 
 回覆人: liuketao111() ( ) 信譽:64  2003-6-11 11:41:40 得分:0 
 
 
 
更正:我是說我最近安裝使用了CrystalReport 9的版本,結果出現了上述錯誤,在設計時,預覽是正確的


 
 
Top
 
 回覆人: liuqinyi(寶貝) ( ) 信譽:100  2003-6-11 11:43:41 得分:0 
 
 
 
.net中已經把水晶報表集成進來了,不需要安裝吧。


 
 
Top
 
 回覆人: liuketao111() ( ) 信譽:64  2003-6-11 11:47:55 得分:0 
 
 
 
.net集成的版本較低,我安裝的是中文版本9

 


 
 
Top
 
 回覆人: hobo_boy(流浪漢(正在學習Ora0i-9i)) ( ) 信譽:100  2003-6-11 12:20:36 得分:0 
 
 
 
up.


 
 
Top
 
 回覆人: lnok(這也會過去) ( ) 信譽:50  2003-6-11 12:21:28 得分:0 
 
 
 
我一直有個問題

 

怎麼樣把水晶報表導出爲dbf文件,急?

注意:是dbf 文件而不是地pdf文件


 
 
Top
 
 回覆人: micha_he(不會就學) ( ) 信譽:97  2003-6-11 14:31:20 得分:0 
 
 
 
收藏!


 
 
Top
 
 回覆人: anna_aiya(哎呀) ( ) 信譽:100  2003-6-11 14:44:21 得分:0 
 
 
 
請教一下,爲啥我添加了一個dataset,拖入數據庫中一個表,然後點生成,在添加一個空白報表,爲報表添加數據庫時,彈出數據庫專家,選

擇項目數據中的ADO.NET數據集。裏邊列出了我的DataSet1,然而,點擊DataSet1展開他,下一級提示“..未找到項目..”沒法往報表中加表中

字段,望高手多指教

 

 

我原來也遇到過這個問題。我是建立了一個DATASET數據集後,編譯工程退出。然後再打開工程,設置水晶報表的數據源就可以了

我也不知道這是怎麼回事


 
 
Top
 
 回覆人: Jorcks2002(Jorcks2002) ( ) 信譽:90  2003-6-11 14:57:11 得分:0 
 
 
 
我也遇到同樣的問題裝了cry9.2中文版,CrystalReportViewer9.2的在push的模式下不能用,怪哉!


 
 
Top
 
 回覆人: kld3000(汪洋) ( ) 信譽:100  2003-6-11 15:19:28 得分:0 
 
 
 
收藏先


 
 
Top
 
 回覆人: ytwxw(wxw) ( ) 信譽:99  2003-6-11 15:32:08 得分:0 
 
 
 
請問各位是怎麼解決打印的問題的

需要導出後再打印嗎?


 
 
Top
 
 回覆人: greystar(greystar) ( ) 信譽:100  2003-6-11 15:55:23 得分:0 
 
 
 
thanks


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-11 16:57:39 得分:0 
 
 
 
efyrose(散步的魚) :

請教一下,爲啥我添加了一個dataset,拖入數據庫中一個表,然後點生成,在添加一個空白報表,爲報表添加數據庫時,彈出數據庫專家,選

擇項目數據中的ADO.NET數據集。裏邊列出了我的DataSet1,然而,點擊DataSet1展開他,下一級提示“..未找到項目..”沒法往報表中加表中

字段,望高手多指教

 

最有可能的原因是:添加數據集對象後,或事數據集對象更新後,沒有從新編譯項目,

方法:選擇菜單—生成中的“重新生成***”。

若數據集還不存在目前的項目,還可以從“更多數據源”中單擊“ADO。NET(XML)”,添加項目以外的數據集。


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-11 17:01:21 得分:0 
 
 
 
對於CYR9。0的問題,因爲我一直使用的是VS自帶的CYR,所以不能回答你們的問題。。。

希望有用過CYR9的同仁,講一下使用經驗。。。。。。


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-11 17:13:25 得分:0 
 
 
 
關於CRY打印的問題:

CRY分WINDOWFORM和WEBFORM兩種,使用方法有所不同,總起來講:CRY在WINDOWFORM中提供的功能要比在WEBFORM中的多,包括打印。

在WEB中使用CRY,它自身沒有提供打印功能,所以只能使用IE中的打印功能(呵呵,不包括自作的打印控件)。


 
 
Top
 
 回覆人: ameng_2002(flyfox) ( ) 信譽:105  2003-6-11 19:12:42 得分:0 
 
 
 
好同志


 
 
Top
 
 回覆人: jjstar(北人) ( ) 信譽:96  2003-6-11 20:27:55 得分:0 
 
 
 
打個標


 
 
Top
 
 回覆人: tensun(好想學好.NET) ( ) 信譽:100  2003-6-11 23:49:06 得分:0 
 
 
 
我想問個問題:

關於使用ADO。NET數據集生成圖表,我希望能動態的生成統計圖,即根據我選的字段自動生成統計圖(餅圖或直方圖),應該怎樣作??好像

如果要生成圖,必須先在RPT文件中對圖指定好要統計的字段,這樣就不能動態實現了啊。。。。。很急啊,有人能幫幫我嗎???


 
 
Top
 
 回覆人: efyrose(散步的魚) ( ) 信譽:100  2003-6-12 8:28:21 得分:0 
 
 
 
anna_aiya(哎呀) foxtoo(阿里巴巴和四十大盜) 先行謝過,。我昨天另外建了一個DataSet就行了。而那個DataSet1我刪掉重建也不管用而且

也重新生成了。剛纔,我又試了一下。這次順利通過。比較怪


 
 
Top
 
 回覆人: Jorcks2002(Jorcks2002) ( ) 信譽:90  2003-6-12 9:22:58 得分:0 
 
 
 
to;tensun(好想學好.NET)

你可以用dataset.xsd呀,數據是動態的,生成的表也就是動態的了


 
 
Top
 
 回覆人: zhangbat(jim.) ( ) 信譽:100  2003-6-12 9:37:08 得分:0 
 
 
 
樓上的高手們:

怎麼在程序運行的時候動態指定水晶報表的統計圖樣式呀?

比如從柱圖轉到線圖?


 
 
Top
 
 回覆人: rainlow(彩虹) ( ) 信譽:81  2003-6-12 12:24:03 得分:0 
 
 
 
TextObject Itext,Ntext;

//按名稱獲取 ReportObject,將其轉換爲 TextObject,並返回此對象。

Itext = rptInt.ReportDefinition.ReportObjects["Text12"] as TextObject;

 

Ntext= rptInt.ReportDefinition.ReportObjects["Text11"] as TextObject;

if(Itext!=null){ Itext.Text=dr["Rate"].ToString();};}

if(Ntext!=null){ Ntext.Text=dr["DRate"].ToString();}

這是代碼,爲什麼報表中的文本對象不顯示值呢?我調試跟蹤有的呀

 


 
 
Top
 
 回覆人: New_bug(流水) ( ) 信譽:100  2003-6-12 12:33:50 得分:0 
 
 
 
支持ing


 
 
Top
 
 回覆人: wwwcsdncom(wwwcsdncom) ( ) 信譽:100  2003-6-12 15:02:37 得分:0 
 
 
 
哪個高手提供一個CYR9.0的下載地址


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-12 21:03:36 得分:0 
 
 
 
ADO記錄集和水晶報表    40Star(原作)

 

關鍵字     水晶報表 ADO TTX

 

在使用水晶報表時,經常會感到數據不是很好控制,最後只好使用這個終極絕招咯。那就是使用數據定義文件(TTX),把得到的ADO記錄集傳

送給水晶報表。

 

通常情況下,水晶報表是從物理的數據庫上創建出來的,但是現在有了32位的Active Data Driver-- P2smon.dll,水晶就可以不用再事先連接

到一個數據庫上咯。

 

首先,需要創建一個TTX文件,進入數據源選擇窗體後,如下圖選中

 

 

 

 

再單擊了前面的“+”後彈出數據源窗體

 

 

 

 

 

此時,我們使用“New”按鈕創建一個新的數據定義文件(TTX),格式如下

 

 

 

 

保存後,我們打開這個文本文件,就會發現TTX文件的格式,原來中間是TAB分割符來的。

 

 

 

 

 

接着,我們就按照水晶報表的老套路畫式樣,剩下的就是傳遞記錄機集了。

 

下面,我們要聲明好傳遞ADO記錄集需要的Api,

 

Public Declare Function PEOpenEngine Lib "crpe32.dll" () As Integer

 

 

 

Public Declare Function PEGetErrorCode Lib "crpe32.dll" (ByVal printJob As Integer) As Integer

 

 

 

Public Declare Function PEOpenPrintJob Lib "crpe32.dll" (ByVal RptName As String) As Integer

 

 

 

Public Declare Function PEOutputToWindow Lib "crpe32.dll" ( _

 

                                                            ByVal printJob As Integer, _

 

                                                            ByVal Title As String, _

 

                                                            ByVal Left As Long, _

 

                                                            ByVal Top As Long, _

 

                                                            ByVal Width As Long, _

 

                                                            ByVal Height As Long, _

 

                                                            ByVal style As Long, _

 

                                                            ByVal PWindow As Long) As Integer

 

 

 

Public Declare Function PEOutputToPrinter Lib "crpe32.dll" ( _

 

                                                            ByVal printJob As Integer, _

 

                                                            ByVal nCopies As Integer) As Integer

 

                                                           

 

Public Declare Function PEStartPrintJob Lib "crpe32.dll" ( _

 

                                                            ByVal printJob As Integer, _

 

                                                            ByVal WaitOrNot As Integer) As Integer

 

                                                           

 

Public Declare Function PEClosePrintJob Lib "crpe32.dll" (ByVal printJob As Integer) As Integer

 

 

 

Public Declare Sub PECloseEngine Lib "crpe32.dll" ()

 

 

 

Public Declare Function CreateFieldDefFile Lib "p2smon.dll" ( _

 

                                                            lpUnk As Object, ByVal _

 

                                                            fileName As String, _

 

                                                            ByVal bOverWriteExistingFile As Long) As Long

 

       

 

Public Declare Function vbEncodelPtr Lib "p2smon.dll" (x As Object) As String

 

 

 

Public Declare Function SetActiveDataSource Lib "p2smon.dll" ( _

 

                                                                ByVal printJob As Integer, _

 

                                                                ByVal tableNum As Integer, _

 

                                                                x As Object) As Long

 

 

 

最後給出的是報表的打印代碼

 

Dim Job As Integer

 

Dim Handle As Integer

 

'打開打印引擎

 

Handle = PEOpenEngine

 

'水晶的錯誤處理

 

If Handle = 0 Then

 

    ErrorNum = PEGetErrorCode(Handle)

 

    MsgBox "打印引擎出錯!"

 

    MsgBox "錯誤代號:" & ErrorNum

 

End If

 

 

 

'打開打印作業

 

Job = PEOpenPrintJob(App.Path & "/New.rpt")

 

'水晶的錯誤處理

 

If Job = 0 Then

 

    ErrorNum = PEGetErrorCode(Job)

 

    MsgBox "打開作業New.rpt 失敗!"

 

    MsgBox "錯誤代號:" & ErrorNum

 

End If

 

'給水晶報表傳送ADO記錄集,AdoRecordset的生成就不再多說了

 

Handle = SetActiveDataSource(Job, 0, ADOrs)

 

'輸出到打印預覽窗口

 

Handle = PEOutputToWindow(Job, "New.rpt", 0, 0, 520, 520, WS_MAXIMIZE, 0)

 

‘直接輸出到打印機

 

Handle = PEOutputToPrinter(Job,1)

 

'水晶的錯誤處理

 

If Handle <> 0 Then

 

Handle = PEStartPrintJob(Job, True)

 

    If Handle <> 0 Then

 

        MsgBox "打印完畢"

 

    Else

 

        ErrorNum = PEGetErrorCode(Job)

 

        MsgBox "打印失敗!"

 

        MsgBox "錯誤代號:" & ErrorNum

 

    End If

 

Else

 

    ErrorNum = PEGetErrorCode(Job)

 

    MsgBox "無法輸出到窗體或打印機"

 

    MsgBox "錯誤代號:" & ErrorNum

 

End If

 

'關閉打印作業

 

PEClosePrintJob (Job)

 

'關閉打印引擎

 

PECloseEngine

 

 

 

我使用的是VB6+水晶報表8.5,感覺這種方式比較靈活好用,同時解決了水晶報表補空行的問題。

 

 


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-12 21:09:53 得分:0 
 
 
 
關於如何實現打印的問題:

private void Button1_Click(object sender, System.EventArgs e)

{

string printername;

printername=this.TextBox1 .Text .Trim ();

//oRpt.PrintOptions .PrinterName ="hp laserjet 6l";

oRpt.PrintOptions .PrinterName=printername;

oRpt.PrintToPrinter (1,false,1,1);

}

 

這裏的oRpt請大家參見我發表的關於登陸錯誤的帖子(這是一個全局變量)

 

關於如何實現打印預覽的問題:

private void ButtonPreview_Click(object sender, System.EventArgs e)

{

CrystalReportViewer1.ReportSource = oRpt;

}

關於CrystalReportViewer1 、oRpt請大家參見我發表的關於登陸錯誤的帖子(這是一個全局變量)

 

關於打印只能在服務器上執行的問題

?程序原理:

客戶在瀏覽器終端執行我的print.aspx頁面上的“打印”按扭,執行打印命令。客戶可以根據客戶本地打印機的名稱,在打印機名稱的文本框

裏輸入自己的打印機名,並且打印任務應該在客戶端的打印機上執行。

可實際上卻不是按照上述的要求執行的。

如果客戶端的打印機名稱(例如hp5000)和.rpt報表格式文件中設置的打印機的名稱(如hp laserjet 6l)不一致,系統會出錯,提示找不到打

印機。在打印時我是讓用戶根據自己的計算機

如果客戶端的打印機名稱(例如hp5000)和.rpt報表格式文件中設置的打印機的名稱(如hp5000)相同,客戶在客戶端執行打印任務。可是卻是

在服務器端的打印機上則成功執行打印任務,客戶端的打印機卻絲毫沒有反映(按理是應該在客戶端的打印機上執行)。

 

取自:http://www.aspx.cn/club/forum.asp?Forum_ID=3

 


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-12 21:20:03 得分:0 
 
 
 
水晶報表的使用:

http://www.aspxcn.com/dotnetbbs/Good.aspx?fbId=23


 
 
Top
 
 回覆人: derek() ( ) 信譽:99  2003-6-13 8:59:56 得分:0 
 
 
 
收藏

 


 
 
Top
 
 回覆人: liuyong_lll(孤醉) ( ) 信譽:99  2003-6-13 14:05:52 得分:0 
 
 
 
收藏


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-13 22:45:15 得分:0 
 
 
 
Crystal Reports 9 .NET 安裝

• Crystal Reports 9 將其功能整合到了 Visual Studio .NET 集成開發環境 (IDE) 中,從而增強了 Visual Studio .NET (VS .NET) 的開發

效能。因此,在安裝 Crystal Reports 9 之前必須先安裝所有 .NET 產品,否則,在每安裝一個 .NET 產品後都必須重新運行 Crystal

Reports 9 或 Report Application Server 9 (RAS) 安裝程序。(ADAPT 87307)

下面是一個示例安裝順序:

1. 如果想使您的開發機器能夠承載 Web 應用程序,則應確保安裝 Internet Information Server (IIS) 5 或者更高版本。如果您正在

Windows NT 4 上安裝,您將無法在您機器的 IIS Web 服務器上創建 Web 應用程序;當在 Visual Studio .NET 中創建 Web 應用程序時,您

需要指向 Win2000 或者 Windows .NET 服務器。有關詳細信息,請參見 Visual Studio .NET 文檔。

2. 安裝 Visual Studio .NET 2002。

3. 安裝 .NET 移動控件 SDK。

4. 安裝 Crystal Reports 9。

5. 安裝 Report Application Server 9。

我們極力建議您在安裝 Crystal Reports 9 後從 RAS 9 安裝程序中至少安裝 Report Application Server 9 軟件開發工具包 (RAS 9 SDK),

因爲有些 VS .NET 2002 功能依賴於 RAS 9 SDK。大多數演示 Crystal Reports 9 和 RAS 9 新功能使用的代碼示例在 RAS 9 的示例中提供。

• 從 Visual Studio .NET 卸載 Crystal Reports 9 之後,.NET 的 Crystal Reports 組件可能工作不正常。要恢復功能,您應該在 .NET 安

裝程序中運行修復功能。(ADAPT 89415)

• 如果安裝了 Crystal Reports 9 然後選中“Crystal Reports for Visual Studio .NET”選項重新運行 Visual Studio .NET 2002 (VS

.NET 2002) 的安裝,您會遇到一些問題。在工具箱中將同時包含 Crystal Reports 9 和 VS .NET 2002 控件,但是 VS .NET 2002 將控制代

碼的生成、作爲 Web 服務發佈等等。要使 Crystal Reports 9 重新獲得對 IDE 的控制,您需要在修復模式下重新運行 CR9 安裝。若要正確

降級爲不帶 Crystal Reports 9 的 VS .NET 2002,請卸載 CR9 並在修復模式下重新運行 VS .NET 2002 安裝。(ADAPT 90314)

• 當未檢測到 .NET 框架或 Visual Studio .NET 時,相關的安裝功能會被禁用以免意外選中。如有必要,您可在啓動 setup.exe 時在命令行

定義公共屬性 SHOWALLFEATURES=1 來覆蓋此行爲 (ADAPT 59029)。

• 服務器資源管理器中“Crystal Services”下的服務器文件節點不再與 ServerFileReportManager.asmx 的 Web 服務進行通訊。相反,它與

指定機器上的 Report Application Server 的本地連接管理器聯繫。要使服務器文件節點工作,必須在指定的機器上運行 Querysrv.exe。

同樣,服務器資源管理器中的“Crystal Enterprise”節點不再與 EnterpriseReportManager.asmx 的 Web 服務通訊。現在,它通過

Enterprise Bus ebus-3-3-2.dll 直接與 Crystal Enterprise APS 通訊。(ADAPT 87302)

有關更多信息,請參見知識庫文章:

http://support.crystaldecisions.com/kbase/c2010319.asp

• 如果您已使用了隨 Visual Studio .NET 2002 一起提供的 ServerFileReportService.asmx Web 服務,您可繼續使用該服務,但它不能在報

表部件導航之類的新功能中使用。儘管 Crystal Reports 9 Windows 窗體和 Web 窗體 CrystalReportViewer 控件也許能夠與舊的 Visual

Studio .NET 2002 ServerFileReportService.asmx 一起使用,但這種配置是不受支持的。不過,Crystal Reports 9

ServerFileReportService.asmx 被設計爲能夠在由 Visual Studio .NET 2002 中舊的 CrystalReportViewer 控件創建的客戶端應用程序中使

用。

要升級 Web 服務器以使用新的 Crystal Reports 9 ServerFileReportService.asmx,請使用“Internet Information 服務”配置工具將虛擬

目錄“/CrystalReportWebFormViewer”映射到:

"C:/Program Files/Common Files/Crystal Decisions/2.0/crystalreportviewers"

(或產品安裝中的相應目錄)。

在 Crystal Reports 9 中,ServerFileReportManager.asmx 和 ServerFileReportService.asmx Web 服務仍默認安裝到“C:/Program

Files/Microsoft Visual Studio .NET/Crystal Reports/Samples/Reports”目錄。若要更改,請修改“C:/Program Files/Common

Files/Crystal Decisions/2.0/crystalreportviewers”中的文件 web.config,添加 <configSections> 和 <crystalDecisions> XML 節點。

下面是一個 web.config 文件示例,其中將服務器文件目錄樹的根設爲 c:/inetpub/wwwroot:

<configuration>

 

    <configSections>

        <sectionGroup name="crystalDecisions">

            <section name="serverFileReportManager"

type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral,

PublicKeyToken=b77a5c561934e089, Custom=null" />

        </sectionGroup>

    </configSections>

 

    <system.web>

        <!--  DYNAMIC DEBUG COMPILATION

              將 debugmode enable 設爲“true”啓用 ASPX 調試。然而,將該值設爲“false”將會提高該應用程序的運行時性能。

        -->

        <compilation debug="true">

            <assemblies>

                <add assembly="System.Xml, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

<add assembly="CrystalDecisions.CrystalReports.Engine, Version=9.2.3300.0, Culture=neutral,

PublicKeyToken=692fbea5521e1304"/>

<add assembly="CrystalDecisions.Shared, Version=9.2.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>

<add assembly="CrystalDecisions.ReportSource, Version=9.2.3300.0, Culture=neutral,

PublicKeyToken=692fbea5521e1304"/>

<add assembly="CrystalDecisions.Web, Version=9.2.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>

            </assemblies>

        </compilation>

 

        <!--  APPLICATION-LEVEL TRACE LOGGING

              應用程序級跟蹤功能會爲應用程序內的每一頁生成跟蹤日誌輸出。

              將 trace enabled 設爲“true”可啓用應用程序跟蹤日誌記錄。如果 pageoutput 設置爲“true”,

              跟蹤信息會顯示於每頁的底部。如果未顯示,您可從 Web 應用程序根部瀏覽“trace.axd”頁來查看應用程序跟蹤日誌。

        -->

    </system.web>

 

    <crystalDecisions>

        <serverFileReportManager>

            <add key="rootDirectory" value="c:/inetpub/wwwroot" />

        </serverFileReportManager>

    </crystalDecisions>

</configuration>

(ADAPT 87302)

 

 


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-13 22:45:37 得分:0 
 
 
 
• 安裝完 Crystal Reports 9 之後,如果您自定義工具箱並進入 .NET 框架組件,可能會遇到以下錯誤:

“下列程序集是已安裝的 SDK 程序集,但未能在自定義工具箱對話框中顯示,因爲它們缺少一個或多個組件。請確保所有必要的庫都可用。

CrystalDecisions.web.mobile.dll”

此錯誤僅在未安裝移動組件時發生。(ADAPT 81046)

• 有些 Crystal Reports .NET 的功能依賴於 Report Application Server (RAS) SDK。例如,如果您在 .NET WebForms 查看器中超級鏈接到

另一個報表對象,而且您在“報表 URI”字段中指定一個“ras://”路徑,.NET WebForms 查看器將依賴於 RAS SDK。如果未安裝 RAS SDK,

將出現如下錯誤消息:

Enterprise Report Application Server 未找到。確保您已指定了一個 EnterpriseSession。

若要安裝 RAS SDK,運行 Report Application Server 9 安裝程序,選擇自定義安裝並選中“Report Application SDK”。如果 RAS 服務器

的安裝和運行不在同一臺機器進行,需要將您的默認 ReportAppServer 指向另一臺機器;有關詳細信息,請參見“Report Application

Server (RAS) 的安裝”。

• 當您啓動 VS .NET IDE 時,在 VS .NET 中加載“VsRptDesigner”程序包或“Crystal Reports 工具”程序包時將會出現“程序包加載失敗

”。爲解決這個錯誤,您必須以具有管理員權限的帳戶或非漫遊配置文件的帳戶運行 VS.NET。這個問題是由 VS.NET IDE 從

::CryptAcquireContext() 中獲取一個加密服務提供程序時失敗所引起的。

• 在一個 Windows 操作系統中,.rpt 文件中的貨幣、日期和數字未按您所希望的區域設置格式化。若要解決此問題,有兩種選擇:

- 在本地化的操作系統 (OS) 中運行 IIS。例如,在日語操作系統中,SYSTEM 帳戶的用戶默認區域設置爲 1041 = 日語,所以日語的日期和貨

幣可正確顯示。

- 在“user”和“Administrator”組中創建一個“UserJapanese”帳戶,並將“IIS 管理服務”、“FTP 發佈服務”、“簡單郵件傳送協議服

務”和“World Wide Web 發佈服務”設置爲在“UserJapanese”下運行。此帳戶必須在“Administrator”組中,並需使用“本地安全策略”

Applet 添加如下額外的用戶權利:

• 作爲操作系統的一部分

• 生成安全審計

• 作爲服務登錄

• 替換進程級標記

發生此問題的原因是 aspnet_isapi.dll 調用了 CreateProcessAsUser() 來創建 aspnet_wp.exe 這一運行 .NET 代碼的輔助進程。然而,

CreateProcessAsUser() 使得 aspnet_wp.exe 中的 HKEY_CURRENT_USER 註冊表配置單元指向與 inetinfo.exe 用戶相同的(在英文操作系統

中爲 1033(英語)的 SYSTEM 帳戶)配置單元。

• Crdb_adoplus.dll 不能按需安裝。出現以下錯誤消息:“加載數據庫信息失敗”。

此問題在按需安裝了 ADO.NET 的情況下典型和自定義安裝 Crystal Reports 時均會發生。在這些情況下, crdb_adoplus.dll 只能按需安裝

(也就是說,當數據資源管理器的項目數據被擴展時)。如果您想加載並運行一個使用 crdb_adoplus.dll(一個 ADO .NET 數據集應用程序)

的應用程序,該應用程序將無法找到動態鏈接庫 (DLL)。

可使用以下兩種方法之一來解決此問題:

- 進入數據資源管理器並展開項目數據。這將按需安裝 DLL。

- 進入 Crystal Reports 設置,並進入添加/刪除,展開 Data Access。選擇將 ADO.NET 安裝到硬盤驅動器。

• Crystal Reports 9 文檔的 .NET SDK 部分中包含一個介紹部署 Crystal Reports .NET 運行時的章節。以下列出的合併模塊是必需的文件

:Managed.msm、Database_Access.msm、Database_Access_enu.msm 和 regwiz.msm。您可能會發現您的機器上已存在以這些文件名命名的文件

,但這些文件很可能是通過隨 Visual Studio .NET 一起提供的上一版本 Crystal Reports .NET SDK 安裝的。要獲得這些文件對應於

Crystal Reports 9 的文件版本,請訪問 Crystal Care 技術支持 Web 站點:http://support.crystaldecisions.com/updates/。進入該 Web

站點後,在“Select a product”(選擇一個產品)中選擇“Crystal Reports”,在“Select a product version”(選擇一個產品版本)中

選擇“9”,在“Select a file type”(選擇一個文件類型)中選擇“Product update”(產品更新),然後單擊“Go”搜索合併模塊。


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-13 22:52:15 得分:0 
 
 
 
我們的支持網站:http://support.crystaldecisions.com

 

 

有關詳細信息,請訪問我們網站的:

 

Crystal Reports 產品新聞

http://china.crystaldecisions.com/products/crystalreports/

 

Crystal Reports 演示

http://www.crystaldecisions.com/products/crystalreports/showme/

 

Crystal Enterprise 產品新聞

http://china.crystaldecisions.com/products/crystalenterprise/ 

 

產品信息

http://china.crystaldecisions.com/products/

 

開發人員社區

http://www.crystaldecisions.com/products/dev_zone/

 

聯機支持、示例和技術簡報

http://support.crystaldecisions.com

 

培訓及諮詢

http://china.crystaldecisions.com/services/

 

Crystal Decisions 主頁

http://china.crystaldecisions.com

 


 
 
Top
 
 回覆人: sunqcn() ( ) 信譽:98  2003-6-14 13:36:55 得分:0 
 
 
 
中國一定能夠強大,因爲中國有很多像摟主這樣的人。


 
 
Top
 
 回覆人: youngby(詩人&SQL&NET ) ( ) 信譽:100  2003-6-14 13:41:06 得分:0 
 
 
 
up


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-14 22:24:13 得分:0 
 
 
 
大家有什麼好的心得,經驗,例子,都可以貼的啊,因爲關於CRY的例子,和文章比較少,而關於這方面的問題又比較多,希望大家都能把成功

的經驗貼出,這樣可以使很多人少走彎路。。。。。謝謝。。。!!!


 
 
Top
 
 回覆人: waterf() ( ) 信譽:22  2003-6-16 16:38:50 得分:0 
 
 
 
up


 
 
Top
 
 回覆人: AmaomaoA() ( ) 信譽:100  2003-6-16 20:12:54 得分:0 
 
 
 
.NET中水晶報表的數據訪問策略

 

 第一種方法,Crystal Report引擎從與之關聯的數據源中抽取數據。Crystal Report可以用業界標準OLE DB或者ODBC驅動來聯接數據庫,它也

可以使用其它的特殊驅動(包含在程序包中)來查詢Excel工作簿或者Access數據庫。開發者可以啓動內置嚮導,選擇用來抽取數據的數據源,

然後選擇報表中的表格和字段。由於上述過程在程序設計時就完成了,所以用戶無需在程序運行時爲報表獲取數據做其它工作。

 

“推”方法是報表訪問數據的另一種方法。在這種方法中,開發者在報表設計階段爲報表正常建立表格和字段。開發者建立一個數據集,該數

據集在程序運行時存在,並被傳遞到報表中;這與在第一種方法中用代碼固定數據源大相徑庭。如果在.NET項目中用到了指定類型(typed)數

據集,開發者就可以把這種數據集做爲模型嵌入到報表中的表格定義中。在運行時,開發者只需填充數據集並通過SetDataSource 方法把填充

後的數據集傳到報表中即可。

 

可以訪問SetDataSource 方法的對象有兩種。ReportDocument類是報表本身的封裝;它把SetDataSource 作爲一個方法加以訪問。如果你的數

據集包含了所有的表格並且它們與報表中的定義相吻合,那麼你應該通過報表對象來調用SetDataSource 。通過報表對象同時也訪問數據庫屬

性,該數據庫擁有表格集合。Table類同樣也有SetDataSource 方法。你可以通過檢索適當的表格、調用SetDataSource ,並傳遞數據集中適當

記錄的方法直接填寫報表表格。

 

這兩種方法的選擇並不是互斥的,開發者可以在同一個報表中混合使用它們,這樣就使得Crystal Report引擎在程序運行時從不同數據源抽取

數據成爲可能。但是考慮到這兩種方法各自的侷限性,你必須決定使用其中的一種或者全部。

 

 


 
 
Top
 
 回覆人: carrel(末關) ( ) 信譽:100  2003-6-17 13:47:07 得分:0 
 
 
 
up


 
 
Top
 
 回覆人: letian(你快樂,所以我快樂) ( ) 信譽:105  2003-6-17 17:43:00 得分:0 
 
 
 
請教一下各位有關打印報表的問題,THx

用以下代碼實現打印,爲何提示:無效報表文件路徑

 

string printername;

oRpt.PrintOptions.PrinterName ="hp laserjet 6l";

oRpt.PrintToPrinter (1,false,1,1);


 
 
Top
 
 回覆人: tensun(好想學好.NET) ( ) 信譽:100  2003-6-17 22:50:52 得分:0 
 
 
 
up


 
 
Top
 
 回覆人: flying_sunny(帥) ( ) 信譽:98  2003-6-19 14:06:38 得分:0 
 
 
 
我最近用水晶報表遇到一問題,請教過同事,都不知怎麼了

是這樣的


 
 
Top
 
 回覆人: flying_sunny(帥) ( ) 信譽:98  2003-6-19 14:10:40 得分:0 
 
 
 
是樣的,在webform1中綁定一報表

在page_load中寫如一代碼

CrystalReportViewer1.ReportSource = "../應用程序位置/報表名"

        CrystalReportViewer1.DataBind()

 

編譯運行提示:

“/TestHuang”應用程序中的服務器錯誤。

--------------------------------------------------------------------------------

 

未將對象引用設置到對象的實例。

說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以瞭解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。

 

異常詳細信息: System.NullReferenceException: 未將對象引用設置到對象的實例。

 

源錯誤:

 

執行當前 Web 請求期間生成了未處理的異常。可以使用下面的異常堆棧跟蹤信息確定有關異常原因和發生位置的信息。 

 

堆棧跟蹤:

 

 

[NullReferenceException: 未將對象引用設置到對象的實例。]

   CrystalDecisions.Web..get_7()

   CrystalDecisions.Web.CrystalReportViewer.OnInit(EventArgs e)

   System.Web.UI.Control.InitRecursive(Control namingContainer)

   System.Web.UI.Control.InitRecursive(Control namingContainer)

   System.Web.UI.Control.InitRecursive(Control namingContainer)

   System.Web.UI.Page.ProcessRequestMain()

 

 

我試過很多方式都不行,找不到問題,高手幫忙看看吧,在這裏多謝多謝多謝了!


 
 
Top
 
 回覆人: yuetong(需要交流) ( ) 信譽:100  2003-6-20 8:20:36 得分:0 
 
 
 
flying_sunny(帥) :應該是你的位置沒有寫對!請仔細檢查路徑,並且/一定改爲//


 
 
Top
 
 回覆人: yuetong(需要交流) ( ) 信譽:100  2003-6-20 8:20:49 得分:0 
 
 
 
flying_sunny(帥) :應該是你的位置沒有寫對!請仔細檢查路徑,並且/一定改爲//


 
 
Top
 
 回覆人: yanghai0437(流浪者) ( ) 信譽:99  2003-6-20 15:47:30 得分:0 
 
 
 
分組樣式的報表怎樣設計(用水晶報表)

例如:

班組 | 工號  | 合格數 | 合格率

-----|-------|--------|-------

     | shu59 | 102273 | 98.85%

     | ------|--------|------- 

A 組 | shu79 | 97977  | 98.77%

     | ------|--------|--------

     | shu43 | 234234 | 96.30%

-----|-------|--------|--------

A組合計      | 2342344| 98.44%

-------------|--------|--------

     | shu67 | 102273 | 98.85%

     | ------|--------|------- 

B 組 | shu45 | 97977  | 98.77%

     | ------|--------|--------

     | shu42 | 234234 | 96.30%

-----|-------|--------|-------- 

B組合計      | 2323444| 92.44%

_____________|________|________

兩組合計     | 362344 | 94.44%

_______________________________


 
 
Top
 
 回覆人: wenejiang(伊麥龍) ( ) 信譽:99  2003-6-20 16:03:36 得分:0 
 
 
 
我覺得應該開一個水晶報表的專題,否則這裏就要太長了

我也有很多問題要問的,比如,水晶報表怎麼發佈給客戶使用呢?是vs.net裏的水晶報表!


 
 
Top
 
 回覆人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽:100  2003-6-20 22:00:48 得分:0 
 
 
 
to: yanghai0437(流浪者)

分組合計,直接使用報表專家就可以實現,詳細步驟應該看前面。

 

 

to:all

通過這些天使用水晶報表,越來越感到它的功能強大,和組合的靈活性,也正因爲這樣,才照成使用時的複雜性:不同的操作步驟,不同的環

境,不同的條件,不同的組合。。。。都有可能造成運行時的失敗。。。。

所以,建議大家在出錯後,不要灰心,要多調試,仔細找出錯誤的原因,這也就是我開此貼的目的,你找出的每一個錯誤,運行出現的每個異

常,都有可能出現在別人的機器上,希望能把它講出來。。。。

 

我相信每個作過水晶報表的同仁,都遇到過這樣那樣的問題,解決這些問題之時,就是我們發揮水晶報表強大功能之日。


 
 
Top
 
 回覆人: cer(培訓樓) ( ) 信譽:98  2003-6-21 8:48:26 得分:0 
 
 
 
十分好貼收藏


 
 
Top
 
 回覆人: xiaoyq(xiaoyq) ( ) 信譽:88  2003-6-21 10:58:07 得分:0 
 
 
 
我在幾個系統中都使用了水晶報表,但一直沒有解決打印問題(在webform中)。

有誰有好的解決辦法嗎?


 
 
Top
 
 回覆人: yylAlyy(yyl) ( ) 信譽:100  2003-6-23 8:58:13 得分:0 
 
 
 
up!

感謝!

很感謝!

非常感謝!


 
 
Top
 
 回覆人: hzsummer(賣女孩的小火柴) ( ) 信譽:100  2003-6-23 9:46:39 得分:0 
 
 
 
非常之好!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章