使用過VB5的人都會發出這樣的贊譽-VB5真牛!的確,Visual Basic 5.0 以其強大的功能和優異的開發環境深深吸引了眾多編程迷。徹底中文化的VB5中文版更深得專業人員及編程愛好者的喜愛。筆者在為某單位設計人事履歷管理系統時就選用了VB5中文版。可是在設計報表時遇到了難題, 用printer對象的enddoc方法來實現打印的話,輸出數十張格式各異的報表顯然是太繁瑣了。可能Miscrosoft公司也意識到了這一點,最終我發現它在 VB5企業版的外接程序中為我們提供了一個外接報表設計工具。
打開VB5菜單選擇"外接程序\報表設計器",報表設計界面就呈現在我們眼前。可能是外接程序的原因,這是個全英文的界面。現在程序要求你進行用戶登記,登記完了才發現,這個好東東有個好聽的名字-水晶報表,而且居然是希捷軟件信息管理公司出品的!希捷(seagate)的硬盤大家不會陌生,沒想到它還會和微軟去合作。閒話少說,接著往下看。
手上正好有個履歷表需要打印,就看看它如何實現access表數據的直接打印。首先創建一個新報表,在菜單中選擇"new"之後立刻出現了"create report expert"(創建報表專家)窗口,接著只要根據提示step by step就行了。專家會讓你選擇報表的式樣,然後請你添加數據庫文件(如lvli.mdb)以及庫文件中要打印的表數據(table)。哇!它還有超級連接實現多表打印呢。再按"next",專家這時讓你自由選擇表中要打印的字段名了。記錄的排序是報表必不可少的功能,專家也為你想到了。它還能幫你添加列統計,定義組和組總計,自動生成頁碼,插入公式模板在字段間進行復雜計算,等等。好了,一切設置完成,按下"報表預覽",一張如你所願的報表就出現在眼前。什麼?你不滿意?沒關系。按下"設計"項,就象在字處理軟件中一樣,所見即所得的頁面出現了。每個字段名和文本就象VB中的對象一樣可以任意移動和改變字體類型及大小。
爽吧!不過還沒和VB程序結合呢。水晶報表已經為你准備了它的最佳拍檔-crystal ActiveX 控件。在VB5菜單中選擇"工程\部件\crystal report control 4.6",這時crystal ActiveX 控件就加入了VB5控件欄。把crystal ActiveX 控件放入窗體,把剛才生成的報表文件名稱寫入控件的reportfilename屬性,就完成了和VB5程序的結合。怎樣在程序中啟動報表打印?很簡單,在某個對象如"按鈕"的鼠標點擊事件過程中加入一行代碼就行。即:
private sub Command1_click()
crystalreport1.action=1
End Sub
當程序運行時,鼠標點擊窗體上按鈕,報表立即出現在計算機屏幕上供你預覽,按下報表下方的打印機圖標,會出現打印對話框,可以指定打印頁的范圍和打印張數。點擊"ok"按鈕,清晰完整的履歷報表就出現在眼前。
確實,水晶報表設計器以其完善的功能和良好的使用界面彌補了VB5在報表打印方面的不足。隨著深入的使用,筆者更驚喜地發現使用crystal ActiveX 控件能和data數據庫控件相結合動態生成報表!並且可以在動態報表生成前定義報表的格式!眾所周知,data控件的數據源屬性可以接受表、表查詢甚至SQL語言的select查詢語句。如果data控件可以和crystal控件綁定,那麼在管理軟件中每一次帶變量的多重查詢結果都可以立即打印出來。這給編程帶來了極大的方便。這兒,我把自己摸索出的有格式動態報表的建立方法奉獻給大家。步驟如下:
1、添加data控件,crystal ActiveX控件和command button按鈕在窗體上。
2、設置data控件的數據庫名屬性和數據源屬性。
3、對於crystal ActiveX控件:
(1)設置報表源屬性為"3-crptDatacontrol"。
(2)打開控件的屬性頁,選擇"數據綁定報表"項。
(3)選擇"報表另存為",為即將生成的報表起文件名並保存。
4、在VB5菜單中選擇"外接程序\報表設計器",運行水晶報表設計器,打開步驟3中保存的報表文件,按自己的要求進行格式的編輯,如字體、顏色、框線等等。完成後再次保存。
5、再進入VB5,設置crystal ActiveX控件的報表源屬性(reportsource)為"0-crptReport",報表文件名屬性(reportfilename)設置為步驟4中已保存的報表名。
6、在command button按鈕的click事件過程中寫入"crystalreport1.action=1"命令行。
現在,動態報表創建完成,試著運行一下吧,效果怎麼樣?