如何进行多类别、大批量数据的计算及报表输出

Author: 重庆 孙光华 Date: 1994-07-22

        而以数据库中数据的存放特性,将每一批量的各个不同类别计算结果作为数据库的一条记录存放,再以输出数据库记录的方式输出报表,将使我们的程序编写得十分简洁明了,运行速度也大为提高。
        具体步骤如下:
        一、建立统计结果存放数据库(94DBB-A)
        A、打开统计数据库(94DBB)COPY部分记录
        USE 94DBB
        COPY NEXT N TO 94DBB-A
        N≥批量
        B、根据实际,可删除或增加个别字段
        注:勿需考虑记录值,重要的是字段。
        二、编写计算程序(DBZ4.PRG) (程序附后)
        1、批量各类别统计、求和并存于内存变量中;
        2、用批量各内存变量替换统计结果存放数据库的记录;
        3、循环执行1、2、,直至完成全部计算和替换。
        难点是:统计数据批量的查找特征及存放数据库记录指针的设置。
        三、编写报表输出程序(DBG4.PRG)
        各批量统计数据结果已存放数据库(94DBB-A)中,以@X,Y SAY按固定格式输出报表或用CCED自动输出均可。本例采用前一种,限于篇幅不再将程序附后。
        本文程序在IBM PC/XT、兼容386/33汉字2.13环境下,FOXBASE+2.1和DBASEⅢ中通过。
        附:DBZ4.PRG程序
        SET TALK ON
        SET DEVT TO SCRE
        FP="Y"
        do whil FP="Y".or.FP="y"
        clea
        @ 4,15 SAY ""
        @ 6,15
        ACCE "请 给 出 打 印 时间(年/月/日):" TO TM
        set talk off
        AD=O
        DO WHIL AD<=12
        ? "正在计算中,请等候.............."
        AD=AD+1
        use 94DBB
        *inde on str(管区,2)+房屋座落to SH94DB-2
        set index to sh94db-2
        go top
        locate all for  管区=AD
        addo=房屋座落
        add=subs(addo,|,8)
        coun all to nm for 管区=AD
        sum all建筑面积,使用面积,居住面积,占地面积,土地面积,总套数,保证金数,商;品房数,内住户数,外住户数,门面房数,公用套数,空置套数,福租,保租,商租,气;for 管区=AD to b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17 use
        IF AD<=12
        use 94dbb-A
        ? "正存放统计数据,..............."
        go AD
        repl 建筑面积with b1,使用面积with b2,居住面积with b3,占地面积;with b4,土地面积with b5,总套数with b6,保证金数with b7,商品房数;with b8,内住户数with b9,外住户数with b10,门面房数with b11
        repl 公用套数with b12,空置套数with b13,福租with b14,保租with b15,;商租with b16,
        气with b17,管区with AD,房屋座落with add,栋数with NM
        use
        endi
        ENDD
        WAIT"计算、存放完华、请准备好打印纸、按任意键!"
        DO DBG4.PRG
        clea
        set devi to scre
        wait "继 续 打 印 分 区 总 概 表 吗(Y/N)?" TO FP
        if .not."y"=FP
        rele all
        exit
        endi
        ENDD
        USE
        RETURN
        (重庆  孙光华)