WEB开发网      婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牆濮涚紓浣哄█缁犳牠寮诲鍫闂佸憡鎸诲銊╁箲閵忕姭妲堟繛鍡樺姇椤庢捇姊洪崨濠傚鐎殿喖鐖奸獮鏍箛椤旂偓锛忛梺鍛婃寙閸曨偅鐣梻浣哥枃椤宕归崸妤€绠栭柍鍝勫暊閸嬫捇宕烽鐐愩垺銇勯妷锔剧疄婵﹤鎼晥闁搞儜鈧崑鎾澄旈崨顓狅紱闂佽宕橀褎顢婇梻浣告啞濞诧箓宕归幍顔句笉婵炴垯鍨洪悡鏇熴亜閹板墎绋荤紒鈧崘鈹夸簻閹艰揪绱曟晥濠殿喖锕ㄥ▍锝囧垝濞嗗繆鏋庨柟顖嗗啫顥愰梻鍌欑閹芥粍鎱ㄩ悽绋跨婵炲棙鍔掔换鍡涙煟閵忊懚鍦矆鐎n偁浜滈柡宥冨姀婢规﹢鏌涢悙顏勫婵﹥妞藉Λ鍐归妶鍡欌姇闁瑰嘲鎳橀獮鎾诲箳瀹ュ拋妫滈梻鍌欑濠€閬嶅磿閵堝鈧啴宕卞☉妯煎幈闂佸湱鍎ら〃鍡涙偂閺囥垺鐓涢柛銉e劚婵$厧霉濠婂嫮鐭嬮柕鍥у缁犳盯鏁愰崨顓犵潉闂備礁鎼径鍥焵椤掆偓绾绢參寮抽崱娑欏€甸柨婵嗛婢т即鏌¢崱娆忊枅闁哄睙鍕嚤婵炲棙鍨甸崺宀勬⒑闂堟稒顥為悽顖涘浮閿濈偛鈹戠€n偄浜楅柟鑹版彧缁插ジ鎮介懡銈囩=濞达綀顕栧▓鏇㈡煕閵娿儳浠㈡い顐㈢箳缁辨帒螣鐠囧樊鈧挾绱撴担鍦槈妞ゆ垵鎳庨埢鎾活敇閻愨晜鏂€濡炪倖姊归弸濠氬礂椤掑倻纾奸柣妯挎珪瀹曞矂鏌曢崱鏇狀槮妞ゎ偅绻堥獮鍥ㄦ媴閸忓鐎告繝鐢靛Х閺佸憡鎱ㄩ銏犵;闁规崘绉ぐ鎺撴櫜闁搞儮鏂傞埀顒€锕弻锟犲焵椤掍胶顩烽悗锝庡亞閸樿棄鈹戦埥鍡楃仭妞ゆ垶鐟╁畷鐢碘偓锝庡厴閸嬫挾鎲撮崟顒€浠╅梺绋挎唉缁箖鎮橀崘顔解拺缂備焦鈼ら鍕靛殨闁割偅娲栭悿顕€鏌i幇顔芥毄缁炬儳銈搁弻娑氫沪閻愵剛娈ら柡浣哥墦閹鎲撮崟顒傤槰缂備緡鍠栫换妯挎闁诲酣娼ч幗婊兾涢鐐寸厵妞ゆ牕妫旂粈浣圭椤曗偓閹鈻撻崹顔界亪闂佺粯鐗滈崢褔鎮鹃悜鑺ュ亗閹煎瓨蓱椤秴鈹戦埥鍡楃仧閻犫偓閿曞倹鍊电€规洖娲ㄧ壕浠嬫煕鐏炲墽鎳呴柛鏂跨У閵囧嫰濡搁妷锔绘闂佷紮绲剧换鍫ョ嵁閺嶃劍濯存慨婵嗘湰閹蹭即姊绘担铏瑰笡婵☆偄鍟磋棢闁规崘顕уЧ鏌ユ倵閿濆骸鏋熼柣鎾跺枑娣囧﹪濡堕崒姘闂備胶绮〃鍛涘Δ鍛厺闁圭偓绶為弮鍫濆窛妞ゆ棁顫夌€氬ジ姊洪懡銈呅㈡繛鑼█閸┾偓妞ゆ帒鍟悵顏堟煟韫囧﹤浜鹃梻鍌氬€风粈渚€骞栭锕€绠犻柟閭﹀幗閸欏繘鏌熺紒銏犳灍闁稿鏅犻弻锝夊Χ鎼达紕浠滄繛瀛樼矊缂嶅﹪寮婚悢鍏煎€绘俊顖濆亹閻f椽姊洪崫鍕櫤缂佽鐗嗛~蹇撁洪鍜佹濠电偞鍨堕懝楣冦€傞崫鍕ㄦ斀闁宠棄妫楁禍婵嬫煟閻斿弶娅婇柕鍡曠閳诲酣骞掗弮鍌涙緫闂備礁鎼崯顐﹀磹婵犳碍鍎婇柛顐犲劜閳锋垶鎱ㄩ悷鐗堟悙闁诲繐寮剁换娑欐媴閸愭彃顏い鈺冨厴閺屻劑寮撮悙娴嬪亾瑜版帗鍋傞柡鍥ュ灪閻撳繐鈹戦悙鑼虎闁告柣鍊濋弻娑㈠煛鐎n剛蓱濡炪們鍔婇崕鐢稿箖濞嗘挸绾ч柟瀛樼箥濞兼碍淇婇妶鍥ラ柛瀣仱閺佸啴濮€閵堝啠鍋撴担绯曟瀻闁圭偓娼欏▓鎰版⒑閸愬弶鎯堟い鎴濇喘閻涱噣濮€閵堝棌鎷婚梺绋挎湰閻燂妇绮婇悧鍫涗簻妞ゆ劑鍩勫Σ鎼佹煟閿濆懎妲婚摶锝夋煠濞村娅囬柣鎾愁儏椤啴濡堕崱姗嗘⒖闂佽法鍠嗛崕鑼矉瀹ュ牄浜归柟鐑樻尵閸樼敻姊虹紒妯虹仸閽冮亶鎮樿箛锝呭箹闂囧绻濇繝鍌氭殶缂佸鍎ら幈銊︾節閸涱噮浠╃紓浣介哺鐢帟鐏掗梺鎯х箻閳ь剚绋掗、姗€姊婚崒娆戝妽閻庣瑳鍏犲搫顓兼径濠勬煣濠电偞鍨剁划搴㈢闁秵鈷掑ù锝呮啞閸熺偞绻涚拠褏鐣电€规洖缍婇弻鍡楊吋閸涱垰骞堥梻浣侯攰閹活亪姊介崟顖涘亗婵炲棙鎸婚悡鐘崇箾閺夋埈鍎愭繛鍛噹闇夐柣妯虹-閻﹪鏌嶇憴鍕伌闁搞劑绠栭幃娆撴寠婢跺鍨濋梻鍌欐祰椤曟牠宕板Δ鍛偓鍐川閺夋垹鍙€婵犮垼鍩栭崝鏇犵不閹惰姤鐓欓柟顖嗗苯娈堕悷婊勬緲濞层劎妲愰幘璇茬<婵炲棙鍨肩粣妤呮⒑閸濄儱校闁绘濞€閵嗕線寮介鐐茬獩闂佸湱鈷堥崢浠嬪疾閿濆鈷戠紒瀣硶缁犳娊鏌涘Ο鐘叉噺椤愪粙鏌i幇顔剧瘈缂佽妫欓妵鍕冀閵娧呯厒闁汇埄鍨辩粙鎺旀崲濞戙垹宸濇い鎾跺枎閺嬬姴鈹戦纭峰姛缂侇噮鍨堕獮蹇涘川鐎涙ê浠梻渚囧弿缁犳垵鈻撳┑鍫㈢=闁稿本鐟︾粊鐗堛亜閺囧棗娲ょ壕褰掓煕椤垵娅橀柛銈嗘礈缁辨挻鎷呯拹顖滅窗缂備讲妾ч崑鎾绘⒒娴h鍋犻柛搴灦瀹曟繂顓奸崨顏呯€洪梺鎼炲労閸撴岸鍩涢幋鐘电<閻庯綆鍋勯婊勭節閳ь剟骞嶉鍓э紲闁诲函缍嗛崑鍛暦瀹€鈧埀顒冾潐濞插繘宕规禒瀣畺濞寸姴顑呭婵嗏攽閻樻彃顏╂鐐搭殜濮婃椽鎮烽弶鎸庡€梺浼欑秵娴滎亜鐣风憴鍕瘈婵﹩鍓涢崢鎰版⒑閸濆嫭鍌ㄩ柛銊︽そ閹繝濡烽敂钘夊伎濠碘槅鍨伴悘婵嬫偂閹扮増鐓熼柟鎹愭硾閺嬫盯鏌i幙鍐ㄤ喊鐎规洖鐖兼俊鐑藉Ψ閵夈儛鎴犵磽閸屾瑧顦︽い鎴濈墕閻g兘鎮介崹顐綗闂佸湱鍎ゅ鑽ゅ閸忛棿绻嗘い鏍ㄧ箓娴滃綊鏌i敐鍫燁仩缂佽鲸鎸婚幏鍛存惞閻熸壆顐肩紓鍌欐祰椤曆囨偋閸℃稒鍋╃€瑰嫰鍋婂ḿ銊╂煃瑜滈崜姘┍婵犲偆娼扮€光偓婵犲唭銊х磽閸屾瑦绁板鏉戞憸閹广垽宕煎┑鎰稁缂傚倷鐒﹁摫濠殿垰顕槐鎺戔槈濮楀棗鍓板┑鐐茬墛閸旀瑥顫忓ú顏勭闁绘劖褰冮‖鍡涙⒑閸涘⿴娈旈柛鐔锋健閹箖鎮滅粵瀣櫖闂佺粯鍔樼亸娆愵殽閸ヮ剚鈷戦柣鐔煎亰閸ょ喎鈹戦鈧ḿ褔鍩㈤幘娣亝闁告劏鏂侀幏铏圭磽閸屾瑧鍔嶉拑閬嶆煃闁垮娴柡灞界Т閻o繝骞嶉灏栧徍闁诲孩顔栭崳顕€宕戞繝鍌滄殾闁圭儤顨嗛崐鐑芥倵閻㈢櫥褰掔嵁閸儲鈷掑ù锝囨嚀閳绘洟鏌℃笟鍥ф珝鐎规洘鍨块獮妯肩磼濡厧骞愰梻浣告啞娓氭宕板璺虹疇闁告侗鍠曠换鍡涙煕濞嗗浚妲稿┑顔兼喘閹藉爼鏁愭径瀣哗濠电偞鍨剁敮鎺撴櫠閺屻儲鐓涢柛灞绢殔娴滈箖姊婚崒姘偓鐑芥嚄閸撲礁鍨濇い鏍仜缁€澶愭煛閸モ晛鈧綁鎮㈤崫銉х槇闂佹悶鍎滈崘鈺佸姃闂傚倷鑳剁划顖炲蓟閵娾晜鍎嶆繝闈涱儏缂佲晠鏌ら幁鎺戝姌濞存粍绮撻弻锟犲礃閵婏箑顦╁銈冨劚椤︾敻寮诲☉銏犳閻犲洦绁撮崑鎾斥攽鐎n亞顔戦梺鍓插亝濞叉﹢宕愰悜鑺ョ厽闁瑰鍋嶇紓姘舵煕濮椻偓娴滆泛顫忓ú顏勪紶闁告洦鍓欓崑宥夋⒑閸涘﹥鐓ラ柡鍫墴瀵煡宕奸弴銊︽櫖闂佺粯鍔曢顓㈠储閸楃偐鏀介柣鎰级椤ユ粎绱掔紒妯虹缂侇喚绮换婵嗩潩椤撶姴骞愰梺璇茬箳閸嬬喖寮查锝嗘珡闂佽姘﹂~澶娒洪敃鍌氱;濠电姴鍊婚弳锕傛煟閺冨倵鎷¢柡浣告閺屽秷顧侀柛鎾寸懇閸┿垹顓兼径瀣珳闂佹悶鍎弲婵嬫晬濠靛洨绠鹃弶鍫濆⒔缁嬭崵鎲搁弶鍨殲缂佸倸绉归幃娆擃敆閸屾粎妲囬梻渚€娼ф蹇曞緤閸撗勫厹闁绘劦鍏欐禍婊堟煙鐎涙ḿ绠栫€瑰憡绻勭槐鎺楊敊閸撗冪闂侀潧鐗炵紞浣哥暦濮椻偓閸╋繝宕橀妸銉ь吋闂傚倷娴囬褏鈧稈鏅濈划娆撳箳閹寸姴绠甸柣鐘充航閸斿孩绋夊鍡樺弿婵$偠顕ф禍楣冩⒑閸濆嫯顫﹂柛鏂跨焸閸┿儲寰勬繛銏㈠枑瀵板嫰鎯傞崫銉戦梺闈涙搐鐎氱増淇婇幖浣规櫜闁告侗鍘艰闂傚倷娴囬鏍窗濡ゅ懏鍋¢柍鍝勬噷閳ь兛绶氬顕€宕煎┑鍫Ч婵$偑鍊栭幐鑽ゆ崲閸曨厾鐭嗛柛鏇ㄥ灡閳锋帡鏌涚仦鍓ф噭缂佷胶澧楅妵鍕即閻斿搫鈷岄悗瑙勬磻閸楀啿顕f禒瀣垫晝闁靛牆娴傚Σ绋库攽閻樺灚鏆╁┑顔芥尦瀹曟劖绻濆顒佽緢闂佹寧娲栭崐褰掓偂濞嗘劑浜滈柡宥庡亜娴犳粌霉濠婂懎顣煎ǎ鍥э躬閹崇姵锛愬┑鍡橆唲闂備礁鐤囬~澶愬垂閸ф鏄ラ柛鏇ㄥ灠缁€鍐煏婵炑冩噷閸嬧€斥攽閿涘嫬浜奸柛濞垮€濆畷銏°偅閸愩劎顦у┑鈽嗗灟鐠€锕傚吹閺囥垺鍋i柛銉e妿閵堝瓨淇婇幓鎺斿ⅵ闁哄本娲濈粻娑㈠即閻戝棙缍岄梻浣稿暱閹碱偊骞婅箛娑欏亗闊洦鎼╅悢鍡涙偣妤︽寧顏犲褎娲熼弻娑㈠籍閳ь剟骞愰幎钘夎摕婵炴垯鍨瑰Λ妯荤箾閸℃瑥浜惧Δ鏃傜磽閸屾瑦绁板瀛樻倐楠炴劖绻濆顒傤唵闂佸憡渚楅崹鎶芥儗濞嗘挸绠归悗娑櫳戠亸顓灻瑰⿰鍫㈢暫闁哄本绋戦埞鎴﹀礋椤愩垹袘闂備焦妞块崢浠嬪箰妤e啫绠熼柟闂寸劍閸嬪鏌涢锝囩畼闁荤喆鍔戝娲传閸曢潧鍓紓浣藉煐瀹€绋款嚕婵犳碍鍋勯柣鎾虫捣椤︻參鎮峰⿰鍐闁轰緡鍠栭埥澶愬閿涘嫬骞愰梻浣告啞娓氭宕板Δ鍛9闁规壆澧楅悡娑㈡倶閻愰鍤欏┑顔煎€块弻鐔碱敊閸濆嫧鍋撳┑鍡欐殾闁圭儤鍨熷Σ鍫熸叏濡も偓濡梻妲愰敓锟� ---闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻锝夊箣閿濆憛鎾绘煕婵犲倹鍋ラ柡灞诲姂瀵噣宕奸悢鍛婎唶闂備胶枪椤戝棝骞愰崜褍鍨濇い鎾跺亹濡插牊淇婇姘儓缂佺姾顕ч埞鎴︽倷閸欏鏋欐繛瀛樼矋缁捇骞冮垾鏂ユ闁靛骏绱曢崢鍗炩攽閻愭潙鐏ョ€规洦鍓熼悰顔嘉熷Ч鍥︾盎闂佸搫鍊圭€笛囁夐姀鈩冨弿濠电姴鎳忛鐘绘煙閻熸澘顏┑鈩冩倐婵$兘鏁傞幆褏绋堥梻鍌氬€烽懗鍫曞箠閹捐鍚归柡宥庡幖缁狀垶鏌ㄩ悤鍌涘
开发学院数据库MSSQL Server SQL Server 2005报表设计:最佳实践和指导 阅读

