您的位置:首页 > 其它

怎样利用PowerBulider的Datawindow建立中国式的动态报表

2008-04-27 00:34 465 查看
世界上所有的报表,要算中国的报表最为复杂了。看老外的报表表头很简单都是只有一行差不多。但是中国人的表头一般都有好几层,给你来上个两层已经是很不错的一件事情了。另外中国人最喜欢的就是活动式的表头,意思就是今年是这种的明年可能要变成另外一种格式了。所以这也对编写表头程序的程序员来讲提出了一个难题。我们也知道的datawindow有强大的检索功能,而且Powerbuilder就是一个前端开发工具,但是初学者都认为,它只能作为静态的报表,其实它背后隐藏着更大的功能,datawindow也能制作动态的报表类型。
下面的一段程序是我以前在做项目的时候运用的,希望能给各位带来一个提示
stringls_part1,ls_aux1,ls_aux2,is_temp,ls_syntax
ulongai_x1=0,ai_x2=0,ai_y1=0,ai_y2=88,ai_style=0,ai_width=0,ai_linecolor=1,h_y1,h_y2
ulongcil_posx,cil_width,temp_x,temp_y,temp_cil
integerchar_w,i=1,font=19
ulong f1=0,f2=0,f3=0,save_i1,save_i2
ulongcol_table_len=0,as_old1,as_old2,col_len2=0,col_len3=0
stringas_syntax,as_table
ulongy0,y1,y2,y3,y4,id=0
stringas_name,as_unit,as_column
stringas_head1,as_head2,as_head3,as_head4,as_head5,as_date
ulongheight

//char_w=margin.paper_size*1000/margin.font_size
//char_w=1500/margin.font_size*10
//char_w=1500/100*10
char_w=1
of_profilestring_margin()
//margin.top=250
//margin.bottom=250
//margin.right=250
//margin.left=250
//margin.head=4330
//margin.detail=730
//margin.footer=100
//margin.title=2000
//margin.paper_size=35.4
//margin.font_size=30
y0=margin.title
y1=y0+(margin.head-y0)/4
y2=y0+2*(margin.head-y0)/4
y3=y0+3*(margin.head-y0)/4
y4=margin.head
height=y1-y0

as_table='release8;~r~n'+&
'datawindow(units=3timer_interval=0color=1073741824processing=0print.margin.bottom='+string(margin.bottom)+&
'print.margin.left='+string(margin.left)+'print.margin.right='+string(margin.right)+'print.margin.top='+string(margin.top)+&
'print.preview.buttons=no)header(height='+string(margin.head)+')detail(height='+string(margin.detail)+&
')footer(height='+string(margin.footer)+') table()'
dowhiletable[i].name<>"/0"
as_name=table[i].name
as_unit=table[i].unit
cil_width=table[i].len*char_w
as_column="column_"+string(id)
as_head1="h1_"+string(id)
as_head2="h2_"+string(id)
as_head3="h3_"+string(id)
as_head4="h4_"+string(id)
as_head5="h11_"+string(id)//Ö»ÓÐÒ»²ãµÄ¿ÆĿͬÆäËû¿ÆÄ¿Çø·Ö£¬ÕâÑù¶Ô×ÖÌåµÄ±ä»¯ÓкܴóºÃ´¦
choosecasetable[i].layer
case "1"
iftable[i].unit=""then
iff1=0then
save_i1=i
f1=1
table[i].x=col_table_len1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: