報表輸出的技巧二則
2024-07-21 02:09:02
供稿:網友
報表在日常事物處理中占十分重要的地位,用戶往往需要將數據庫中的內容以不同的格式輸出。powerbuilder提供了具有多種顯示風格的datawindow控件,只要加以靈活的運用,就能做出不同風格的報表。本文結合筆者的實際開發經驗,以一個報表的兩種實現方法為例,談談報表輸出的一點技巧。
一、 數據庫中的兩個table:project(項目)、manufacture(詢價廠商)。其結構如下:
project(xmbh,gg,xh,psyj……)
manufacture(xmbh,csmc,xjcx,gg,xh,bj……)
project表中的內容:
xmbh gg xh psyj
001 gg001 xh001 aaa
manufacture表中的內容:
xmbh csmc xjcx gg xh bj
001 廠商1 1 gg1 xh1 100.00
001 廠商2 2 gg2 xh2 101.00
001 廠商3 3 gg3 xh3 102.00
二、 輸出的報表格式:(實際報表中字的顏色均為黑色,底色均為白色)
項目編號 001
我方要求 廠商1 廠商2 廠商3
規格 gg001 gg1 gg2 gg3
型號 xh001 xh1 xh2 xh3
報價 100.00 101.00 102.00
評審意見 aaa
三、實現方法
從圖一中可以看出,該報表中包含project與manufacture兩個table的記錄,并且要求將manufacture中的記錄以列的形式輸出。具體實現方法如下:
方法1:
按圖一,創建一freeform格式的datawindow(dw_1),將project中所需的內容選出,設置其argument為xmbh。其格式即不含灰底中內容的圖一。
創建一label格式的datawindow(dw_2),將manufacture中所需的內容選出,同樣設置其argument為xmbh;雙擊該datawindow的空白區域,打開屬性對話框,主要設置definition屬性頁:
(1) label項: 設置label的寬度、高度、每頁的label個數;
(2) margins項:指定label的上、下、左、右以及label與label之間的間距;
(3) arrange項:label 的安排方式:從左到右或從上至下
打開dw_1,插入一nested
report控件,選擇report為dw_2。按圖一灰底區域的位置與大小調整report,同時設置該report的general、arguments屬性頁,設置general屬性頁的border為none,指定arguments頁中的expression為xmbh列(這是為了避免預覽或打印時出現“special
retrieval”對話框)。
調整dw_2中的column
的高度、寬度、大小以及column與column的間距,直至滿意為止。(為了調試方便,最好將dw_2中column的border設置為none)
最后,直接預覽或打印dw_1即可!
注:label格式datawindow的邊框無法修改,以至在dw_1預覽時仍可看到dw_2的頂部與底部不規則的邊框,但并不影響打印效果。要解決這個問題也并不難,只需在dw_1中插入二個與底色同色的矩形,分別放置在圖一灰色區域的頂部與底部,并將它們至于dw_2之上,然后將dw_1中的表格線“bring
to front”。
方法2:
按圖一,創建一freeform格式的datawindow(dw_1),將project中所需的內容選出,設置其argument為xmbh。其格式即不含灰底中內容的圖一。
再創建一freeform格式的datawindow(dw_2),將manufature中所需的內容選出,設置其argument為xmbh。注意:要將xjcx列選出,為了不顯示和打印該列,可將其foreground
color設為與底色同色(不能在datawindow中將該列刪除)。
打開dw_1,插入三個nested report控件,report
都選擇dw_2。按圖一灰底區域的位置與大小調整三個report,同時設置report的general、arguments屬性頁,設置general屬性頁的border為none,指定arguments頁中的expression為xmbh列。另外,對每一個report分別設置其criteria屬性頁,依次指定xjcx列的criteria值為1,2,3。
調整dw_2中的column 的高度、寬度、大小以及column與column的間距,直至滿意為止。
最后,直接預覽或打印dw_1即可!
上面的兩種方法是筆者對(圖一)這種類型的報表輸出的總結和概括,也可以說是一點技巧,希望能對大家有所幫助。