SQL Server 2005报表设计:最佳实践和指导

 2007-05-15 09:28:03 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顖毿撻柟渚垮妼椤粓宕卞Δ鈧獮濠勭磽閸屾艾鈧懓顫濋妸鈺佺疅缂佸顑欓崥瀣煕椤愵偅绶氱紓鍐╂礋濮婂宕掑▎鎴М濠电姭鍋撻梺顒€绉甸幆鐐哄箹濞n剙濡肩紒鎰殜閺屸€愁吋鎼粹€茬敖婵炴垶鎸哥粔鐢稿Φ閸曨垰鍐€妞ゆ劦婢€濞岊亪姊虹紒妯诲蔼闁稿海鏁诲濠氭晲婢跺﹤宓嗛梺缁樺姈缁佹挳宕戦幘璇叉嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻濞戔懞鍥偨缁嬫寧鐎梺鐟板⒔缁垶宕戦幇鐗堢厵缂備焦锚缁椦囨煃瑜滈崜锕傚矗閸愵煈娼栭柛婵嗗珔瑜斿畷鎯邦槾濞寸姴銈稿铏规嫚閼碱剛顔夐梺鐓庣秺缁犳牠骞冩ィ鍐╁€婚柦妯侯槼閹芥洟姊洪棃娑辨濠碘€虫喘瀹曘垽鎮介崨濞炬嫼闁荤喐鐟ョ€氱兘宕箛娑欑厱闁绘ê纾晶鐢告煏閸℃鈧湱缂撴禒瀣窛濠电姴瀚獮鍫ユ⒑绾懎顥嶉柟娲讳簽濡叉劙寮撮悢鍝勨叞闂傚倸鍊风欢姘缚瑜嶇叅闁靛牆娲犻崑鎾愁潩椤愩垹绁梺缁樹緱閸o綁鐛幒鎳虫棃鍩€椤掑倻涓嶉柨婵嗘缁♀偓闂傚倸鐗婄粙鎴﹀汲濞嗗緷鐟扳堪閸垻鏆梺鍝勭焿缂嶄焦鎱ㄩ埀顒勬煃閹増纭炬繝鈧潏銊х彾闁哄洨鍠撶弧鈧┑顔斤供閸橀箖宕㈤悽鍛娾拺缂備焦锚婵箓鏌涢幘鏉戝摵闁诡喗蓱濞煎繘濡搁妶鍥╃暰闂備礁婀辩划顖滄暜閻愬瓨娅犳繛鎴炴皑绾捐偐绱撴担璐細婵炴彃顕埀顒冾潐濞叉牕鐣烽鍐簷闂備礁鎲¢崝鏇㈠疮閻樿绀堟繝闈涚墛瀹曞弶绻涢幋鐐ㄧ細闁哄棗妫楅埞鎴︽偐鏉堫偄鍘¢梺杞扮劍閻楁粎妲愰幘瀛樺濞寸姴顑呴幗鐢告⒑閸︻厽鍤€婵炲眰鍊濋幃楣冩倻閽樺顔婇梺瑙勬儗閸樹粙宕撻悽鍛娾拺闁荤喐婢橀幃渚€鏌i幒鐐电暤闁诡喗顨婇獮鏍ㄦ媴閸忓瀚藉┑鐐舵彧缁插潡宕曢妶澶婂惞闁逞屽墴濮婃椽骞栭悙娴嬪亾閺嶎厽鍋嬮柣妯垮吹瀹撲線鐓崶銊р姇闁哄懏鎮傞弻銊╂偆閸屾稑顏�婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘垿濡甸崟顖氱闁告鍋熸禒鑲╃磽娴e搫顎岄柛銊ョ埣瀵鈽夐姀鐘电杸闂傚倸鐗婄粙鎺楁倶閸儲鍊甸柣鐔哄閸熺偟绱掔拠鎻掓殻濠碉紕鏁诲畷鐔碱敍濮橀硸鍟嬮梺璇查叄濞佳囧箺濠婂牊鍋╁┑鍌氭啞閳锋垹鐥鐐村婵炲吋鍔栫换娑㈡嚑椤掆偓閺嬪孩銇勯銏㈢缂佽鲸甯掕灒闁兼祴鏅滈崵宀勬⒒娓氣偓閳ь剛鍋涢懟顖涙櫠椤旇偐鏆嗛柨婵嗙墕閸斿灚銇勯敂鐣屽弨闁诡噯绻濇俊鑸靛緞鐎n剙甯鹃梻浣稿閸嬪懐鎹㈤崘顔肩;妞ゅ繐鎳愮粻鍓р偓鐟板閸犳洜鑺辨繝姘畾闁绘柨鍚嬮埛鎴︽倵閸︻厼校闁靛棗鍟撮弻銈夊礃閼碱剙鐓熼悗瑙勬礃缁诲牓寮崘顔肩劦妞ゆ帒瀚ч埀顒佹瀹曟﹢顢欓崲澹洦鐓曢柍鈺佸枤濞堟﹢鏌i悢绋垮婵﹥妞介幃鈩冩償閳╁啯鐦i梻浣虹帛閻楁洟濡剁粙璺ㄦ殾闁绘垶岣跨弧鈧梺鎼炲劀閸愩劎銈梻鍌欑窔濞佳勵殽韫囨洘顫曢柡鍥ュ灩閸屻劍銇勮箛鎾跺闁抽攱鍨块弻鐔兼嚃閳轰椒绮堕梺鍛婃⒐椤ㄥ﹪寮婚敓鐘插窛妞ゆ棃鏁慨鍥╃磽娴gǹ鈧湱鏁悢濡撳洨鈧潧鎽滅壕濂稿级閸稑濡肩紒妤佺缁绘盯鎮℃惔锝囶啋闂佺硶鏂侀崜婵嬪箯閸涘瓨鐓ラ悗锝呯仛缂嶆姊婚崒姘偓宄懊归崶褜娴栭柕濞炬櫆閸婂潡鏌ㄩ弴鐐测偓鍝ョ不閺屻儲鐓曢柕澶樺枛婢ь噣鏌$€b晝绐旈柡宀€鍠栧畷婊嗩槾閻㈩垱鐩弻锟犲川椤旇棄鈧劙鏌$仦璇插闁诡喓鍊濆畷鎺戔槈濮楀棔绱�闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顖毿撻柟渚垮妼椤粓宕卞Δ鈧獮濠勭磽閸屾艾鈧懓顫濋妸鈺佺疅缂佸顑欓崥瀣煕椤愵偅绶氱紓鍐╂礋濮婂宕掑▎鎴М濠电姭鍋撻梺顒€绉甸幆鐐哄箹濞n剙濡肩紒鎰殜閺屸€愁吋鎼粹€茬敖婵炴垶鎸哥粔鐢稿Φ閸曨垰鍐€妞ゆ劦婢€濞岊亪姊虹紒妯诲蔼闁稿海鏁诲濠氭晲婢跺﹤宓嗛梺缁樺姈缁佹挳宕戦幘璇叉嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻锝夊箣閿濆憛鎾绘煕閵堝懎顏柡灞诲€濆畷顐﹀Ψ閿旇姤鐦庡┑鐐差嚟婵潧顫濋妸褎顫曢柟鎹愵嚙绾惧吋绻涢崱妯虹瑨闁告﹫绱曠槐鎾寸瑹閸パ勭彯闂佹悶鍔岄悥鍏间繆閹绢喖绀冩い鏃傚帶缁愭盯姊洪崫鍕垫Ч闁搞劌缍婂畷銏犆洪鍛偓鍨殽閻愯尙浠㈤柛鏃€纰嶉妵鍕晜鐠囪尙浠搁悗瑙勬穿缁绘繈鐛惔銊﹀殟闁靛/鍐ㄥ闂傚倸饪撮崑鍕洪敃鈧叅闁哄秲鍔庢晶锟犳⒒閸屾瑦绁版い鏇嗗應鍋撻崹顐㈡诞鐎规洘绮撻幃銏$附婢跺绋侀梻浣瑰劤缁绘劕锕㈡潏鈺侇棜闁稿繘妫跨换鍡樸亜閺嶃劎顣查柟顖氱墛閵囧嫰顢曢姀鈶裤垺銇勯鍕殻濠碘€崇埣瀹曞崬螖閳ь剟锝炴惔銊︹拺闁告稑饪撮悞濂告煕閵夋垵鎳庡銊モ攽閻橆喖鐏辨繛澶嬬閻у矂姊虹紒妯荤叆闁告艾顑夐幃锟犲Ψ閳哄倸鈧敻鏌ㄥ┑鍡涱€楅柛妯绘尦閺屾稓鈧綆鍋呯亸鎵磼缂佹ḿ绠撴い顐g箞椤㈡ê鈽夊▎蹇d紪闂備浇宕甸崰鎰垝鎼淬垺娅犳俊銈呭暞閺嗘粓鏌熼悜妯诲暗妞も晜褰冮湁闁绘挸娴烽幗鐘绘煟閹惧瓨绀嬮柡宀€鍠栭獮鍡氼檨闁搞倗鍠栭弻宥夋寠婢舵ɑ鈻堥梺鍝勮嫰缁夊墎妲愰幒鎳崇喖鎳¢妶鍛辈濠碉紕鍋戦崐銈夊磻閸涱垱宕查柛顐犲劚缁犵姵绻濇繝鍌涘櫣闁哄鐗婃穱濠囶敍濠垫劕娈銈呯箰缂嶅﹤顫忔繝姘<婵炲棙鍩堝Σ顕€姊虹涵鍜佸殝缂佽鲸娲滈崚鎺戔枎閹惧磭顓洪梺鎸庢煥閹碱偅绂嶆總鍛娾拺闁告繂瀚峰Σ褰掓煕閵娧冩灈鐎殿喗鎮傚顕€宕奸悢鍝勫箰闂備礁鎲¢崝褏寰婇懞銉ь洸闁告挆鍛紳婵炶揪缍€濞咃絿鏁☉姘辩<閻庯綆鍋呯亸鎵磼閸屾稑娴柡浣稿暣瀹曟帒顫濋幉瀣簥濠电姵顔栭崰妤呮晝閳哄懎绀堥柨鏇炲€归崐鐢告煙閹澘袚闁抽攱甯掗湁闁挎繂鎳忛幉鎼佹煥濞戞ḿ肖缂佽鲸甯¢、姘跺川椤撶姳妗撴俊銈囧Х閸嬬偤宕归崹顔炬殾闁割偅娲﹂弫鍡涙煕鐏炵偓鐨戦柕鍫畵濮婅櫣鎷犻幓鎺戞瘣缂傚倸绉村Λ娆戠矉瀹ュ鍐€妞ゆ挾鍋熼崫妤佺箾鐎电ǹ孝妞ゆ垵妫濋幃鈥斥枎閹剧补鎷哄銈嗘尪閸斿酣鎮鹃崡鐑嗙唵鐟滄粓宕归柆宥呂﹂柛鏇ㄥ灠濡﹢鏌涢…鎴濇灀闁稿鎸鹃幉鎾礋椤撴稒鏁靛┑鐘垫暩婵潙煤閿曞倸纾归梺鍨儍娴滄粓鐓崶銊﹀碍妞ゅ繈鍊濋弻娑氣偓锝庡亝瀹曞瞼鈧鍠栭埀顒傚櫏濡俱劌鈹戦悙鎻掓倯闁绘娲熼崺鐐哄箣閿旇棄浜归柣搴℃贡婵挳藟濠靛鈷戠紒瀣劵椤箓鏌涢弬鍧楀弰妤犵偛顦~銏犵暆閳ь剟鎮块埀顒€鈹戦悙鏉戠仸瀹€锝呮健閹潡宕ㄧ€涙ǚ鎷洪梺闈╁瘜閸欌偓婵$偓鎮傞弻娑㈡偐閹颁焦鐤侀悗娈垮枟閻擄繝鐛弽銊﹀闁革富鍘煎鎶芥⒒娴h櫣甯涙繛鍙夌墵瀹曟劙宕烽娑樹壕婵ḿ鍋撶€氾拷
