?? 解決報(bào)表的打印輸出問(wèn)題的方案.txt
字號(hào):
主持人注:其實(shí)這個(gè)問(wèn)題不太可能有一個(gè)統(tǒng)一的解決方案,我們這里介紹一些方案,也歡迎大家提供更多的方案供參考。
<END>
我的傻瓜打表即可完全滿(mǎn)足要求:
1.設(shè)置功能強(qiáng)大:提供數(shù)十種宏,可用于標(biāo)題、頁(yè)眉、頁(yè)腳、表頭中。
另外,可選的打印選項(xiàng)由近百個(gè)。
2、本部件即是專(zhuān)門(mén)針對(duì)中國(guó)式的表格,可打印:數(shù)據(jù)表(ADO、DAO、數(shù)組)表頭任意設(shè)置(多層支持,支持斜線),強(qiáng)大的分頁(yè)分組設(shè)置和統(tǒng)計(jì)功能(總計(jì)、頁(yè)合計(jì)、邏輯表合計(jì)、物理表合計(jì)、合計(jì)字段可定義任意多個(gè);總紀(jì)錄數(shù)、頁(yè)紀(jì)錄數(shù)、表紀(jì)錄數(shù);表號(hào)、頁(yè)號(hào)等都可作為“宏”使用);
可打印不規(guī)則表(可以使用表單元對(duì)象描述,還可使用html語(yǔ)法描述),例如收款單、報(bào)銷(xiāo)單等;
支持嵌套表格,例如,想打印增值稅發(fā)票之類(lèi)的表格,可將其分為幾個(gè)子表,而每個(gè)子表又是父表的一個(gè)單元(任意嵌套),通過(guò)此方法,再?gòu)?fù)雜的表格都可以輕松搞定;
支持票據(jù)套打,設(shè)置非常簡(jiǎn)單,例如某個(gè)元素設(shè)置為長(zhǎng)日期填充格式,打印時(shí)自動(dòng)將年月日填到空隙中,如果設(shè)置某個(gè)元素為金額大寫(xiě)填充格式,則僅需要在打印參數(shù)中提供金額值,即可自動(dòng)將大寫(xiě)文字填充到相應(yīng)位置。
3、本部件正是進(jìn)程內(nèi)ActiveX部件。
<END>
可以使用免費(fèi)的Seagate Crystal Report 6.0,網(wǎng)址在:
http://www.seagatesoftware.com/。它提供一個(gè)報(bào)表設(shè)計(jì)器和一系列對(duì)象、方法、屬性,能在運(yùn)行時(shí)操縱報(bào)表。
也可以使用OLE Automation,利用Excel或Word來(lái)打印報(bào)表。用Excel,先設(shè)計(jì)宏,導(dǎo)入外部數(shù)據(jù),設(shè)計(jì)其格式,打印等等,最后將宏的代碼復(fù)制到VB中,適當(dāng)修改后即可使用,這樣可以利用Excel的一切功能,打印出非常專(zhuān)業(yè)化的報(bào)表。如果打印表格類(lèi)型的報(bào)表,用Word設(shè)計(jì)出表格,在需要填寫(xiě)實(shí)際數(shù)據(jù)的地方加remark,然后在VB代碼中用實(shí)際數(shù)據(jù)替換remark,再打印,這樣比VB的Data Report方便多了。
<END>
Microsoft Visual Basic 6.0 專(zhuān)業(yè)版和企業(yè)版中的數(shù)據(jù)報(bào)表設(shè)計(jì)器(Data Report Designer)與數(shù)據(jù)環(huán)境設(shè)計(jì)器(Data Environment Designer)是數(shù)據(jù)訪問(wèn)的新內(nèi)容。Microsoft Developer Network Library Visual Studio 6.0 中文版所提供示例應(yīng)用程序:Samples\Vb98\DataRept\ 目錄下的Prjnwind.vbp 工程使用一個(gè)數(shù)據(jù)環(huán)境作為數(shù)據(jù)源,演示了數(shù)據(jù)報(bào)表設(shè)計(jì)器的基本功能。該示例在程序設(shè)計(jì)階段(Design Time)就已將DataEnvironment設(shè)為DataReport的數(shù)據(jù)源,并將打印格式也一并設(shè)好以備打印,這樣作不利于程序的通用性。當(dāng)然,我們可以在程序運(yùn)行階段(Run Time)用語(yǔ)句更改DataEnvironment 的連接(Connection)的命令(Command)所對(duì)應(yīng)的記錄集(rsCommand)等參數(shù)來(lái)打印不同的數(shù)據(jù)(二維表),換句話說(shuō)DataEnvironment是可編程的。其實(shí),DataReport還可以使用別的數(shù)據(jù)源(DataSource)。但是,為什么我們?cè)诔绦蛟O(shè)計(jì)階段不能將ADO Data 控件(ADODC)設(shè)為DataReport的數(shù)據(jù)源呢?原因很簡(jiǎn)單,DataReport 需要的是一個(gè)全局的或者是本設(shè)計(jì)器模塊內(nèi)的數(shù)據(jù)源(記錄集),而ADODC是窗體模塊級(jí)的,我們只需將Adodc.Recordset 傳給一個(gè)全局級(jí)的Recordset 變量,再將該Recordset 設(shè)為DataReport的DataSource 即可。這樣我們就可以脫離DataEnvironment使用DataReport打印動(dòng)態(tài)生成的Recordset了。DataReport使用的另一個(gè)難點(diǎn)就是在程序運(yùn)行階段用語(yǔ)句控制數(shù)據(jù)報(bào)表設(shè)計(jì)器的專(zhuān)用控件。我們只能通過(guò)VB6自身提供的DataReport.Sections.Item(Index).Controls.Item(Index)…這樣的語(yǔ)法來(lái)控制這些數(shù)據(jù)報(bào)表設(shè)計(jì)器專(zhuān)用控件,而且DataReport不能象窗體(Form)那樣可以在程序運(yùn)行階段用語(yǔ)句動(dòng)態(tài)加入控件,而且同類(lèi)控件無(wú)索引(Index),而是在整個(gè)DataReport的控件集中擁有一個(gè)索引來(lái)標(biāo)識(shí)控件,這樣就非常不利于分別控制不同類(lèi)的控件。還好,VB 提供了集合對(duì)象(Collection)我們就可以將數(shù)據(jù)報(bào)表設(shè)計(jì)器專(zhuān)用控件,根據(jù)其所在的區(qū)域(Sections)和所屬控件類(lèi)別等將它們分成若干集合,然后就可以通過(guò)控制集合的元素來(lái)準(zhǔn)確有效地控制這些元素所代表的控件。在程序設(shè)計(jì)階段我們要將足夠多的控件繪制到DataReport上備用。實(shí)現(xiàn)上面的程序代碼均可以編寫(xiě)到Sub DataReport_Initialize()事件過(guò)程里。經(jīng)過(guò)以上改造我們就可以在程序運(yùn)行階段動(dòng)態(tài)控制DataReport了。
<END>
做中國(guó)式報(bào)表之我見(jiàn)
(1)formula one 6.1
它只有兩點(diǎn)缺點(diǎn):不定行數(shù)據(jù)控制麻煩,打印預(yù)覽差。典型商用軟件:速達(dá)兩千,金財(cái)財(cái)務(wù)企業(yè)版等等。
(2)spread3
打印預(yù)覽很好,但是不能單元格合并,如果表格的表頭是兩層的,實(shí)現(xiàn)編程量也不小。典型商用軟件:金碟2000
,奧林島財(cái)務(wù)。
(3)vsview+vsflexgrid(http://www.videosoft.com),
用vsflexgrid7和vsview7結(jié)合打報(bào)表是目前我發(fā)現(xiàn)的最好的打印解決方案。幾乎沒(méi)什么缺點(diǎn),vsflexgrid的強(qiáng)大顯示功能眾所周知。用vsview控制打行頭,行尾,而表體就是vsflex.缺點(diǎn)是沒(méi)有設(shè)計(jì)模式。
(4)activereport1。1,crystalreport 8,這些報(bào)表工具雖然隨著版本的升級(jí)越來(lái)越強(qiáng)大,但是為咱中國(guó)人想的實(shí)在是太少了。
(5)cell3.3,很強(qiáng)但是很貴。
(6)apex truedbgrid 7.0.雖然表格很強(qiáng)大,但是打印實(shí)在是小兒科。不能打多行行頭、行尾。如果想做草稿打印用它也罷,畢竟很方便,打印效果也不差。
<END>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -