中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      動態(tài)報表的實現(xiàn)與報表數(shù)據(jù)的組織(一)

      時間:2024-06-29 12:22:22 計算機畢業(yè)論文 我要投稿
      • 相關(guān)推薦

      動態(tài)報表的實現(xiàn)與報表數(shù)據(jù)的組織(一)

      [摘要]本文介紹了一種實現(xiàn)復(fù)雜數(shù)據(jù)集合的靈活運算、儲存、匯總、查詢功能和數(shù)據(jù)的動態(tài)組合的簡單方法,做到“使用一個軟件,管理所有數(shù)據(jù)”,提高了工作效率,減少重復(fù)勞動。
       
       1引言
       為了解決復(fù)雜數(shù)據(jù)集合的靈活運算、儲存、匯總、查詢功能,設(shè)計了一個數(shù)據(jù)管理軟件,該軟件可以管理多種報表,每種報表可含有多個機構(gòu),每個機構(gòu)內(nèi)可有多個數(shù)據(jù)集合。各種報表可以有自己獨立的運算公式、平衡檢查公式,以及錯誤提示信息。每種報表可以進行數(shù)據(jù)匯總、平均以及其它各種數(shù)學(xué)運算,等等。
       如果用戶用Excel結(jié)合Access,可以滿足上述功能,但缺點顯而易見,就是使用復(fù)雜、數(shù)據(jù)不安全、維護不便。用PowerBuilder的動態(tài)SQL語句生成動態(tài)數(shù)據(jù)窗口,并結(jié)合專用的數(shù)據(jù)庫進行數(shù)據(jù)組織,可以方便地實現(xiàn)上述功能,下面將軟件設(shè)計思路介紹如下。
       2.設(shè)計思路
       為了實現(xiàn)數(shù)據(jù)的動態(tài)組合,軟件需要特設(shè)三張表,一張記錄動態(tài)表的數(shù)據(jù)(記為Bbdata),一張記錄動態(tài)表行的格式定義(記為Bbhdy),一張記錄動態(tài)表列的格式定義(記為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:報表機構(gòu)編碼(例:假定分公司A為1,分公司B為2,等等)
       Reportbm:報表編碼(例:資產(chǎn)負債表為1,損益表為2,等等)
       Bm:報表中數(shù)據(jù)集合編碼(例:資產(chǎn)負債表1月份報表為1,2月份報表表為2,等等)
       Hs:數(shù)據(jù)在表中的具體位置所在行數(shù)
       Ls:數(shù)據(jù)在表中的具體位置所在列數(shù)
       Value:數(shù)據(jù)值
       2.Bbhdy表(表2)
      Bbbm Hmc Hss Sfjsx 
      3 固定資產(chǎn) 1 0 
      3 累計資產(chǎn) 2 0 
      3 工資支出 3 0 
      3 合計支出 4 1 
       字段含義為:
       Bbbm:報表編碼(與Bbdata表的Reportbm字段關(guān)聯(lián))
       Hmc:行項目名稱
       Hss:行順序(即:行在報表中的行序)
       Sfjsx:該行是否為計算性行,取值1或0(即:值由其它的行或者常數(shù)運算得出)
       3.Bbldy表(表3)
       
       字段含義為:
       Bbbm:報表編碼(與Bbdata表的Reportbm字段關(guān)聯(lián))
       Lmc:列項目名稱
       Llen:列寬度(即:報表中每列列的寬度)
       Lss:列順序(即:列在報表中的列序)
       Sfjsx:該列是否為計算性列,取值1或0(即:值由其它的列或者常數(shù)運算得出)
       下列代碼中的dw_1用于放置動態(tài)數(shù)據(jù)窗口,dw_2為Bbhdy數(shù)據(jù)庫得出數(shù)據(jù)窗口,dw_3為Bbldy數(shù)據(jù)庫得出數(shù)據(jù)窗口,dw_4為Bbdata數(shù)據(jù)庫得出數(shù)據(jù)窗口,調(diào)入內(nèi)存后,進行下列算法:
       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()為報表的實際列數(shù)
       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)
       經(jīng)過上述算法之后,字符串a(chǎn)最終變成動態(tài)SQL可辨析的串,上列表格所示的列項目會被組合為: 'a' 項目,0.00 第一季度,0.00 第二季度,0.00 第三季度,0.00 第四季度,0.00 全年合計,請有興趣的讀者自己驗證。
       接著就可以利用動態(tài)SQL語句生成動態(tài)數(shù)據(jù)窗口對象:
       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)
       //根據(jù)SQL字符串創(chuàng)建動態(tài)數(shù)據(jù)窗口
       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]
       //根據(jù)行元素的多少在生成的數(shù)據(jù)窗口中插入行,并在第一列輸入行項目
       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中的數(shù)據(jù)填入生成表
       next
       最后,生成的動態(tài)報表如表4所示,調(diào)整列寬度、顏色、是否可為空等屬性的代碼不再贅述。
       如要在上表中輸入新數(shù)據(jù)并將之保存為一組數(shù)據(jù)集合,代碼如下:
       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
       //系統(tǒng)自動得出數(shù)據(jù)集合編碼,取最大值+1
       for i=1 to hs
        for j=2 to ls+1
       //hs為報表行數(shù),ls為報表列數(shù)
        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.結(jié)束語
       該程序在Windows98操作系統(tǒng)和PowerBuilder6.5環(huán)境下調(diào)試通過,對數(shù)據(jù)的管理取得了預(yù)期的效果,能實現(xiàn)數(shù)據(jù)集合的多維操作,在一定場合下可作為企業(yè)的數(shù)據(jù)管理系統(tǒng)軟件使用,也可為個人提供數(shù)據(jù)管理,使用范圍廣、操作難度小,是一個功能較好的程序。
       [參考文獻]
       1.《PowerBuilder 7.0編程員指南》,王鵬主編,北京希望電子出版社,2000.12
       2.《POWERBUILDER 7.0高級教程》,馬暉編,電子工業(yè)出版社,2000.1
       

      【動態(tài)報表的實現(xiàn)與報表數(shù)據(jù)的組織(一)】相關(guān)文章:

      自動站月報表人工與數(shù)據(jù)審核03-23

      我國上市公司關(guān)聯(lián)重組報表性的動態(tài)對比研究03-18

      Visual Basic6.0下數(shù)據(jù)庫報表制作技巧12-06

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

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

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

      實現(xiàn)基于網(wǎng)頁的數(shù)據(jù)庫數(shù)據(jù)導(dǎo)入03-18

      實現(xiàn)動態(tài)錄音通知的另類方法11-22

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

      主站蜘蛛池模板: 岛国熟女一区二区三区| 日本少妇比比中文字幕| 封开县| 亚洲最新av在线观看| 国产日韩一区二区精品| 类乌齐县| 日本骚色老妇视频网站| 国产精品久久狼人一区| 69堂在线无码视频2020| 彰武县| 耒阳市| 陆良县| 绿春县| 亚洲av色在线观看网站| 日本中文字幕一区二区高清在线 | 西宁市| 少妇特殊按摩高潮惨叫无码| 日本伦理一区二区三区| 亚洲女同同性少妇熟女| 欧洲一级无码AV毛片免费| 免费人人av看| 亚洲人成无码网站十八禁| 安国市| 人妻夜夜爽av性色大片| 克什克腾旗| 久久精品女人天堂av影院| 原阳县| 九江县| 婷婷国产亚洲性色av网站| 台州市| 庄河市| 国产黄片一区视频在线观看| 美腿丝袜一区二区三区| 通州区| 国产精品国产三级国产AvkTV| 精品一区二区三区在线视频观看| 亚洲va精品va国产va| 日本变态网址中国字幕| 日本女优中文字幕在线观看| 精品免费久久久久国产一区| 日本韩国三级aⅴ在线观看|