核心提示:本文包含了Microsoft® SQL Server™报表服务报表设计的技巧和最佳实践,本文提供一些基本的设计问题和一些报表服务的功能,SQL Server 2005报表设计:最佳实践和指导,关于这篇文档从使用数据控件,到使用什么格式,但是只涉及了部分该产品的功能,为了获取更多的设计信息和产品功能,

本文包含了Microsoft® SQL Server™报表服务报表设计的技巧和最佳实践。本文提供一些基本的设计问题和一些报表服务的功能。

关于这篇文档

从使用数据控件,到使用什么格式,到如何分发报表,报表制作者面对着很多种选择。Microsoft® SQL Server™ 报表服务提供了丰富的报表设计和格式的支持,从基于纸介质表格报表到带有图片和钻取功能的交互式报表

这篇文档包括了报表制作和设计中的指导、建议和技巧。本文档的目的在于解释一般性的问题并对初学者提供指导建议。报表服务联机丛书提供了报表的制作和设计的丰富资源,并且详细的描述了报表的设置和可用功能及参数。

本文适用于初学者和有一些经验的报表制作者。报表制作的初学者也可以从报表设计章节中得到帮助。

其他信息来源

本文不包含全部的报表服务的信息。如果希望获取详细的产品信息,请查看产品文档和在http://www.microsoft.com/sql/reporting/ 中可用的在线资源。

