• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    解決報表的打印輸出問題的方案

    發布: 2007-5-25 09:19 | 作者: FieldMAX | 來源: programfan.com | 查看: 67次 | 進入軟件測試論壇討論

    領測軟件測試網 Visual Basic 6.0
        Winwos NT/Windows 98
        在VB編制數據運用程序的過程中,無法找到一種較好的方法來解決報表的打印輸出問題,具體要求如下:
         1 能地設計時設置報表的表式。
         2 能完成復雜的中國式報表。
         3 速度快,最好是進程內調用。
        請各位高手指點迷津。

    回答:

        主持人注:其實這個問題不太可能有一個統一的解決方案,我們這里介紹一些方案,也歡迎大家提供更多的方案供參考。
        傻兒的意見:
        我的傻瓜打表即可完全滿足要求:
        1.設置功能強大:提供數十種宏,可用于標題、頁眉、頁腳、表頭中。
        另外,可選的打印選項由近百個。
        2、本部件即是專門針對中國式的表格,可打。簲祿恚ˋDO、DAO、數組)表頭任意設置(多層支持,支持斜線),強大的分頁分組設置和統計功能(總計、頁合計、邏輯表合計、物理表合計、合計字段可定義任意多個;總紀錄數、頁紀錄數、表紀錄數;表號、頁號等都可作為“宏”使用);
        可打印不規則表(可以使用表單元對象描述,還可使用html語法描述),例如收款單、報銷單等;
        支持嵌套表格,例如,想打印增值稅發票之類的表格,可將其分為幾個子表,而每個子表又是父表的一個單元(任意嵌套),通過此方法,再復雜的表格都可以輕松搞定;
        支持票據套打,設置非常簡單,例如某個元素設置為長日期填充格式,打印時自動將年月日填到空隙中,如果設置某個元素為金額大寫填充格式,則僅需要在打印參數中提供金額值,即可自動將大寫文字填充到相應位置。
        3、本部件正是進程內ActiveX部件。
        可以我的主頁看看介紹和打印的表樣示例。

        JiaQiang Xu的方案
        可以使用免費的Seagate Crystal Report 6.0
        它提供一個報表設計器和一系列對象、方法、屬性,能在運行時操縱報表。
        也可以使用OLE Automation,利用Excel或Word來打印報表。用Excel,先設計宏,導入外部數據,設計其格式,打印等等,最后將宏的代碼復制到VB中,適當修改后即可使用,這樣可以利用Excel的一切功能,打印出非常專業化的報表。如果打印表格類型的報表,用Word設計出表格,在需要填寫實際數據的地方加remark,然后在VB代碼中用實際數據替換remark,再打印,這樣比VB的Data Report方便多了。

        于溪玥、 向雙雙的方案
        Microsoft Visual Basic 6.0 專業版和企業版中的數據報表設計器(Data Report Designer)與數據環境設計器(Data Environment Designer)是數據訪問的新內容。Microsoft Developer Network Library Visual Studio 6.0 中文版所提供示例應用程序:Samples\Vb98\DataRept\ 目錄下的Prjnwind.vbp 工程使用一個數據環境作為數據源,演示了數據報表設計器的基本功能。該示例在程序設計階段(Design Time)就已將DataEnvironment設為DataReport的數據源,并將打印格式也一并設好以備打印,這樣作不利于程序的通用性。當然,我們可以在程序運行階段(Run Time)用語句更改DataEnvironment 的連接(Connection)的命令(Command)所對應的記錄集(rsCommand)等參數來打印不同的數據(二維表),換句話說DataEnvironment是可編程的。其實,DataReport還可以使用別的數據源(DataSource)。但是,為什么我們在程序設計階段不能將ADO Data 控件(ADODC)設為DataReport的數據源呢?原因很簡單,DataReport 需要的是一個全局的或者是本設計器模塊內的數據源(記錄集),而ADODC是窗體模塊級的,我們只需將Adodc.Recordset 傳給一個全局級的Recordset 變量,再將該Recordset 設為DataReport的DataSource 即可。這樣我們就可以脫離DataEnvironment使用DataReport打印動態生成的Recordset了。DataReport使用的另一個難點就是在程序運行階段用語句控制數據報表設計器的專用控件。我們只能通過VB6自身提供的DataReport.Sections.Item(Index).Controls.Item(Index)…這樣的語法來控制這些數據報表設計器專用控件,而且DataReport不能象窗體(Form)那樣可以在程序運行階段用語句動態加入控件,而且同類控件無索引(Index),而是在整個DataReport的控件集中擁有一個索引來標識控件,這樣就非常不利于分別控制不同類的控件。還好,VB 提供了集合對象(Collection)我們就可以將數據報表設計器專用控件,根據其所在的區域(Sections)和所屬控件類別等將它們分成若干集合,然后就可以通過控制集合的元素來準確有效地控制這些元素所代表的控件。在程序設計階段我們要將足夠多的控件繪制到DataReport上備用。實現上面的程序代碼均可以編寫到Sub DataReport_Initialize()事件過程里。經過以上改造我們就可以在程序運行階段動態控制DataReport了。

    在這里下載全文  datarpt.zip  。
    這里是一個  rptsp.zip  例子。

    現在 DataReportPlus 已經進行了重大升級!
        請訪問:http://microinfo.top263.net
               http://microinfo.top263.net/DownLoad.htm

        陳榆的意見:
        做中國式報表之我見
        (1)formula one 6.1
        它只有兩點缺點:不定行數據控制麻煩,打印預覽差。典型商用軟件:速達兩千,金財財務企業版等等。
        (2)spread3
        打印預覽很好,但是不能單元格合并,如果表格的表頭是兩層的,實現編程量也不小。典型商用軟件:金碟2000
        ,奧林島財務。
         (3)vsview+vsflexgrid(http://www.videosoft.com ),
        用vsflexgrid7和vsview7結合打報表是目前我發現的最好的打印解決方案。幾乎沒什么缺點,vsflexgrid的強大顯示功能眾所周知。用vsview控制打行頭,行尾,而表體就是vsflex.缺點是沒有設計模式。
         (4)activereport1。1,crystalreport 8,這些報表工具雖然隨著版本的升級越來越強大,但是為咱中國人想的實在是太少了。
        (5)cell3.3,很強但是很貴。
        (6)apex truedbgrid 7.0.雖然表格很強大,但是打印實在是小兒科。不能打多行行頭、行尾。如果想做草稿打印用它也罷,畢竟很方便,打印效果也不差。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>