當(dāng)然,向?qū)е恢С趾?jiǎn)單和固定模式的報(bào)表開發(fā),如果你想讓您制作的報(bào)表更加的突出,更加的標(biāo)新立異,那么還是會(huì)遇到諸多的細(xì)節(jié)問(wèn)題。下面將為大家分享兩個(gè)大家制作報(bào)表過(guò)程中常見的問(wèn)題,對(duì)于報(bào)表的美化有一定的幫助。
一、 如何將圖片設(shè)為背景
很多朋友希望在報(bào)表中嵌入一張漂亮的背景,來(lái)作為點(diǎn)綴;或者說(shuō),報(bào)表的背景需要印有公司的水印,或印一些像證件、紙幣上面的防偽圖形。于是,他們將這些Report Builder中插入了圖像,然后把它設(shè)置在最底層。然后在報(bào)表中插入圖表,插入文字,并把他們至于圖片的上層,調(diào)整好了位置。可是當(dāng)他們開始執(zhí)行報(bào)表時(shí),問(wèn)題出現(xiàn)了:剛剛編輯好的報(bào)表全亂了套,圖像是圖像,文字是文字,圖表是圖表,各個(gè)組件都互相排斥的擺放在報(bào)表上,互不重疊,明顯跟編輯時(shí)的狀態(tài)不一樣。
那么,為什么會(huì)這樣呢?原因在于報(bào)表中組件在位置上是互相排斥的,只有使用具有容器功能的組件,才能在它里面插入其他的組件。而圖像就只是組件而已,他并沒(méi)有容器功能。所以沒(méi)辦法直接把圖像作為背景,擺放在其他圖表和文字的底層。
根據(jù)這種情況,我們可以利用具有容器功能的矩形框或者表格來(lái)完成。具體步驟如下:
首先,可以在報(bào)表中先插入一個(gè)矩形框,然后右鍵點(diǎn)擊該矩形框,點(diǎn)擊"矩形框?qū)傩?quot;,在"填充"選項(xiàng)卡中,將圖片的來(lái)源設(shè)置為"嵌入的(Embedded)",然后就可以將我們要設(shè)置為背景的圖片導(dǎo)入進(jìn)來(lái)。

導(dǎo)入后再將報(bào)表、文字等組件都逐一插入到這個(gè)矩形框當(dāng)中。記得這里的操作是插入,也就是說(shuō),需要先點(diǎn)擊了矩形框之后,再添加其他組件;如果對(duì)于之前在矩形框之外的組件,需要先通過(guò)剪切,然后再選擇矩形框,進(jìn)行粘帖,這才真正完成了一個(gè)插入的操作。
這樣就實(shí)現(xiàn)了將圖片設(shè)為報(bào)表背景的工作了。以下就是設(shè)計(jì)后的報(bào)表效果。

二、 如何設(shè)置柱狀圖的柱條大小
在Report Builder 3.0中,柱狀圖中的柱條在默認(rèn)情況下是自適應(yīng)大小的,當(dāng)表中柱條很少的時(shí)候,柱條的寬度會(huì)變得很寬,這樣子顯然會(huì)很丑,影響美觀?墒钱(dāng)他們想改變這個(gè)值的時(shí)候,卻怎么也找不到設(shè)置寬度的地方,很是郁悶。這個(gè)問(wèn)題相信很多朋友都普遍遇到過(guò),因?yàn)镽eport Builder 實(shí)在是把這個(gè)設(shè)置藏得太深了。下面就為大家簡(jiǎn)單的介紹如何找到他們:
首先Reporting Builder 3.0的菜單欄中的視圖TAB選項(xiàng)卡中,將"屬性"勾上。屬性窗口將在屏幕的右側(cè)被打卡。
在柱狀圖報(bào)表中,點(diǎn)擊報(bào)表中的柱條,右側(cè)的屬性窗口里將出現(xiàn)柱條的屬性。
展開CustomerAttributes,將可看到設(shè)置柱條寬度的屬性。
這里面的PointWidth是指柱條所占寬度的比例,默認(rèn)值是0.8,取值范圍一般是是0到1,當(dāng)使用該屬性時(shí),柱條寬度將根據(jù)柱條的數(shù)目進(jìn)行縮小或擴(kuò)大;PixelPointWidth是指用柱條的以像素為單位的寬,默認(rèn)為0,當(dāng)不為0時(shí),PointWidth將失效,柱條寬度將固定大小不變;同時(shí)我們也可以設(shè)置采用PointWidth,然后用MinPixelPointWidth和MaxPixelPointWidth來(lái)設(shè)置柱條寬度變化的最小值和最大值。
當(dāng)然,這些值還可以使用表達(dá)式來(lái)靈活的應(yīng)用他們,如果你數(shù)學(xué)能里夠好,相信固定了柱條大小后如何讓你的圖表寬度隨著柱條的多少而變化的問(wèn)題也難不倒你。這里給個(gè)簡(jiǎn)單提示,你可以通過(guò)以下表達(dá)式獲得柱條的多少:CInt(CountDistinct(Fields!LocationName.Value,"DataSet1"))
