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

来源:互联网 发布:阿里云网站设计 编辑:程序博客网 时间:2024/05/01 18:47
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

世界上所有的报表,要算中国的报表最为复杂了。看老外的报表表头很简单都是只有一行差不多。但是中国人的表头一般都有好几层,给你来上个两层已经是很不错的一件事情了。另外中国人最喜欢的就是活动式的表头,意思就是今年是这种的明年可能要变成另外一种格式了。所以这也对编写表头程序的程序员来讲提出了一个难题。我们也知道的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<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>