1.Linux基础指令Linux编辑器vi
2.Oracle 基础Oracle管理维护
3.Tiptop维护答疑测试
添加用户useradd
Useradd –g tiptop
文件管理指令
Cd 切换目录
Cd 回到家目录
Cd . 回到当前目录
Cd .. 回到上级目录
Cd ~ 回到家目录
Cd /etc 回到/etc目录
Cd $TOP
Tar cznf /u3/topprod.tgz /u1/topprod
Tar xznf topprod .tgz
Tar czvf $bakdir/topprod.tar.gz /u1/topprod/tiptop /u1/topprod/topcust
Tar czvf $bakdir/genero.tar.gz /u1/genero*
Ps –ef|grep oracle*
Tiptop/ora/scripts
Q_tbsFREE 查看表空间使用状况需要以sys用户登陆才可
Q_users 查看ERP DB
Q_userOBJ 查看ERP 数据库对象信息
当临时表空间不足时,由于临时表在使用时不能被删除,所以处理方式为:另外创建一个临时表空间temp2,并把其设置为默认表空间,再把原来的临时表temp删掉,然后创建temp,设置为默认表空间,最后删除temp2。
创建临时表空间temp2
Create temporary tablespace temp2 tempfile ?‘ size 2G
更改temp2为默认表空间
Atler database default temporary tablespace temp2;
删除temp表空间
Drop tablespace temp including contents and datafiles;
在重新创建temp2
Create temporary tablespace temp tempfile ?‘ size 2G
更改temp为默认表空间
Atler database default temporary tablespace temp2;
Createdb 1…
1 创建user ,没有表及资料
2 创建user,创建表,表里面有资料
3 创建user ,创建表,表里面有DS 的demo资料
4 创建user ,复制另一个DB ()
某张表的数据完全没有的情况:
imp ds/ds file=ds.dmp tables=ima_file log=ds_ima_file.log
某个DB的某张表只是丢失了某几条重要的数据:
(比如:ds1的ima_file )
Imp system/manager file=ds1.dmp tables=ima_file
Fromuser=ds1
Touser=ds_report
Log=imp.log;
Esac
udm7;
exit
Truncate table table_name 清空表,不可以rollback的
画面(3.7)
容器性控件
非容器性控件
Fglwrt
Buttonedit :
name, data, tablename, columnname, image type, image
设置必须拦位:Constraints :required netNull true;
Action 设置快截件controlp 必须的
设置不可录入: Constraints:noEntry=true
Combobox
noEntry =true
右键: edit item
画面中text 自动显示中文,中文是从p_zta中字段说明中获取.如果后续需要做修改的话,可以在p_perlang中修改,combobox下拉框中的中文显示也是在此设置.text控件必须跟edit 等等依附存在,不可以独立存在的.
Label 不会自动显示,把name 设置为:dunny01才可以(dunny+流水号,tiptop平台设死的),label可独立存在
tabIndex属性可设置鼠标跳动顺序
tiptop中显示静态图片,图片控件的name必须为:imgmksg
checkbox :valueChecked:Y,
valueUnchecked:N
radiogroup: 右键edit items ;orientation
tpye_file 参考字段用表
单双引号不做区分的,只要成对出现
String 类型不能用在sql中
如: define a string
Select * from table where filed=a 是错的
但是define a varchar(10)
Select * from table where filed=a 是对的
Ls .* 列出隐藏文件
3/8
INPUT :
让鼠标焦点继续在该拦位:NEXT FIELD field_name
当前拦位值被改变时触发ON CHANGE事件
MENU 和INPUT里都可以定义ON ACTION
CURSOR
1.接受查询条件CONSTRUCT
与INPUT 区别
假设画面拦位a=‘111‘,b=‘222‘
Construct g_wc on gen01,gen02 from a,b
Table字段画面拦位
=》g_wc=‖gen01 =‘111‘ and gen02=‘222‘‖
2. 根据1中得到的g_wc的值组SQL
Let l_sql=‖S elect … from table where ―,g_wc
3.将组合出的SQL字符串转换成可执行的SQL
PREPARE pre01 FROM l_sql
4.将可执行的SQL定义成CURSOR
DECLARE cursor1 CURSOR FOR pre01 (第3步省略时,第4步就用这个方法DECLARE cursor1 CURSOR FROM l_sql,但是不用PREPARE时,如果l_sql中有语法错误时,程序不会报错)
5.读取游标数据
FOREACH cursor1 INTO 变量
CONTINUE FOREACH
EXIT FOREACH
END FOREACH
结束后自动释放空间。
3/9
制作画面常见问题及注意事项:
1 画面的名字
客制目录/u1/gp515
2 制作画面中不能出现任何的中文
3.控件之间的边界不能重叠
4新建画面时是选择DS 还是FORMONL Y
画面输入的内容不需要异动到ORACLE数据库就可DS或者FORMONL Y,否则不许选择DS
5.栏位说明和栏位之间的关系:成对出现的,栏位说明TEXT控件是没有名字的,只有栏位才有名字,后续维护p_perlang 时以栏位的名字为主
6.控件属性的设置参考教材
7.制作画面的步骤:下载ds.sch—> GENERO STUDIO 本地制作—> 上传—> 编译—> 预览—> 维护p_perlang 最后的三步跳过预览的步骤直接去维护p_perlang 是看不到中文信息的,必须预览后才可以看到
画面csfr110.4fd
程序:csfr110.4gl
DA TABASE ds
GLOBALS …
DEFINE 变量
MAIN
程序初始化(OPTIONS)
判断权限(NOT cl_user())
如果遇到执行过程中的错误就记录LOG 日志(call cl_err_msg_log)
程序初始化-营运中心,参数载入,config目录文件载入(cl_setup(―‖) )
记录程式执行的开始时间cl_used
OPEN WINDOW ….
CALL r110_tm()
记录程式的离开时间
END MAIN
FUNCTION r110_tm()
Construct
End construct 接受查询条件(QBE)
Input 接受单一的值(条件选项等)
End input
Call csfr110()
END FUNCTION
FUNCTION csfr110()
L_sql=‖select …….‖
Call cl_prt_cs()
END FUNCTION
目录:gp515/topcust/csfr100
INPUT NO WRAP 输入方式不打转
DEFER INTERRUPT 截取中断值(就是界面中是否可以通过X来关闭窗口)
MAIN函数接受值的方式:let p_a=ARG V AL(1)
背景作业(或者p_zz里的UNIX运行指令)p_cron给MAIN函数传值
Cl_ui_init() 画面多语言p_perlang载入
While true (避免当交互指令发生错误时陷入死循环)
IF l_n>10 then
Exit wile
End if
Let l_n=l_n+1
Cl_qbe_init() 条件查询和条件储存按纽初始化
On action locale 语言
Call cl_dynamic_locale 切换语言函数
Cl_ghow_fld_cont() 该语言下的说明信息显示出来
Aoos010 允许闲置时间
On idle g_idle_seconds top.global,main-cl_setup
Cl_init_qry_var() 将top.global中和开窗有关的变量初始化
先编译,再维护p_zz,然后再编译,再link
3/11
报表台头1公司名称在P_zo中进行设置的,而不是在报表中进行的设置
报表台头2报表名称在p_zz---打印设置中的报表打印抬头进行设置的,如果报表打印抬头为空,则抓取程序名称。而不是在报表中进行的设置。
报表图片在P_zo中进行设置的,必须在报表中新增一个location 的公式字段,用来到替换本地报表中的图表为服务器上的图表,服务器图标在P_zo中进行设置。步骤为:在报表中插入一个图表,鼠标停在图标上点右键,选择图标格式化—图片---graphic—打开公试设置画面把location拖到下方
设置土县格式
必须建立26个参数字段,接口函数cl_prt_cs1已经设置死的,否则会报“无效索引”的错误
Function cl_prt_cs1
Call cr(参数1,参数2…,参数26)顺序也有要求的
End function
分组跳页节专家选择分组勾选reset page number after
当数据比较长,而宽度有限时,折行显示,右键设置字段格式,勾选“可以增大”
若重复抑制显示可以在同组内相同字段内容只显示一次
侦错:STATUS和SQLCA.sqlcode的区别
STA TUS 用在SQL和BDL中
SQLCA.sqlcode 只能用在SQL中,但是在SQL中侦错时,建议用这个。
IF STATUS THEN :SQL,BDL(LET a=‘tiptop‘)
IF SQLCA.sqlcode THEN :SQL-SELECT,INSERT,DELETE,UPDA TE,PREPARE
3.15
P_zm 可以把新增的程式增加的start menu
Start menu 中所有的menu都是在p_zz中新建的。
1.p_zta(sch)建表,改表,解锁,简单SQL运行
2.权限
(1)p_zy 权限群组资料录入
(2)p_zx 用户基本资料录入
(3)p_zxw
3.画面
P_perlang 画面多语言设置
P_per画面属性设置第一次r.gf 抓取GENERO STUDIO 的设置
必输拦位,是否可输入,KEY 拦位,隐藏否
主要用做后续的修改,开始可在程式中进行设置
4.P_cron
背景作业设置
5.P_zmd
新建摸组
6.P_zz 程序执行主入口
1.程序写好后维护链结档路径,ACTION,权限
2.新建菜单(模组:MENU 程序类型:“M:选单”;UNIX运行指令:¥FGLRUN ¥MENUi/n98)
3.p_query 自定义查询报表的接口
单档查询q()
1.先接收查询条件construct…cs()
2. 定义cursor cs()
3. 拨动cursor数据到变量里去fetch()
4.Display 变量的值到画面上show()
报表游标非滚动性游标cursor
LET l_sql=‖select …from …where …‖,tm.wc
Prepare pre1 from l_sql
Declare cursor1 cursor FOR pre1
Foreach end foreach
单档cursor- 滚动性游标scrolling cursor
LET l_sql=‖select …from …where …‖,tm.wc
Prepare pre2 from l_sql
Declare cursor2 scroll cursor FOR pre2
Open cursor2
Fetch (first(第一笔,next下笔,previous上笔,last末笔)cursor2 into 变量列表
Absolute 指定笔
Close cursor2
新建
G_qryparam_state=‖c‖p_qry中g_gem的construct时的WHERE条件可以进
行多选
G_qryparam_state=‖i‖或者不赋值p_qry中g_gem的construct时的WHERE条件只
能进行单选
注:INPUT录入开窗时的WHERE条件,CONSTRUCT查询开窗时的WHERE条件查询开窗可以设置9个arg1…arg9。
WHEN INFIELD(tc_ooa001)
CALL cl_init_qry_var() #变量集合初始化g_qryparam
LET g_qryparam.form = "q_tc_ooa" ###########
LET g_qryparam.state = "c" #p_qry中g_gem的CONSTRUCT
时的WHERE 条件,可以进行多选
LET g_qryparam.arg1=‖00002‖#给arg1赋值
LET g_qryparam.default1 = g_tc_ooa.tc_ooa001 #预设值
CALL cl_create_qry() RETURNING g_qryparam.multiret #根据
g_qryparam的值弹出查询视窗
g_qryparam.multiret STRING类型
DISPLAY g_qryparam.multiret TO tc_ooa001 #全写
NEXT FIELD tc_ooa001
自定义报表p_query cooi100,cooi1001
ON ACTION output1 #自定义报表
LET g_action_choice="output1"
IF cl_chk_act_auth() THEN
IF cl_null(g_wc) THEN LET g_wc= "1=1" END IF
LET l_cmd = 'p_query "cooi100" "',g_wc CLIPPED,'"'
###传入画面输入的条件做为报表的WHERE 条件然后把查询出的数据打印CALL cl_cmdrun(l_cmd) #运行另外一支程式的接口函数END IF
ON ACTION output2 #自定义报表2
LET g_action_choice="output2"
IF cl_chk_act_auth() THEN
IF cl_null(g_tc_ooa.tc_ooa001) THEN CONTINUE MENU END IF
LET l_cmd = 'p_query "cooi1001" "',g_tc_ooa.tc_ooa001,'"' #画面KEY值做为报表的WHERE 条件然后把当前画面查询出的数据打印
CALL cl_cmdrun(l_cmd) #运行另外一支程式的接口函数
END IF
复制函数
Function i009_copy()
1.先检查是否已查询出数据供复制,如果没有则报错
2.接收新的KEY 值input by name g_...
3.将原来的旧值存入临时表
4.用新录入的KEY 值去update 临时表中的KEY 值字段
5.将临时表的数据insert 到实体表中
END FUNCTION
252
Alter table 时不能直接在p_zta中改,要自己写一个atler_tc_zzz_file.sch,然后在p_zta中汇入atler的SQL
在做单档多栏程式的画面时要设置屏幕变量
单档多栏参考程序:
Aooi040
员工银行信息aooi040员工银行信息勾上
标准单档的menu()
FUNCTION i010_menu()
MENU
BEFORE MENU
数据浏览的五个按纽的初始化
ON ACTION query
……
ON ACTION insert
END FUNCTION
单档多栏的menu()+bp()《=》标准单档的menu()
FUNCTION menu()判断权限,调用功能函数
WHILE TRUE
CALL i040_bp("G") 定义按纽,给g_action_choice赋值
CASE g_action_choice
WHEN "query"
IF cl_chk_act_auth() THEN
CALL i040_q()
END IF
WHEN "detail"
IF cl_chk_act_auth() THEN
CALL i040_b()
……………………………..
END CASE
END FUNCTION
FUNCTION i040_bp()
DISPLAY ARRAY g_gen TO s_gen.* ATTRIBUTE(COUNT=g_rec_b)
#动态数组屏幕变量顺序一一对应
BEFORE DISPLAY
ON ACTION query
LET g_action_choice="query"
EXIT DISPLAY
END DISPLAY
END FUNCTION
……
标准单档修改,录入:
U() --→i() 接受用户在画面上输入的值INPUT
A()-→i()
INPUT 事件:BEFORE INPUT,AFTER INPUT,BEFORE FIELD,AFTER FIELD,ON ACTION,ON IDLE
单档多栏:
INPUT ARRAY #将屏幕变量输入的值接受到动态数组中
AFTER INPUT
BEFORE FIELD
AFTER FIELD
ON ACTION controlo #沿用上笔资料复制
ON IDLE
BEFORE ROM #鼠标焦点进入这一行之前触发的事件,TIPTOP习惯在此事件中# #检查当前行是否存在数据,如果存在则对此笔数据上锁AFTER ROW #鼠标焦点离开当前行时触发的事件,判断如果在BEFORE ROW中#对此笔数据上锁的话,则解锁
BEFORE INSERT #新增一笔数据之前触发的事件
AFTER INSERT #新增一笔数据之后触发的事件
SQL:INSERT INTO #数据表录入数据
ON ROW CHANGE #鼠标焦点离开当前行,并且当前行的数据被改变时触发的事
件
SQL:UPDA TE #数据表数据修改
BEFORE DELETE #删除一笔数据之前触发的事件
SQL:DELETE 数据表数据删除
END INPUT