产品版本

虽然本文基于Microsoft t® SQL Server™ 2005报表服务,报表设计的相关信息也适用于早期版本的报表服务。

简介

Microsoft® SQL Server™ 报表服务是一种完整的报表工具。在使用报表服务中,你可以设计和发布多种样式的报表,从简单表格到带有图形和交互式连接的在线自由表单。报表服务可以将报表渲染成用户指定的多种格式,包括HTML、PDF、Excel和图像格式。

对于各种设置和选择对于报表制作者在选择报表布局是需要解决的问题。这篇文章提供了一些指导方针是用户在做选择是更加容易并解答了一些常见的问题。

制作工具和RDL

报表服务提供了多种制作报表的方法。SQL Server 和Microsoft® Visual Studio® 2005 都包括了图形化的报表设计工具。SQL Server 2005报表服务提供了Report Builder工具帮助业务人员设计报表。也有其他的开发工具可以创建报表服务的报表格式。

无论我们使用哪一种制作环境,所有的报表定义都是用报表定义语言(RDL)格式存储,RDL是一种公开的XML定义报表的格式。这样可以直接编写RDL或者创建自定义工具生成相应格式。报表制作者可以使用图形化的制作工具编辑已存在的RDL文件。

在样例中展示特殊的技术时,文章提取了实现该功能的部分RDL。

