<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 動態報表的實現與報表數據的組織(一)

    時間:2024-06-29 12:22:22 計算機畢業論文 我要投稿
    • 相關推薦

    動態報表的實現與報表數據的組織(一)

    [摘要]本文介紹了一種實現復雜數據集合的靈活運算、儲存、匯總、查詢功能和數據的動態組合的簡單方法,做到“使用一個軟件,管理所有數據”,提高了工作效率,減少重復勞動。
     
     1引言
     為了解決復雜數據集合的靈活運算、儲存、匯總、查詢功能,設計了一個數據管理軟件,該軟件可以管理多種報表,每種報表可含有多個機構,每個機構內可有多個數據集合。各種報表可以有自己獨立的運算公式、平衡檢查公式,以及錯誤提示信息。每種報表可以進行數據匯總、平均以及其它各種數學運算,等等。
     如果用戶用Excel結合Access,可以滿足上述功能,但缺點顯而易見,就是使用復雜、數據不安全、維護不便。用PowerBuilder的動態SQL語句生成動態數據窗口,并結合專用的數據庫進行數據組織,可以方便地實現上述功能,下面將軟件設計思路介紹如下。
     2.設計思路
     為了實現數據的動態組合,軟件需要特設三張表,一張記錄動態表的數據(記為Bbdata),一張記錄動態表行的格式定義(記為Bbhdy),一張記錄動態表列的格式定義(記為Bbldy),格式分別如下:
     1.Bbdata表(表1)
    Agency Reportbm Bm Hs Ls Value 
    100 2 2 1 2 1348895.00 
    100 2 2 1 3 15740.00 
    100 2 2 1 4 1326505.00 
    100 2 2 1 5 23436.00 
    100 2 2 1 6 2592.00 
     字段含義為:
     Agency:報表機構編碼(例:假定分公司A為1,分公司B為2,等等)
     Reportbm:報表編碼(例:資產負債表為1,損益表為2,等等)
     Bm:報表中數據集合編碼(例:資產負債表1月份報表為1,2月份報表表為2,等等)
     Hs:數據在表中的具體位置所在行數
     Ls:數據在表中的具體位置所在列數
     Value:數據值
     2.Bbhdy表(表2)
    Bbbm Hmc Hss Sfjsx 
    3 固定資產 1 0 
    3 累計資產 2 0 
    3 工資支出 3 0 
    3 合計支出 4 1 
     字段含義為:
     Bbbm:報表編碼(與Bbdata表的Reportbm字段關聯)
     Hmc:行項目名稱
     Hss:行順序(即:行在報表中的行序)
     Sfjsx:該行是否為計算性行,取值1或0(即:值由其它的行或者常數運算得出)
     3.Bbldy表(表3)
     
     字段含義為:
     Bbbm:報表編碼(與Bbdata表的Reportbm字段關聯)
     Lmc:列項目名稱
     Llen:列寬度(即:報表中每列列的寬度)
     Lss:列順序(即:列在報表中的列序)
     Sfjsx:該列是否為計算性列,取值1或0(即:值由其它的列或者常數運算得出)
     下列代碼中的dw_1用于放置動態數據窗口,dw_2為Bbhdy數據庫得出數據窗口,dw_3為Bbldy數據庫得出數據窗口,dw_4為Bbdata數據庫得出數據窗口,調入內存后,進行下列算法:
     integer i,j,hs,ls
     string model1,model2,a,a1
     decimal value
     model1=""
     model2=""
     a="'a' 項目,"
     for i=1 to  dw_3.rowcount()
     // dw_3.rowcount()為報表的實際列數
     model1="0.00 "
     a1=dw_3.object.data[i,2]
     // dw_3.object.data[i,2]為報表的列名稱
      j=0
     do while j <= len(a1)
       j++
       if right(left(a1,j),1)=" " then
          a1=Replace(a1,1,j,trim(left(a1,j)))
          j=j - 1
       end if
      loop
       model2=model2+model1+a1+","
     next
     a=a+model2
     a=left(a,len(a) - 1)
     經過上述算法之后,字符串a最終變成動態SQL可辨析的串,上列表格所示的列項目會被組合為: 'a' 項目,0.00 第一季度,0.00 第二季度,0.00 第三季度,0.00 第四季度,0.00 全年合計,請有興趣的讀者自己驗證。
     接著就可以利用動態SQL語句生成動態數據窗口對象:
     new_sql = "SELECT "+a+" from reportbm"
     // reportbm為報表編碼表
     new_syntax=sqltrans.SyntaxFromSQL(new_sql,'Style(Type=grid)',error_syntaxfromSQL)
     dw_1.Create(new_syntax, error_create)
     //根據SQL字符串創建動態數據窗口
     for i=1 to dw_2.rowcount()
     dw_1.insertrow(0)
     dw_1.object.data[dw_1.rowcount(),1]=dw_2.object.data[i,2]
     //根據行元素的多少在生成的數據窗口中插入行,并在第一列輸入行項目
     next
     for i=1 to dw_4.rowcount()
      hs=dw_4.object.data[i,4]
      ls=dw_4.object.data[i,5]
      value=dw_4.object.data[i,6]
      dw_1.object.data[hs,ls]=value
     //將Bbdata中的數據填入生成表
     next
     最后,生成的動態報表如表4所示,調整列寬度、顏色、是否可為空等屬性的代碼不再贅述。
     如要在上表中輸入新數據并將之保存為一組數據集合,代碼如下:
     integer bm,i,j,hs,ls,value
     SELECT max(bm)
     INTO :bm
     FROM bbdata
     where reportbm=:num
     //num為已知報表編碼
     USING sqltrans;
     if isnull(bm) then
      bm=1
     else
      bm++
     end if
     //系統自動得出數據集合編碼,取最大值+1
     for i=1 to hs
      for j=2 to ls+1
     //hs為報表行數,ls為報表列數
      value= dw_1.object.data[i,j]
       if not isnull(value) then
        INSERT INTO bbdata(agency,reportbm,bm,hs,ls,value)
        VALUES (:agency,:num,:bm,:i,:j,:value)
       using sqltrans;
        commit using sqltrans;
       end if
      next
     next
     3.結束語
     該程序在Windows98操作系統和PowerBuilder6.5環境下調試通過,對數據的管理取得了預期的效果,能實現數據集合的多維操作,在一定場合下可作為企業的數據管理系統軟件使用,也可為個人提供數據管理,使用范圍廣、操作難度小,是一個功能較好的程序。
     [參考文獻]
     1.《PowerBuilder 7.0編程員指南》,王鵬主編,北京希望電子出版社,2000.12
     2.《POWERBUILDER 7.0高級教程》,馬暉編,電子工業出版社,2000.1
     

    【動態報表的實現與報表數據的組織(一)】相關文章:

    自動站月報表人工與數據審核03-23

    我國上市公司關聯重組報表性的動態對比研究03-18

    Visual Basic6.0下數據庫報表制作技巧12-06

    外幣報表折算方法選用的另一標準03-25

    上市公司收益質量的報表分析03-24

    基于iFIX的Excel報表自動生成與制作03-07

    實現基于網頁的數據庫數據導入03-18

    實現動態錄音通知的另類方法11-22

    淺析報表粉飾的手法及其審計謀略03-23

    主站蜘蛛池模板: 国产在线精品观看免费观看| 中文字幕精品久久久久人妻| 日韩美女18网站久久精品| 99热门精品一区二区三区无码| 日韩欧美国产精品第一页不卡| 精品久久香蕉国产线看观看亚洲| 亚洲AV无码久久精品狠狠爱浪潮| 国产精品美女免费视频观看| 99精品国产高清一区二区麻豆| 亚洲国产精品无码中文字| 久久99精品免费一区二区| 欧美精品香蕉在线观看网| 精品欧洲AV无码一区二区男男| 亚洲国产精品自在拍在线播放 | 国内精品伊人久久久久AV影院| 欧美精品综合视频一区二区| 成人免费精品网站在线观看影片 | 国产日韩精品无码区免费专区国产| 2021国产精品视频| 人妻精品久久久久中文字幕69| 四虎国产精品成人| 免费人欧美日韩在线精品| 国产精品毛片一区二区| 四虎精品成人免费观看| 国产精品久久国产精品99盘| 国产精品熟女高潮视频| 久久精品中文闷骚内射| 日韩一区精品视频一区二区| 一本久久精品一区二区| 日本熟妇亚洲欧美精品区| 国产午夜精品理论片久久| 国产亚洲精品拍拍拍拍拍| 国产精品99久久久久久董美香| 91精品国产高清久久久久久国产嫩草| 国产成人精品优优av| 97久久国产亚洲精品超碰热| 国产成人精品一区二区三区免费| 国产精品毛片一区二区三区| 2021最新国产精品网站| 国产成人精品天堂| 国产精品怡红院永久免费|