最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

TIPTOP 4GL画图应用-图形监控数据库表空间使用情况

开发相关 bron1984 3034浏览

一、4GL画图原理

IMG_256

4gl编程的一些概念

①Window也是一类数据类型ui.Window

②Window的元素都应该用类似Grid的控件包裹

③所有在Window上面的元素都可以看着一个om.domnode(包括Canvas画布 IMG_257

Canvas画图步骤

#首先画4fd,在4fd上面放置一个Canvas画布(ex:画布的名称为mycarvas)
#①定义节点
DEFINE   w_CurrentWindow         ui.Window
DEFINE   w_Canvas            om.DomNode
DEFINE   canvas_Rectangle        om.DomNode
#②找到画布节点、画布上绘制图行
LET w_CurrentWindow = ui.Window.getCurrent()    #找到当前的页面Window
LET w_Canvas = w_CurrentWindow .findNode("Canvas","mycarvas")   #找到页面上的Canvas画布(这里mycarvas表示4fd档上面画布取的名字)
LET canvas_Rectangle = w_Canvas.createChild("CanvasRectangle")  #在画布上面绘制图形(这里绘制矩形
#③设置图形属性,ex:上下左右坐标、前景色.....
CALL canvas_Rectangle.setAttribute("fillColor", "black")    #设置前景色
CALL canvas_Rectangle.setAttribute("startX",621)        #设置起点x坐标
CALL canvas_Rectangle.setAttribute("startY",100)        #设置起点y坐标
CALL canvas_Rectangle.setAttribute("endX",661)          #设置终点x坐标
CALL canvas_Rectangle.setAttribute("endY",(100+900*(l_q5/100)) USING "####") #设置终点y坐标(说明:这里用的是一个变量l_q5的值在画布1000*1000上面占的比例)

其他更多细节参考Genero Studio的手册文档

 

二、应用:4GL图形程序监控数据库表空间使用情况(TIPTOP ERP 5.10 p_dbspace)

随着ERP的长年累月数据资料的增加,数据库表空间肯定会越来越吃紧

这里提供4GL程序形象监控数据库表空间的使用情况,以备数据库空间不够用时MIS人员速度响应处理

①.p_dbspace per档

----------------------------------------------------------------------------------
-- $Id:  p_dbspace.per created Thu May 17 11:14:22 2012
-- File created from p_dbspace.4fd by Genero Studio 11401
-- Copyright (c) 2002-2007  Four J's Development Tools.  All rights reserved.
----------------------------------------------------------------------------------
-- WARNING! All changes made in this file will be lost!
----------------------------------------------------------------------------------
SCHEMA ds
LAYOUT( TEXT="p_dbspace")
  GRID gr4
  {
   <G gb2                                                            >
   [aa0                                                             ]
   [                                                                ]
   [                                                                ]
   [                                                                ]
   [                                                                ]
   [                                                                ]
   <                                                                 >
   <G gb4                                                            >
             [aa1            ][aa2         ][aa3          ][aa4     ]
   [aa5   ]  [aa6            ][aa7         ][aa8          ][aa9     ]
   [ab0     ][ab1            ][ab2         ][ab3          ][ab4     ]
   [ab5     ][ab6            ][ab7         ][ab8          ][ab9     ]
   [ac0     ][ac1            ][ac2         ][ac3          ][ac4     ]
   [ac5     ][ac6            ][ac7         ][ac8          ][ac9     ]
   [ad0     ][ad1            ][ad2         ][ad3          ][ad4     ]
   [ad5     ][ad6            ][ad7         ][ad8          ][ad9     ]
    You Should Redesign This Program After Rebuild The Database!
   [ae0     ]                                    [ae1     ][ae2     ]
   <                                                                 >
  }
  END -- GRID
END
ATTRIBUTES
  GROUP gb2 : gb2, TEXT="Tiptop GP TableSpace Graphics Detail";
  CANVAS aa0 : ocarvas;
  GROUP gb4 : gb4, TEXT="Tiptop GP TableSpace Data Detail";
  LABEL aa1:lb8, TEXT="TotalTableSpace";
  LABEL aa2:lb9, TEXT="FreeTableSpace";
  LABEL aa3:lb10, TEXT="Total-Free Space";
  LABEL aa4:lb11, TEXT="UsedQuto%";
  LABEL aa5:lb1, TEXT="SYSTEM";
  EDIT aa6=FORMONLY.systemt TYPE DECIMAL, TABINDEX=1;
  EDIT aa7=FORMONLY.systemf TYPE DECIMAL, TABINDEX=2;
  EDIT aa8=FORMONLY.systemtf TYPE DECIMAL, TABINDEX=3;
  EDIT aa9=FORMONLY.systemq TYPE DECIMAL, TABINDEX=4;
  LABEL ab0:lb2, TEXT="SYSAUX";
  EDIT ab1=FORMONLY.sysauxt TYPE DECIMAL, TABINDEX=5;
  EDIT ab2=FORMONLY.sysauxf TYPE DECIMAL, TABINDEX=11;
  EDIT ab3=FORMONLY.sysauxtf TYPE DECIMAL, TABINDEX=17;
  EDIT ab4=FORMONLY.sysauxq TYPE DECIMAL, TABINDEX=23;
  LABEL ab5:lb3, TEXT="DBS1";
  EDIT ab6=FORMONLY.dbs1t TYPE DECIMAL, TABINDEX=6;
  EDIT ab7=FORMONLY.dbs1f TYPE DECIMAL, TABINDEX=12;
  EDIT ab8=FORMONLY.dbs1tf TYPE DECIMAL, TABINDEX=18;
  EDIT ab9=FORMONLY.dbs1q TYPE DECIMAL, TABINDEX=24;
  LABEL ac0:lb4, TEXT="UNDOTBS1";
  EDIT ac1=FORMONLY.undotbs1t TYPE DECIMAL, TABINDEX=7;
  EDIT ac2=FORMONLY.undotbs1f TYPE DECIMAL, TABINDEX=13;
  EDIT ac3=FORMONLY.undotbs1tf TYPE DECIMAL, TABINDEX=19;
  EDIT ac4=FORMONLY.undotbs1q TYPE DECIMAL, TABINDEX=25;
  LABEL ac5:lb5, TEXT="USERS";
  EDIT ac6=FORMONLY.userst TYPE DECIMAL, TABINDEX=8;
  EDIT ac7=FORMONLY.usersf TYPE DECIMAL, TABINDEX=14;
  EDIT ac8=FORMONLY.userstf TYPE DECIMAL, TABINDEX=20;
  EDIT ac9=FORMONLY.usersq TYPE DECIMAL, TABINDEX=26;
  LABEL ad0:lb6, TEXT="TEMPTABS";
  EDIT ad1=FORMONLY.temptabst TYPE DECIMAL, TABINDEX=9;
  EDIT ad2=FORMONLY.temptabsf TYPE DECIMAL, TABINDEX=15;
  EDIT ad3=FORMONLY.temptabstf TYPE DECIMAL, TABINDEX=21;
  EDIT ad4=FORMONLY.temptabsq TYPE DECIMAL, TABINDEX=27;
  LABEL ad5:lb7, TEXT="RPTDBS1";
  EDIT ad6=FORMONLY.rptdbs1t TYPE DECIMAL, TABINDEX=10;
  EDIT ad7=FORMONLY.rptdbs1f TYPE DECIMAL, TABINDEX=16;
  EDIT ad8=FORMONLY.rptdbs1tf TYPE DECIMAL, TABINDEX=22;
  EDIT ad9=FORMONLY.rptdbs1q TYPE DECIMAL, TABINDEX=28;
  BUTTON ae0 : clearrpt, TEXT="Clear", IMAGE="export";
  BUTTON ae1 : refresh, TEXT="Refresh", IMAGE="refresh";
  BUTTON ae2 : exit, TEXT="Exit", IMAGE="cancel";
END

 

附:如何将per档转换为4GL语言中的4fd档

打开Genero Studio –>  菜单栏Tools –>  File Browser –> 找到p_locked.per档(右键如下图所示)

IMG_258

②.p_dbspace 4gl档

# Prog. Version..: '5.10.16-10.10.14(00009)'     #
#
# Program name...: p_dbspace.4gl
# Descriptions...: Tiptop GP 5.x Oracle TableSpace Information
# Date & Author..: 12/05/16 by 李艺辉
DATABASE ds
GLOBALS "../../config/top.global"
DEFINE   g_sql_t  STRING
DEFINE   g_sql_f  STRING
DEFINE   g_tablespace ARRAY[7] OF LIKE type_file.chr10
MAIN
   DEFER INTERRUPT
   OPTIONS ON CLOSE APPLICATION STOP
   IF (NOT cl_user()) THEN
      EXIT PROGRAM
   END IF
   WHENEVER ERROR CALL cl_err_msg_log
   IF (NOT cl_setup("CZZ")) THEN
      EXIT PROGRAM
   END IF
   CALL cl_used(g_prog,g_time,1) RETURNING g_time
   OPEN WINDOW w_dbspace WITH FORM "czz/42f/p_dbspace"
      ATTRIBUTE(STYLE="err01")
   CALL cl_ui_init()
   LET g_tablespace[1]='SYSTEM'
   LET g_tablespace[2]='SYSAUX'
   LET g_tablespace[3]='DBS1'
   LET g_tablespace[4]='UNDOTBS1'
   LET g_tablespace[5]='USERS'
   LET g_tablespace[6]='TEMPTABS'
   LET g_tablespace[7]='RPTDBS1'
   CALL p_dbspace_load()
   CALL p_dbmenu()
   CLOSE WINDOW w_dbspace
   CALL cl_used(g_prog,g_time,2) RETURNING g_time
END MAIN
FUNCTION p_dbmenu()
   MENU ""
     BEFORE MENU
        #CALL cl_navigator_setting(g_curs_index, g_row_count)
     ON ACTION refresh
        CALL p_dbspace_load()
     ON ACTION clearrpt
        CALL p_dbspace_clearrpt()
     ON ACTION exit
        EXIT MENU
     COMMAND KEY(INTERRUPT)
        LET INT_FLAG=FALSE
        EXIT MENU
    END MENU
END FUNCTION
FUNCTION p_dbspace_load()
   DEFINE   l_index         LIKE type_file.num5
   DEFINE   l_totalspace    LIKE type_file.num20
   DEFINE   l_freespace     LIKE type_file.num20
   DEFINE   l_total_free    LIKE type_file.num20
   DEFINE   l_quto          LIKE type_file.num20_6
   DEFINE   ls_pic_url      STRING
   DEFINE   w_oracle            ui.Window
   DEFINE   canvas_temp         om.domnode
   DEFINE   canvas_oracle       om.DomNode
   DEFINE   canvas_SYSTEM       om.DomNode
   DEFINE   canvas_SYSAUX       om.DomNode
   DEFINE   canvas_DBS1         om.DomNode
   DEFINE   canvas_UNDOTBS1     om.DomNode
   DEFINE   canvas_USERS        om.DomNode
   DEFINE   canvas_TEMPTABS     om.DomNode
   DEFINE   canvas_RPTDBS1      om.DomNode
   DEFINE   canvas_text1        om.DomNode
   DEFINE   canvas_text2        om.DomNode
   DEFINE   canvas_text3        om.DomNode
   DEFINE   canvas_text4        om.DomNode
   DEFINE   canvas_text5        om.DomNode
   DEFINE   canvas_text6        om.DomNode
   DEFINE   canvas_text7        om.DomNode
   DEFINE   canvas_text1q       om.DomNode
   DEFINE   canvas_text2q       om.DomNode
   DEFINE   canvas_text3q       om.DomNode
   DEFINE   canvas_text4q       om.DomNode
   DEFINE   canvas_text5q       om.DomNode
   DEFINE   canvas_text6q       om.DomNode
   DEFINE   canvas_text7q       om.DomNode
   DEFINE   l_q1,l_q2,l_q3 LIKE type_file.num5
   DEFINE   l_q4,l_q5,l_q6 LIKE type_file.num5
   DEFINE   l_q7,l_x       LIKE type_file.num5
   CLOSE DATABASE
   DATABASE ds   #这里需注意,需连接到有权限查询dbs_data_files表的用户中
   LET g_sql_t = "SELECT SUM(bytes) FROM dba_data_files WHERE tablespace_name = ?"
   DECLARE total_cur CURSOR FROM g_sql_t
   LET g_sql_f = "SELECT SUM(bytes) FROM dba_free_space WHERE tablespace_name = ?"
   DECLARE free_cur CURSOR FROM g_sql_f
   LET w_oracle = ui.Window.getCurrent()
   LET canvas_oracle = w_oracle.findNode("Canvas","ocarvas")
   #Clear Child Nod
   LET canvas_temp = canvas_oracle.getFirstChild()
   WHILE canvas_temp IS NOT NULL
      CALL canvas_oracle.removeChild(canvas_temp)
      LET canvas_temp = canvas_oracle.getFirstChild()
   END WHILE
   LET canvas_text1 = canvas_oracle.createChild("CanvasText")
   LET canvas_text2 = canvas_oracle.createChild("CanvasText")
   LET canvas_text3 = canvas_oracle.createChild("CanvasText")
   LET canvas_text4 = canvas_oracle.createChild("CanvasText")
   LET canvas_text5 = canvas_oracle.createChild("CanvasText")
   LET canvas_text6 = canvas_oracle.createChild("CanvasText")
   LET canvas_text7 = canvas_oracle.createChild("CanvasText")
   LET canvas_text1q = canvas_oracle.createChild("CanvasText")
   LET canvas_text2q = canvas_oracle.createChild("CanvasText")
   LET canvas_text3q = canvas_oracle.createChild("CanvasText")
   LET canvas_text4q = canvas_oracle.createChild("CanvasText")
   LET canvas_text5q = canvas_oracle.createChild("CanvasText")
   LET canvas_text6q = canvas_oracle.createChild("CanvasText")
   LET canvas_text7q = canvas_oracle.createChild("CanvasText")
   LET canvas_SYSTEM = canvas_oracle.createChild("CanvasRectangle")
   LET canvas_SYSAUX = canvas_oracle.createChild("CanvasRectangle")
   LET canvas_DBS1 = canvas_oracle.createChild("CanvasRectangle")
   LET canvas_UNDOTBS1 = canvas_oracle.createChild("CanvasRectangle")
   LET canvas_USERS = canvas_oracle.createChild("CanvasRectangle")
   LET canvas_TEMPTABS = canvas_oracle.createChild("CanvasRectangle")
   LET canvas_RPTDBS1 = canvas_oracle.createChild("CanvasRectangle")
   CALL canvas_text1.setAttribute("fillColor", "blue")
   CALL canvas_text1.setAttribute("startX",22)
   CALL canvas_text1.setAttribute("startY",0)
   CALL canvas_text1.setAttribute("text","SYSTEM")
   CALL canvas_text2.setAttribute("fillColor", "white")
   CALL canvas_text2.setAttribute("startX",165)
   CALL canvas_text2.setAttribute("startY",0)
   CALL canvas_text2.setAttribute("text","SYSAUX")
   CALL canvas_text3.setAttribute("fillColor", "green")
   CALL canvas_text3.setAttribute("startX",323)
   CALL canvas_text3.setAttribute("startY",0)
   CALL canvas_text3.setAttribute("text","DBS1")
   CALL canvas_text4.setAttribute("fillColor", "yellow")
   CALL canvas_text4.setAttribute("startX",435)
   CALL canvas_text4.setAttribute("startY",0)
   CALL canvas_text4.setAttribute("text","UNDOTBS1")
   CALL canvas_text5.setAttribute("fillColor", "black")
   CALL canvas_text5.setAttribute("startX",600)
   CALL canvas_text5.setAttribute("startY",0)
   CALL canvas_text5.setAttribute("text","USERS")
   CALL canvas_text6.setAttribute("fillColor", "purple")
   CALL canvas_text6.setAttribute("startX",710)
   CALL canvas_text6.setAttribute("startY",0)
   CALL canvas_text6.setAttribute("text","TEMPTABS")
   CALL canvas_text7.setAttribute("fillColor", "red")
   CALL canvas_text7.setAttribute("startX",876)
   CALL canvas_text7.setAttribute("startY",0)
   CALL canvas_text7.setAttribute("text","RPTDBS1")
   INITIALIZE l_q1,l_q2,l_q3,l_q4,l_q5,l_q6,l_q7 TO NULL
   FOR l_index=1 TO g_tablespace.getLength() STEP + 1
     INITIALIZE l_totalspace,l_freespace,l_total_free,l_quto TO NULL
     OPEN total_cur USING g_tablespace[l_index]
     FETCH total_cur INTO l_totalspace
     OPEN free_cur USING g_tablespace[l_index]
     FETCH free_cur INTO l_freespace
     IF NOT cl_null(l_totalspace) THEN
        IF cl_null(l_freespace) THEN
          LET l_freespace = 0
        END IF
        LET l_total_free = l_totalspace - l_freespace
        LET l_quto = l_total_free/l_totalspace*100
     END IF
     CASE g_tablespace[l_index]
       WHEN 'SYSTEM'
         DISPLAY l_totalspace    TO FORMONLY.systemt
         DISPLAY l_freespace     TO FORMONLY.systemf
         DISPLAY l_total_free    TO FORMONLY.systemtf
         DISPLAY l_quto USING "###.&&" TO FORMONLY.systemq
         LET l_q1 = l_quto
       WHEN 'SYSAUX'
         DISPLAY l_totalspace    TO FORMONLY.sysauxt
         DISPLAY l_freespace     TO FORMONLY.sysauxf
         DISPLAY l_total_free    TO FORMONLY.sysauxtf
         DISPLAY l_quto USING "###.&&" TO FORMONLY.sysauxq
         LET l_q2 = l_quto
       WHEN 'DBS1'
         DISPLAY l_totalspace    TO FORMONLY.dbs1t
         DISPLAY l_freespace     TO FORMONLY.dbs1f
         DISPLAY l_total_free    TO FORMONLY.dbs1tf
         DISPLAY l_quto USING "###.&&" TO FORMONLY.dbs1q
         LET l_q3 = l_quto
       WHEN 'UNDOTBS1'
         DISPLAY l_totalspace    TO FORMONLY.undotbs1t
         DISPLAY l_freespace     TO FORMONLY.undotbs1f
         DISPLAY l_total_free    TO FORMONLY.undotbs1tf
         DISPLAY l_quto USING "###.&&" TO FORMONLY.undotbs1q
         LET l_q4 = l_quto
       WHEN 'USERS'
         DISPLAY l_totalspace    TO FORMONLY.userst
         DISPLAY l_freespace     TO FORMONLY.usersf
         DISPLAY l_total_free    TO FORMONLY.userstf
         DISPLAY l_quto USING "###.&&" TO FORMONLY.usersq
         LET l_q5 = l_quto
       WHEN 'TEMPTABS'
         DISPLAY l_totalspace    TO FORMONLY.temptabst
         DISPLAY l_freespace     TO FORMONLY.temptabsf
         DISPLAY l_total_free    TO FORMONLY.temptabstf
         DISPLAY l_quto USING "###.&&" TO FORMONLY.temptabsq
         LET l_q6 = l_quto
       WHEN 'RPTDBS1'
         DISPLAY l_totalspace    TO FORMONLY.rptdbs1t
         DISPLAY l_freespace     TO FORMONLY.rptdbs1f
         DISPLAY l_total_free    TO FORMONLY.rptdbs1tf
         DISPLAY l_quto USING "###.&&" TO FORMONLY.rptdbs1q
         LET l_q7 = l_quto
       OTHERWISE EXIT CASE
     END CASE
   END FOR
   CALL canvas_SYSTEM.setAttribute("fillColor", "blue")
   CALL canvas_SYSTEM.setAttribute("startX",52)
   CALL canvas_SYSTEM.setAttribute("startY",100)
   CALL canvas_SYSTEM.setAttribute("endX",92)
   CALL canvas_SYSTEM.setAttribute("endY",(100+900*(l_q1/100)) USING "####")
   INITIALIZE l_x TO NULL
   IF l_q1>90 THEN
      LET l_x = 90
   ELSE
     LET l_x = l_q1
   END IF
   CALL canvas_text1q.setAttribute("fillColor", "blue")
   CALL canvas_text1q.setAttribute("startX",95)
   CALL canvas_text1q.setAttribute("startY",(100+900*(l_x/100)) USING "####")
   CALL canvas_text1q.setAttribute("text",l_q1||"%")
   CALL canvas_SYSAUX.setAttribute("fillColor", "white")
   CALL canvas_SYSAUX.setAttribute("startX",195)
   CALL canvas_SYSAUX.setAttribute("startY",100)
   CALL canvas_SYSAUX.setAttribute("endX",235)
   CALL canvas_SYSAUX.setAttribute("endY",(100+900*(l_q2/100)) USING "####")
   INITIALIZE l_x TO NULL
   IF l_q2>90 THEN
      LET l_x = 90
   ELSE
     LET l_x = l_q2
   END IF
   CALL canvas_text2q.setAttribute("fillColor", "white")
   CALL canvas_text2q.setAttribute("startX",238)
   CALL canvas_text2q.setAttribute("startY",(100+900*(l_x/100)) USING "####")
   CALL canvas_text2q.setAttribute("text",l_q2||"%")
   CALL canvas_DBS1.setAttribute("fillColor", "green")
   CALL canvas_DBS1.setAttribute("startX",337)
   CALL canvas_DBS1.setAttribute("startY",100)
   CALL canvas_DBS1.setAttribute("endX",377)
   CALL canvas_DBS1.setAttribute("endY",(100+900*(l_q3/100)) USING "####")
   INITIALIZE l_x TO NULL
   IF l_q3>90 THEN
      LET l_x = 90
   ELSE
      LET l_x = l_q3
   END IF
   CALL canvas_text3q.setAttribute("fillColor", "green")
   CALL canvas_text3q.setAttribute("startX",380)
   CALL canvas_text3q.setAttribute("startY",(100+900*(l_x/100)) USING "####")
   CALL canvas_text3q.setAttribute("text",l_q3||"%")
   CALL canvas_UNDOTBS1.setAttribute("fillColor", "yellow")
   CALL canvas_UNDOTBS1.setAttribute("startX",479)
   CALL canvas_UNDOTBS1.setAttribute("startY",100)
   CALL canvas_UNDOTBS1.setAttribute("endX",519)
   CALL canvas_UNDOTBS1.setAttribute("endY",(100+900*(l_q4/100)) USING "####")
   INITIALIZE l_x TO NULL
   IF l_q4>90 THEN
      LET l_x = 90
   ELSE
      LET l_x = l_q4
   END IF
   CALL canvas_text4q.setAttribute("fillColor", "yellow")
   CALL canvas_text4q.setAttribute("startX",522)
   CALL canvas_text4q.setAttribute("startY",(100+900*(l_x/100)) USING "####")
   CALL canvas_text4q.setAttribute("text",l_q4||"%")
   CALL canvas_USERS.setAttribute("fillColor", "black")
   CALL canvas_USERS.setAttribute("startX",621)
   CALL canvas_USERS.setAttribute("startY",100)
   CALL canvas_USERS.setAttribute("endX",661)
   CALL canvas_USERS.setAttribute("endY",(100+900*(l_q5/100)) USING "####")
   INITIALIZE l_x TO NULL
   IF l_q5>90 THEN
      LET l_x = 90
   ELSE
      LET l_x = l_q5
   END IF
   CALL canvas_text5q.setAttribute("fillColor", "black")
   CALL canvas_text5q.setAttribute("startX",664)
   CALL canvas_text5q.setAttribute("startY",(100+900*(l_x/100)) USING "####")
   CALL canvas_text5q.setAttribute("text",l_q5||"%")
   CALL canvas_TEMPTABS.setAttribute("fillColor", "purple")
   CALL canvas_TEMPTABS.setAttribute("startX",763)
   CALL canvas_TEMPTABS.setAttribute("startY",100)
   CALL canvas_TEMPTABS.setAttribute("endX",803)
   CALL canvas_TEMPTABS.setAttribute("endY",(100+900*(l_q6/100)) USING "####")
   INITIALIZE l_x TO NULL
   IF l_q6>90 THEN
      LET l_x = 90
   ELSE
      LET l_x = l_q6
   END IF
   CALL canvas_text6q.setAttribute("fillColor", "purple")
   CALL canvas_text6q.setAttribute("startX",807)
   CALL canvas_text6q.setAttribute("startY",(100+900*(l_x/100)) USING "####")
   CALL canvas_text6q.setAttribute("text",l_q6||"%")
   CALL canvas_RPTDBS1.setAttribute("fillColor", "red")
   CALL canvas_RPTDBS1.setAttribute("startX",906)
   CALL canvas_RPTDBS1.setAttribute("startY",100)
   CALL canvas_RPTDBS1.setAttribute("endX",946)
   CALL canvas_RPTDBS1.setAttribute("endY",(100+900*(l_q7/100)) USING "####")
   INITIALIZE l_x TO NULL
   IF l_q7>90 THEN
      LET l_x = 90
   ELSE
      LET l_x = l_q7
   END IF
   CALL canvas_text7q.setAttribute("fillColor", "red")
   CALL canvas_text7q.setAttribute("startX",938)
   CALL canvas_text7q.setAttribute("startY",(100+900*(l_x/100)) USING "####")
   CALL canvas_text7q.setAttribute("text",l_q7||"%")
   CALL ui.Interface.refresh()
END FUNCTION
FUNCTION p_dbspace_clearrpt()
   DEFINE   l_dropsql   STRING
   #DEFINE   l_table    LIKE type_file.chr30
   DEFINE   l_table     DYNAMIC ARRAY OF LIKE type_file.chr30
   DEFINE   l_i         LIKE type_file.num5
   IF(NOT cl_confirm("Drop RPTDBS1 ds_report.csfr102a_xxxx_xxxx Data?"))THEN
     RETURN
   ELSE
     #If Oracle Version is above 10g You should set RecycleBin=OFF before execute DROP table
     #SpaceShutt Tiptop GP Oracle DataBase is version 11g
     EXECUTE IMMEDIATE "PURGE USER_RECYCLEBIN"
     EXECUTE IMMEDIATE "ALTER SESSION SET RECYCLEBIN=OFF"
     LET l_i = 1
     DECLARE csfr102_cur CURSOR FOR
       SELECT table_name FROM dba_tables
        WHERE tablespace_name = 'RPTDBS1'
         AND  table_name LIKE 'CSFR102A%'
     FOREACH csfr102_cur INTO l_table[l_i]
       IF SQLCA.SQLCODE THEN
          EXIT FOREACH
       END IF
       LET l_i = l_i + 1
     END FOREACH
     IF l_table[1_i] IS NULL THEN
        MESSAGE "Not Exist CSFR102A TABLE!"
     ELSE
        CLOSE DATABASE
        DATABASE ds_report
        FOR l_i=1 TO l_table.getLength()-1 STEP + 1
          LET l_dropsql = "DROP TABLE ",l_table[l_i] CLIPPED
          EXECUTE IMMEDIATE l_dropsql
          IF SQLCA.SQLCODE THEN
             ERROR l_dropsql," ERROE: ",SQLCA.SQLCODE
          ELSE
             MESSAGE l_dropsql," OK."
          END IF
         END FOR
     END IF
   END IF
END FUNCTION

 

③.p_dbspace 效果图

IMG_259

 

三、TIPTOP GP ERP (V5.25)有哪些图形应用

①.工单排程查询asfq700 — 生成进度甘特图

②.料件质量状态汇总查询aqcq312 — 检验合格比率

③.生产计划维护作业asri120 — 生产计划统计图

转载请注明:赫非域 » TIPTOP 4GL画图应用-图形监控数据库表空间使用情况