在报表服务的网站上http://www.microsoft.com/sql/reporting/可以获取完整的RDL规范。

报表设计概念

本节描述了影响报表设计和布局的关键因素。如果你是刚刚接触报表服务,这里的内容会对你有帮助。所有的这些话题在SQL Server 联机丛书中都有详尽的描述。

在设计报表服务中的报表时,你定义了数据并制定在页面上的排列。尽管这个过程听起来很基础,报表服务还是提供了下列特性:

◆支持4种不同的数据区域:列表,表格,矩阵和图表。

◆提供了例如文本框,图片,连接,矩形和子报表等一些列控件。

◆用户可以通过参数,条件过滤,用户端排序,钻取和文档结构图来实现交互功能。

◆报表可以被渲染成各种格式,包括HTML,Excel,PDF,图像,XML和逗号分隔符 (CSV) 。

你做的关于每一个关键区域的决策都会影响最重的显示效果和报表功能。接下来的章节将提供影响设计和布局效果的因素。

数据区域

在我们的报表中我们第一个选择就是选择数据区域类型。报表服务提供了下列数据区域类型:

◆表格

表格通过一行接一行的方式表现数据。列是固定的你无法扩展,但是行可以向下展开。因此,当表格增长时,它将数据向下展开。你也可以在表格内将数据分组。

◆矩阵

A矩阵或者叫交叉表类似于表格,但是行和列都是可以扩展并填充数据的。矩阵可以向外和向下增加其他报表对象。你可以在矩阵中在行和列中嵌套分组。

