INPUT和CONSTRUCT指令——范例报表查询,作用让用户输入数据,自动生成SQL的WHERE条件,带开窗查询
INPUT指令
说明:
1. 当程序执行到INPUT指令时,会将控制权交给用户,让用户输入数据。
2. 用户输入完字段的数据,会将数据回传给程序中的变量接收。
3. 只要执行到INPUT的指令,程序会将每个字段Default为NULL。
反之不需要将每个字段的值都变为NULL的话,需添加(WITHOUT DEFAULTS)
范例(cxrq005):
1、首先在MAIN函数前定义客制变量,用来接收用户数据;
#add-point:自定義模組變數-客製(Module Variable) name="global.variable_customerization" TYPE type_g_input RECORD
xrsduc010 STRING,
xrsduc010_desc STRING,
xrsduc010_desc_1 STRING
END RECORD DEFINE g_input type_g_input #end add-point
以上这些变量,均对应规格上的控件代号进行定义;
2、在cxrq005 _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.xrsduc010 FROM xrsduc010 ATTRIBUTES(WITHOUT DEFAULTS) ON ACTION controlp INFIELD xrsduc010
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = 'c' #c-多选,i-单选
LET g_qryparam.reqry = FALSE
LET g_qryparam.default1 = g_input.xrsduc010 #給予default值
LET g_qryparam.arg1 = g_site
CALL cq_pmab001_2() #呼叫開窗
DISPLAY g_qryparam.return1 TO xrsduc010 #將開窗取得的值回傳到變數
#DISPLAY g_qryparam.return2 TO xrsduc010_desc
#DISPLAY g_qryparam.return3 TO xrsduc010_desc_1 END INPUT
#end add-point
如有多个控件的输入控制权需要交给用户来输入,依次在INPUT指令中输入接收数据的变量和控件代号即可。
CONSTRUCT指令
此指令可让用户在画面上输入查询条件(通称Query By Example;QBE),以取得用户的查询范围数据。用户的查询数据会组成一串WHERE指令(参下页批注),并置入设定好的变量中。若使用者未输入任何条件,即按下『确定』离开CONSTRUCT,系统也会自动于此变量中补入『1=1』
范例同上:
1、同上;
接收WHERE指令的变量最好使用STRING类型;
2、在cxrq005 _ui_dialog()函数中的DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)领域下自定义CONSTRUCT:
#add-point:construct段落 name="ui_dialog.construct"
CONSTRUCT BY NAME g_input.xrsduc010 ON xrsduc010
ON ACTION controlp INFIELD xrsduc010
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = 'c'
LET g_qryparam.reqry = FALSE
LET g_qryparam.default1 = g_input.xrsduc010 #給予default值
LET g_qryparam.arg1 = g_site
CALL cq_pmab001_2() #呼叫開窗
DISPLAY g_qryparam.return1 TO xrsduc010 #將開窗取得的值回傳到變數
#DISPLAY g_qryparam.return2 TO xrsduc010_desc
#DISPLAY g_qryparam.return3 TO xrsduc010_desc_1 NEXT FIELD xrsduc010 END CONSTRUCT
#end add-point
①域名和变量名称相同时: CONSTRUCT BY NAME char_variable ON column_list
反之:CONSTRUCT char_variable ON column_list FROM field_list
说明:
char_variable为接取用户输入数据的字符串变量(建议以STRING格式变量接取)
column_list为对应到表格(TABLE)的域名清单(逗号隔开)
field_list为画面(WINDOW或是FORM)上的字段代码清单(逗号隔开)
注:INPUT的数据输入后,其值是分散于个变量中,若要以INPUT指令来接取用户所输入的查询条件,则必需以一连串复杂的字符串组合指令来组出查询指令所需要的WHERE条件。而CONSTRUCT的优点在:系统会自动判别用户输入条件并组合,后续只要将之与SELECT等指令组合即可,可降低设计的复杂度。
INPUT和CONSTRUCT指令——范例报表查询,作用让用户输入数据,自动生成SQL的WHERE条件,带开窗查询的更多相关文章
- Linq to sql 实现多条件的动态查询(方法一)
/// <summary> /// Linq to sql 多字段动态查询 /// </summary> /// <returns></returns> ...
- 自动生成 Lambda查询和排序,从些查询列表so easy
如下图查询页面,跟据不同条件动态生成lambda的Where条件和OrderBy,如果要增加或调整查询,只用改前台HTML即可,不用改后台代码 前台代码: <div style="pa ...
- SQL Server优化技巧——如何避免查询条件OR引起的性能问题
之前写过一篇博客"SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析",里面介绍了OR可能会引起全表扫描或索引扫描的各种案例,以及如何优化查询条件中含有OR的SQL语句的 ...
- SQL Server优化技巧——如何避免查询条件OR引起的性能问题
原文:SQL Server优化技巧--如何避免查询条件OR引起的性能问题 之前写过一篇博客"SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析",里面介绍了OR可能会引起 ...
- Linux指令范例速查手册
linux命令繁多,命令就是AK的子弹,对上口径,百发百中! 无意发现一本介绍Linux命令的手册--->[Linux指令范例速查手册] 下载: https://pan.baidu.com/s/ ...
- SAP 查询分析器,查询报表自动生成,SQL查询测试实现说明(转)
在日常的SAP开发和应用中,经常需要通过查询SAP数据表来处理日常业务,比如:数据对账.报表SQL测试.SAP查询功能开发等.通过开发SAP查询分析器,SAP实施和开发人员,可以在较短的时间内查询到需 ...
- NSPredicate用法总结(Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取)
简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取. 定义(最常用到的方法): NSPredicate *ca = [NSPred ...
- 手机端input[type=date]的placeholder不起作用
<div class="input clearfix"> <label class="fl">起始日期</label> &l ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
随机推荐
- 【java设计模式】-01设计模式简介
简介 设计模式(Design pattern)是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的. 设计模式是一套被反复使 ...
- 使用vim编辑python智能提示
一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.p ...
- Cannot find ./catalina.sh The file is absent or does not have execute permission This file is nee Linux上tomcat无法正常启动
上传了个tomcat7的压缩包上linux服务器,解压后,想直接启动,发现报错: Cannot find ./catalina.sh The file is absent or does not ha ...
- 【Spark机器学习速成宝典】推荐引擎——协同过滤
目录 推荐模型的分类 ALS交替最小二乘算法:显式矩阵分解 Spark Python代码:显式矩阵分解 ALS交替最小二乘算法:隐式矩阵分解 Spark Python代码:隐式矩阵分解 推荐模型的分类 ...
- legend3---11、php前端模块化开发
legend3---11.php前端模块化开发 一.总结 一句话总结: 把常用的前端块(比如课程列表,比如评论列表)放进模块列表里面,通过外部php变量给数据,可以很好的实现复用和修改 页面调用 @p ...
- Mac下持续集成-查看占用的端口及kill
(base) localhost:~ ligaijiang$ lsof -i tcp:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Q ...
- ubuntu如何删除刚添加的源?
答: sudo add-apt-repository -r <source_url> 如: sudo add-apt-repository -r ppa:linaro-maintainer ...
- shiro中接入单点登录功能
最近新建的系统中使用了shiro,而shiro框架中包含登录认证和鉴权的功能,因为我们系统要统一接入公司内部的单点登录(isso)系统,所以通过isso的登录用户,需要在shiro中置为已认证,一下提 ...
- 利用Spring的AbstractRoutingDataSource解决多数据源的问题【代码手动切换,非AOP】
转: 利用Spring的AbstractRoutingDataSource解决多数据源的问题 多数据源问题很常见,例如读写分离数据库配置. 原来的项目出现了新需求,局方要求新增某服务器用以提供某代码, ...
- mysql 截取字符函数substring(param1,param2,param3) 的用法
substring(paramter1,paramter2,paramter3) 截取字段长度 paramter1 被截取的字段paramter2 从第几位开始截取,负数表示从末尾开始数,的位数开始 ...