报表查询——自动刷新数据,双击明细打开关联作业
这次的范例是(cxmq100);
目的:实现报表数据自动刷新,双击明细数据打开相关的查询作业;
1)在MAIN前进行客制变量定义:
#add-point:自定義模組變數-客製(Module Variable) name="global.variable_customerization"TYPE type_g_input RECORDrefresh LIKE type_t.num10,autoRefresh LIKE type_t.chr1
END RECORDDEFINE g_input type_g_input #INPUT條件DEFINE g_seconds LIKE type_t.num10
DEFINE g_time1 DATETIME YEAR TO SECOND
DEFINE g_time2 STRING
DEFINE g_time3 STRING
DEFINE l_hhmmss STRING
DEFINE g_total LIKE type_t.num10
#end add-point
2)在cxmq100_init()中将客制变量进行初始化赋值:
#add-point:畫面資料初始化 name="init.init"LET g_input.refresh = 1LET g_input.autoRefresh = 'Y'LET g_total = g_input.refresh * 60 LET g_seconds = 0#end add-point
3)在 cxmq100_ui_dialog() 中DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)下置入INPUT指令,让用户输入数据,并在此实现自动刷新数据的功能:
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)#add-point:input段落 name="ui_dialog.input"INPUT g_input.refresh,g_input.autoRefresh FROM refresh,autoRefresh ATTRIBUTE(WITHOUT DEFAULTS)BEFORE INPUTON idle 5if g_input.autoRefresh = "Y" thenIF g_time1 IS NULL THENLET g_time1 = cl_get_current()END IF#去掉“-”,“:”和空格,得到2个数字做大小比较,不要求得到准确的秒数差LET g_time2 = g_time1LET g_time2 = s_chr_minus(g_time2,'-',0)LET g_time2 = s_chr_minus(g_time2,':',0)LET g_time2 = s_chr_atrim(g_time2)LET l_hhmmss = g_time2.substring(9,10)*3600+g_time2.substring(11,12)*60+g_time2.substring(13,14)LET g_time2 = g_time2.substring(1,8),l_hhmmssLET g_time3 = cl_get_current()LET g_time3 = s_chr_minus(g_time3,'-',0)LET g_time3 = s_chr_minus(g_time3,':',0)LET g_time3 = s_chr_atrim(g_time3)LET l_hhmmss = g_time3.substring(9,10)*3600+g_time3.substring(11,12)*60+g_time3.substring(13,14)LET g_time3 = g_time3.substring(1,8),l_hhmmss#DISPLAY 'g_time2 =',g_time2 #预埋调试用,可放开看时间调试#DISPLAY 'g_time3 =',g_time3#display '3-2 =',g_time3 - g_time2 #这个2是容许误差2秒,2秒内的误差都不会触发重计倒计时,这是因为服务器有时候会很卡、停顿,尤其是网络的延迟,这些都会造成误差,如果特别卡,可以适当放大秒数误差,但是会造成必须操作X秒以上才会触发重计的现象IF g_time3 - g_time2 < 2 THENIF g_seconds >= g_total THEN #自动刷新设为60秒CALL cxmq100_b_fill()LET g_seconds = 0END IFLET g_time1 = cl_get_current()LET g_seconds = g_seconds + 1#DISPLAY g_seconds ELSE #DISPLAY 'cl_get_current() =',cl_get_current() 预埋调试用,可放开看时间调试#DISPLAY 'g_time1 =',g_time1#DISPLAY 'cl_get_current() - g_time1 =',cl_get_current() - g_time1 #LET g_seconds = 0LET g_time1 = cl_get_current() END IFend ifAFTER FIELD refreshIF NOT cl_null(g_input.refresh) THENLet g_total = g_input.refresh * 60 END IF END INPUT#end add-point
ON IDLE 5 表示空闲时间5秒执行;
AFTER FIELD refresh 表示用户在输入完指定的字段动作完毕后,计算机会处理AFTER FIELD下的程序段;
4)实现双击明细数据打开相关查询作业的功能:
①依然在cxmq100_ui_dialog() 下先把doubleClick的action事件【modify_detail】客制好:
#主選單用ACTION&include "main_menu_exit_dialog.4gl"&include "relating_action.4gl"#交談指令共用ACTION&include "common_action.4gl"#add-point:查詢方案相關ACTION設定前 name="ui_dialog.set_qbe_action_before"ON ACTION modify_detailLET g_action_choice="modify_detail"IF cl_auth_chk_act("modify_detail") THENIF g_detail_idx>=1 THENCALL cxmq100_qrystr(g_xmabuc_d[g_detail_idx].xmabucdocno) END IFEND IF#end add-point
明细单号xmabucdocno作为PK传入cxmq100_qrystr函数;
5) cxmq100_qrystr(p_docno)函数:
PRIVATE FUNCTION cxmq100_qrystr(p_docno)DEFINE p_docno LIKE xmdk_t.xmdkdocno#DEFINE l_slip LIKE oobal_t.oobal002#DEFINE l_prog LIKE oobx_t.oobx004#DEFINE l_success LIKE type_t.num5DEFINE ls_js STRINGDEFINE la_param RECORDprog STRING,actionid STRING,background LIKE type_t.chr1,param DYNAMIC ARRAY OF STRINGEND RECORD#抓取單據別{LET l_slip = ''LET l_prog = ''IF NOT cl_null(p_docno) THENCALL s_aooi200_get_slip(p_docno) RETURNING l_success,l_slipIF NOT cl_null(l_slip) THEN#抓取程式名稱SELECT oobx004 INTO l_progFROM oobx_tWHERE oobxent = g_enterpriseAND oobx001 = l_slipEND IFIF NOT cl_null(l_prog) THENINITIALIZE la_param.* TO NULLLET la_param.prog = l_progLET la_param.param[1] = p_docnoLET ls_js = util.JSON.stringify(la_param)CALL cl_cmdrun(ls_js)END IFEND IF}IF NOT cl_null(p_docno) THENINITIALIZE la_param.* TO NULLLET la_param.prog = "cxmt631"LET la_param.param[1] = p_docnoLET ls_js = util.JSON.stringify(la_param)CALL cl_cmdrun(ls_js)END IF
END FUNCTION
注意上面使用了{}注释的内容在这个范例中不适用;
下方代码,双击单身明细,打开cxmt631作业:
IF NOT cl_null(p_docno) THENINITIALIZE la_param.* TO NULLLET la_param.prog = "cxmt631"LET la_param.param[1] = p_docnoLET ls_js = util.JSON.stringify(la_param)CALL cl_cmdrun(ls_js)END IF
转载于:https://www.cnblogs.com/xiaoli9627/p/6836734.html
报表查询——自动刷新数据,双击明细打开关联作业相关推荐
- PBI Report Server 报表页面自动刷新 2步走
参考 PBI Report Server 报表页面自动刷新 - 知乎 (zhihu.com) 1.按F12调出调试工具,修改刷新按钮的id,改为c 2.打开控制台,输入以下代码运行,完工 setInt ...
- echarts 自动刷新_Echarts自动刷新数据
1.Echarts自动刷新数据 1.Echarts柱状图的正常配置 注:声明了 myChart.test这两个都有用 官方示例中myChart是声明在 function(ec)里面的 var myCh ...
- 配置导出MOSS2010列表数据到Excel并根据列表记录自动刷新数据
第一章 简介 场景描述 根据最近客户的需求,他们需要自动维护MOSS2010列表数据导出到Excel的数据实时同步,就是列表添加记录后,导出的Excel列表自动同步数据过来. 第二章 配置方法 1. ...
- html5 轮询自动刷新数据,后台调用exe,前端定时轮询调用结果
前提 使用asp.net core 2.1 前端使用vue ui使用element-ui 前端发送请求用Axios 新建asp.net core程序 1.jpg 修改Index.html @{ Lay ...
- 【electron】打开离线包-双击文件打开关联应用
1.写入注册表,在安装后执行,卸载后删除注册表 // electron-builder.json 中增加配置,"nsis": {"guid": "co ...
- 用excel打造报表查询系统
网络数据库以及ERP在中小型企业中日益风行,虽然ERP功能强大,但有的ERP报表系统中规范的报表较少,主要提供二次开发接口或通过如CRYSTALREPORT等其他报表工具进行管理,其实我们可以使用Ex ...
- python自动化表格截图_python自动化操作——excel刷新数据并截图发送微信
1 importos2 importwin32gui, win32api, win32con, win32com3 from win32com.client importDispatch4 from ...
- python自动化操作——excel刷新数据并截图发送微信
我真的是服了,一堆复制党到处粘贴,也太肆无忌惮了吧,麻烦尊尊下版权好吗,好歹这也是我辛辛苦苦写出来的...... 原封不动的抄,错了的也不知道.真的是搞笑! 1 import os2 impo ...
- 141_Power Query之获取钉钉审批流自动刷新Power BI报告
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 钉钉办公给很多企业带来了很多方便,比如审批流线上化,通用化.线上化填写后,数据自动获取又是一个硬伤了,虽然数据可 ...
最新文章
- 工程院院士李德毅:认知的三次革命,类脑的五条启发
- SAP QM QM11显示Quality Notification List
- checkbox管理
- iOS上的jQuery.on()冒泡事件绑定 以及 iOS绝对定位元素中的输入框
- 局域网中,ip可以访问其他计算机,“网络”中无法发现共享计算机,也无法通过主机名访问。...
- 全球与中国Z型斗式提升机市场运营战略分析及未来趋势创新建议报告2022-2027年版
- One order search dynamic sql statement生成位置
- 怎样将employee 加到Territory里
- OpenCV学习笔记(六):非线性滤波-中值、双边:medianBlur(),bilateralFilter()
- python生成个性二维码学习笔记
- 重建Oracle 11g R2控制台
- 制作linux系统镜像U盘启动盘(有效适用)
- html 字怎么居中怎么写,html文字居中代码怎么写
- Android P 怎样屏蔽HOME键和RECENT键
- 创新专题一:省份层面(创新效率、创新能力、投入产出、高质量发展等)
- DOTA高考全国卷A卷
- 合同管理数据库设计mysql_工程合同管理信息系统的数据设计理念
- ssh连接远程服务器报错:ssh_exchange_identification: read: Connection reset by peer
- Thinkphp整合微信支付功能
- 活动星投票千人共读一本书网络评选微信的投票方式线上免费投票