◆列表

列表适用于创建表单的自由表单数据区域。你可以通过嵌套列表来分组数据。

◆图表

图表是数据的图形表达方式。报表服务提供了多种图表的格式。

你选择的数据区域可能依赖于你使用的数据类型、你希望报表的外观和如何展现报表。例如,要以Microsoft® Excel®形式呈递的报表使用表格比使用列表更适合。

报表项的位置和尺寸

报表有3个主要的区域组成:页眉,页脚和正文。报表服务支持将报表中任意放置报表项。数据区域可以和其它区域并行或通过分组来嵌套。 

当设计报表时,理解当报表项增长时如何处理是非常重要的。报表项可以水平或垂直的增长,依赖于重复的片断,内容的尺寸和诸如字体等报表渲染的因素。

当报表项增长时,例如一个表格,它会生成很多相关的报表项。这些报表项会在同一个父容器中。有如下2种方法来控制报表项的移动:

◆每个报表项为了维护与上边报表项间的最小距离会向下移动。

◆每个报表项为了维护与左侧报表项间的最小距离会向右移动。

如果一个报表项增长,它会扩展包含它的容器的边界,容器会适应所包容的报表项变化尺寸。

如果报表项和其他的报表项重叠,报表定义中的ZIndex元素决定哪个元素在顶层。ZIndex值高的报表项会置于上层。

这些是一些你可以用来控制报表项的增长和移动方法的技术。如果需要使用矩形和报表项的分组的信息,请参考本文后面“实用的报表设计技巧”部分。

分页

对于场报表来说关键问题在于如何控制页面的分割。页面通过2个因素控制分割:

◆页面尺寸

◆用户指定对象前后页面分割

页面尺寸

为了控制页面的尺寸,可以通过下列指导设置页面的高度和宽度属性:

◆可以通过报表的PageHeight和PageWidth属性设置渲染后的物理页面格式。

◆例如HTML这样的交互式渲染格式不能渲染物理页面分割。而使用 InteractiveHeight 和 InteractiveWidth 属性创建逻辑的页面分割。

◆有一些渲染格式,例如Excel,不支持页面尺寸。对于这些报表,你将不得不使用页面分割符将报表分割成多个页面。

注意,如果报表的自身宽度比页面宽度大,报表将在水平方向上交叉于多个页面。

页面分割

你可以在矩形,表格,矩阵,列表,图表和分组中的开始或结尾处添加分页符。报表服务会尝试将所有报表项和数据分组保持在同一个页面上。

可以使用报表项中的PageBreakAtEnd和PageBreakAtStart属性指定在报表项之前或之后插入分页符。

子报表

子报表是在报表项中指向另外一个报表。任何报表可以被用于一个子报表,并且你可以设置父报表将要传递到子报表的参数。

但是用子报表时你要注意下列前提:

◆子报表无法和父报表共享数据。报表服务器为分割的报表处理每一个子报表实例,但是这会影响性能。 

◆子报表的页眉和页脚会被忽略。

子报表在下列环境中十分有用:

◆当你需要在一个数据区域中从不同数据源嵌套分组。

◆当报表有多个一对多关系的部分。

◆当你需要在多个父报表中重用子报表。

◆当你需要在其他报表内部嵌入一个标准的,独立的报表。

如果报表共享数据,类似表格,矩阵,列表和图表这样的数据区域提供了与子报表同样的功能。然而,它们提供更好的性能。数据区域在并行的布局中提供了比子报表更好的工作方式。

表达式和函数

报表制作者可以在报表中使用表达式数据的外观,更改报表项的属性或控制数据的获取。本文的技巧章节提供了一些使用表达式的设计样例。

你可以在表达式中使用Microsoft® Visual Basic®函数。在表1中显示了一些常用的函数。

表1

Visual Basic 函数

结果
Today() 返回当前日期。
DateAdd() 基于单一参数提供一段日期。
Year() 显示指定日期中的年份。使用它分组日期或做为一系列日期的标签。
Month() 显示日期中的月份
Format() 格式化字符串。可以用于格式化日起和数字。
Right(), Left(), and InStr() 返回截取后字符串中的一部分。
Iif 依照评估的表达式,返回2个值中的1个。为了返回3个值中的1个,你可以嵌套Iif函数。

你可以通过引用适当的装配件在表达式中使用.NET函数。你也可以使用自定义的装配件。如果需要此方面更详细的信息,请查看报表服务联机丛书中”Using Customer Assemblies with Reports”部分。

聚合函数和范围

报表服务提供了许多聚合函数可以在报表中创建总和或其他聚合。

每个汇总函数支持一个定义汇总范围的范围参数。范围可以通过分组名称,数据集或数据区域来指定。数据区域或分组必须直接或间接包含聚合函数指定的报表项。

如果你忽略了范围,聚合范围是报表项所在的分组或数据区域中最里面的分组。

表2中显示了报表服务支持的聚合函数:

表2

函数

描述

Avg

从指定表达式中返回所有非空值的平均值。

Count

返回指定表达式中值的数量。

CountDistinct

返回指定表达式中所有不同值的数量。

CountRows

返回指定范围中行的数量。

First

从指定表达式中返回第一个值。

Last

从指定表达式中返回最后一个值。

Max

从指定表达式中返回所有非空值中的最大值。

Min

从指定表达式中返回所有非空值中的最小值。

StDev

从指定表达式中返回所有非空值中的标准差。

StDevP

从指定表达式中返回所有非空值中的总体标准差。

Sum

从指定表达式中返回所值的总和。

Var

从指定表达式中返回所有非空值中的方差。

VarP

从指定表达式中返回所有非空值中的总体方差。

报表服务提供函数来支持运行时的汇总。图3中显示了相关的函数。

表 3

函数

功能

RowNumber

在指定范围内返回运行时产生所有行的数量。当于数据区域中使用文本框时,显示在表达式显示部分每个文本框实例的行数。用于指定表格行数或提供分页符。在RowNumber(Nothing)中,关键字Nothing指定了在最外侧数据区域中从第一行开始计数。

RunningValue

使用指定函数从指定表达式中返回运行时的聚合。

报表服务提供了下列导航范围函数。表4中显示了这些函数。

表4

函数

描述

InScope

判断当前报表项实例是否在指定的范围中。它使用数据集,分组或数据区域的名称做为参数并返回布尔值。

Level

在递归层次中返回当前级别的深度。

Previous

返回之前的行。

报表渲染时的考虑

报表服务器提供了一套磨人的渲染扩展。你可以从报表服务中删除扩展或添加自定义扩展支持新的渲染格式。

默认的渲染扩展包括了HTML,Excel,逗号分隔符(CSV),XML,图像和PDF。

注意: 默认渲染扩展在报表服务中可以用于渲染报表。使用SQL Server 2005报表查看器控件在本地生成的报表可以支持HTML报表渲染,但是不需要访问其他的扩展。

你选择的渲染扩展会影响报表的布局。例如,不是所有的渲染扩展支持强制的页面分隔符或者页面分隔符应用于页面尺寸设置。表5中汇总一些差异。

表5

渲染扩展

基于报表项或分组分页

页面尺寸

HTML

可以

使用InteractiveHeight属性

Excel

可以

不可以

CSV

不可以

不可以

XML

不可以

不可以

Image

可以

可以

PDF

可以

可以

GDI (Window 表单)

可以

使用InteractiveHeight属性

如果你在设计报表之前你知道报表会被如何渲染,你可以针对目标格式优化报表布局。否则,以应该对各种可能的渲染扩展测试你的报表并找到和解决各式上的问题或异常。

接下来的部分包含了使用Excel,图像,PDF和HTML渲染扩展的一些建议。

Excel

报表服务支持将报表渲染为Microsoft® Excel® 1997及以后版本。如果你计划将报表渲染为Excel,你应该知道一些Excel渲染扩展的特殊属性。例如:

◆在报表中每一个报表页面将变为一个Excel的工作表。Excel不支持页高和页宽的概念,所以只有显式定义的分页符才能将页面分割。

◆报表服务不支持指定工作表名称。

◆渲染扩展构建报表外的表格结构。

◆不支持个别单元中的背景图片。

◆Excel除列表外的嵌套容器。

◆图表被渲染成图片,而不是Excel中的图表。

◆矩形被渲染成单元格组。如果举行包含其他报表项,矩形将变为单元格区域,矩形的边框和背景色将应用于表格区域。

◆子报表将被作为矩形在同父报表中的工作表中渲染。

在指定Excel报表中使用表格代替列表

表格使用固定的列宽。这很好的满足Excel报表中的表格格式。当渲染为Excel时,报表中的报表项会像我们期望一样排列。

与表格相比,列表是一种自由表单的风格。列表中的报表项将被放置在工作表中像对于在报表中的位置。这样会导致意想不到的结果。如果你的报表中使用了列表,要确认渲染成Excel的结果是可以接受的。

即使使用表格,如果在你的报表中页眉跨越多个列,Excel渲染扩展可能合并单元格或引入新的列。这样会在Excel电子表格中影响数据的排序和操作。如果你计划将报表渲染为Excel,请设法确认报表项排列能将单元格合并减到最小。

长报表的最大页数

为了预防生成Excel产生错误,你应该注意冗长报表的页数。报表中的每页都会变成Excel中的一个工作表。然而,每一个工作簿中为了限制对内存的使用,会有一个最大的工作表数量。如果报表页面超过了这个限制,Excel会生成一个错误。

渲染为Excel时的颜色差异

支持一套预定义的颜色。当你渲染报表时,Excel渲染扩展将报表中的颜色应设成Excel支持颜色中最接近的颜色。

图像

图像渲染扩展可以将报表渲染成位图或图元文件。默认情况下,它将数据渲染成TIFF格式。然而他也可以生成被GDI+支持的任何格式,包括BMP,EMF,GIF,JPEG和PNG。

在报表服务器中图像渲染处理在一个虚拟的页面中进行,并在这个页面创建图像。结果,在任何客户端上,基于图像的报表在字体和布局上看起来都是一样的。

当你使用TIFF文件时,你可以查看多页面报表。然而,其他的图像格式为将为每一个报表页面生成一个图像文件。

图像渲染也支持页面高度,页面宽度和页边距。任何报表中包含的页眉和页脚都会在报表边界内被渲染。

使用图像渲染为所有的客户端创建同样的报表

如果你希望在所有客户端看到同样的报表,你应该使用图像渲染。特别是当报表渲染时,HTML报表使用客户端子体和浏览器设置。这意味着当客户端使用不同的浏览器时报表的布局会有所不同。因为图像文件在报表服务器上格式化,它们渲染成的图片在任何客户端上的显示都是一样的。

在报表服务器上安装适当的字体

你应该确认在报表服务器上安装的正确的字体。这是因为报表实际上是在报表服务器上渲染,它使用了在报表服务器上所安装的字体。

便携文档格式

便携文档格式(PDF)渲染扩展创建的报表可以使用Adobe Acrobat readers打开查看。在很多方面上,PDF扩展类似于图片扩展,除了下列重要的差异:

◆在PDF报表中字体没有被嵌入到报表中。 

◆文档结构图被渲染成PDF书签。

◆你可以在设备选项中指定页面的宽度高度、边距和PDF的分辨率。

◆渲染扩展创建的PDF1.3版本的文件和Adobe Acrobat 4.0机器以后版本兼容。

◆PDF渲染扩展不支持 RepeatWith属性。

在客户机中安装适当的字体

PDF扩展无法在报表中嵌入字体。为了正确的查看报表的字体,你不仅需要在报表服务器上确认安装该字体,也要确认该字体在查看报表的客户端中正确安装了。另外字体替代现象很有可能发生。

HTML

HTML扩展可以生成与Microsoft® Internet Explorer,Mozilla Firefox及Apple Safari兼容的HTML 4.0页面。

HTML渲染和其他的渲染有以下的不同:

◆HTML渲染扩展在HTML中生成了一个包含所有报表控件项的表格。控件项将保持在报表布局时的位置。

◆位置和大小使用毫米(mm)为单位表示。渲染的最小单位是0.2毫米。

◆HTML不支持对象的重叠。这样导致当报表显示时布局被改变了。

◆在HTML报表中,子报表被渲染在DIV标签中。

客户端变化

当在客户端显示时,HTML报表使用浏览器的特性来设置。另外字体的变化,其他的浏览器设置可以做相应的处理改变。如果你想恰到好处的控制在所有客户端上的布局,考虑使用图像渲染扩展。

不同浏览器的差异

SQL Server 2005报表服务包括了对于不同浏览器的支持例如Microsoft Internet Explorer, Mozilla Firefox 和Apple Safari。尽管大多数的报表的特性在这些浏览器上都是被支持的,你也应该在相应浏览器上测试确认其满足你的需求。

实用的报表设计技巧

本节提供了使用表达式来巧妙处理报表格式和布局的技巧和技术。 

使用矩形保持对象的紧凑

在报表服务中矩形可以被用于图形元素或者对象的容器。做为对象容器,它可以是在一个页面上的对象保持适当的距离并控制对象项目移动式的位置。

为了保持多个对象在同一个页面中,可以将对象放在一个矩形内。你通过设置矩形的PageBreakAtStart或PageBreakAtEnd属性在矩形的前后添加分页符。

使用矩形控制报表项的增加位置移动

在同一个矩形中的控件相互间是同等的并且当控件增长或移动时通过统一的规则在页面中排布。例如:

◆报表项通过通过各自的矩形来推动和置换。

◆报表项不能和矩形外报表项推动或置换,因为他们不在一个级别上。

◆如果需要,矩形可以增长来适应所包含的控件。

当处理会扩展的对象时,你可以利用这个逻辑的功能。例如:

◆如果你为你的报表扩展预留出一些空白的空间,可以将表格和相应的空白空间放止于同一个矩形。当表格增长,它会被置于预留好的空白空间中。

◆如果你防止矩阵扩展出页面的右侧边缘,可以将矩阵和一些空白放入同一个矩形中。

避免空白页

有时当你将报表输出到例如PDF或打印机这样的物理页面是,你可能会看到有空白页面。通常,当报表正文超过纸面尺寸是会发生这种情况。

为了确认所有的内容适合于单一的纸张,正文加上页边的空白应该小于预定义好的纸面宽度。文本框和其他的报表项可以导致正文宽度超过纸面宽度,即使当超出部分的内容不可见。另外,报表项水平的增长(矩阵数据区域和图片自动设置为Autosize或Fit)可以导致正文宽度的增长。

使用分页提高大报表的性能

如果不去为一个返回大量数据的报表设置页面大小或分页符,一些报表格式将会尝试将报表渲染成单页。

例如,Excel没有默认的固定页面宽度。所以,如果你有一个很大的报表,Excel将尝试将其渲染成一个工作表。通常,使用分页符可提高用户访问报表时的性能,因为当渲染报表剩余部分时,用户可以查看报表的第一页。

使用筛选器代替查询参数

报表服务有几种方法动态的过滤报表内容:

◆当返回丛数据源获取数据时使用查询参数过滤数据。

◆应用于数据集或报表区域的报表筛选器,限制在报表中显示的数据。

使用筛选器获取所有的数据,但是只有和用户相关的数据被显示。这也许比在数据源中过滤数据的效率要低。然而,这样可以使我们只获取一次数据并将数据存储在快照中来服务于不同的用户请求。换句话说,当我们使用查询参数,每一个新的参数查询你都要访问数据源。筛选器可以使我们执行快照并获取所有参数的结果。

在表格中添加轮换条

也许你需要创建带有隔行渐变形式的表格或矩阵的报表。 这种栏从视觉上可以更好地在一个页面上跟踪不同的行。

为了更好的模拟用在生成大量报表的高速数据打印机中的老式绿条纸 你可以轮换条设置为绿色。

为了完成这个效果,可以使用Iif函数基于行数的奇偶性有条件指派背景色。例如:

=iif(RowNumber(Nothing) Mod 2,"PaleGreen","White")

在RDL文件中的描述应该类似于如下代码:

<TableCell>
<ReportItems>
<Textbox Name="SalesOrderID">
<Style>
<PaddingLeft>2pt</PaddingLeft>
<Format>d</Format>
<BackgroundColor>=iif(RowNumber(Nothing) Mod 2,"#c0ffc0","White")
</BackgroundColor>
<TextAlign>Right</TextAlign>
<PaddingBottom>2pt</PaddingBottom>
<PaddingTop>2pt</PaddingTop>
<PaddingRight>2pt</PaddingRight>
</Style>
<ZIndex>4</ZIndex>
<rd:DefaultName>SalesOrderID</rd:DefaultName>
<CanGrow>true</CanGrow>
<Value>=Fields!SalesOrderID.Value</Value>
</Textbox>
</ReportItems>
</TableCell>

在一个报表中的表格中在指定行后添加分页符

你可以使用Ceiling 函数在表格中将行分组,并在每个分组后插入分页符。

Ceiling函数返回不小于输入参数的最小值。例如,每隔30行添加一个分页符,你应该使用下列表达式分组:

=Ceiling(RowNumber(Nothing)/30)

在RDL中描述分组应该类似于下列描述:

<TableGroups>   
<TableGroup>
<Grouping Name="PageGroup">
<GroupExpressions>
<GroupExpression>=Ceiling(RowNumber(Nothing)/30)</GroupExpression>
</GroupExpressions>
<PageBreakAtEnd>true</PageBreakAtEnd>
</Grouping>
</TableGroup>
</TableGroups>

在页眉和页脚中添加全局变量值

在表6中显示了Globals对象的成员,这些可以在报表的表达式中使用。

表6

名称

类型

描述

PageNumber

Integer

当前页数。仅在报表的页眉和页脚中使用。

TotalPages

Integer

报表的总页数。仅在报表的页眉和页脚中使用。

ExecutionTime

DateTime

报表开始执行得日期和时间。

ReportFolder

String

包含报表的文件夹的路径,例如salesreportsudgeting 或c:salesudget

ReportName

String

报表的名称,例如 currentbudget.

你可以在报表的页眉或页脚中使用表达式显示报表名称和执行时间。时间通过.NET提供的短日期格式。例如:

=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")

同样也可以利用文本框将报表的当前页数和总页数显示在页眉:

=Globals.PageNumber & " of " & Globals.TotalPages

在页眉中显示报表项

在长报表中你可能会希望在页眉中添加报表正文中的文字。例如,一个姓名地址录在页眉重要显示当页中出现的第一个和最后一个名字。

为了实现这个功能,你可以在页眉上添加一个文本框,并使用First函数。为了在页面上显示第一次出现的LastName值,表达式应该类似于如下所示:

=First (ReportItems!LastName.Value)

同样的,使用表达式函数Last 可以提供在页面上显示LastName 文本框的最后一个值 。例如

=Last (ReportItems!LastName.Value)

创建带有条件格式的钻取连接

报表服务可以通过拥护和报表的交互在报表中隐藏或显示报表项。

你可以使用这种功能在报表中创建钻取连接。例如,通过点击某个区域,用户可以从汇总视图中钻取数据的详细信息。

接下来,为包含该分组的文本框创建触发开关项。然后当用户点击该文本框,隐含的数据变成可见的或数据不显示。

结论

Microsoft SQL Server 2005 报表服务提供了多种报表设计的选择。本文提供了一些常规的指导方针和报表设计技巧,但是只涉及了部分该产品的功能。为了获取更多的设计信息和产品功能,请参考SQL Server 2005 联机丛书。

Tags:SQL Server 报表

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接