很多步骤前面做过很多次了,就写的很省略,具体可以参见:
要求
QBE查询条件:
- 订单单号 xmzyucdocno
- 订单日期 xmzyucdocdt
- 业务人员 xmzyuc001
- 业务部门 xmzyuc002
- 客户编号 xmzyuc003
数据订单页签:
- 订单单号
- 订单日期
- 客户编号
简称 - 项次
- 料号
品名
规格 - 单位
单位说明 - 数量
- 单价
- 含税金额
- 未税金额
- 税额
1. azzi900建立程序代号cxmq666
2. azzi910建立作业代号cxmq666
3. 设计器 – 规格 – 下载规格 – 同时签出规格和程序
4. 设计器 – 常用工具 – r.a画面产生器 – 产生规格
r.a画面产生器(adzp168)
- 【样板类型】一定要选择Q查询作业
- 列表模式资料浏览区块:可以选择左方QBE或者上方QBE,根据需求设定
- 根据需求设定需要显示的字段,然后生成画面
5. 设计器 – 规格 – 下载规格
6. 设计器 – 档案 – 开启档案,修改规格
【参考字段】设置
客户编号 – 交易对象简称
料号 – 品名
料号 – 规格
单位 – 说明
修改完成后,上传规格
7. 设计器 – 程序 – 下载程序,修改程序
设计器不产生【开窗】代码,需自己写
此时,cxmq666里面的内容是空的,设计器只会帮我们产生一个空的框架,里面的内容需要自己修改,包括 constuct查询 和 input输入 都需要自己写。
位置:xxx_ui_dialog → DIALOG → DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
- input输入,在#add-point:input段落 name=”ui_dialog.input”写input内容。
- construct查询,在#add-point:construct段落 name=”ui_dialog.construct”里面写。
这部分代码控制开窗:
#单号、单据日期、业务人员、业务部门、客户编号
CONSTRUCT BY NAME g_wc ON xmzyucdocno,xmzyucdocdt,xmzyuc001,xmzyuc002,xmzyuc003
ON ACTION controlp INFIELD xmzyucdocno
#add-point:ON ACTION controlp INFIELD xmzyucdocno name=”construct.c.xmzyucdocno”
#查询时开窗 add by lzy
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = ‘c’
LET g_qryparam.reqry = FALSE
CALL cq_xmzyucdocno() #呼叫開窗
#CALL q_ooba002_1()
DISPLAY g_qryparam.return1 TO xmzyucdocno #顯示到畫面上
NEXT FIELD xmzyucdocno #返回原欄位
ON ACTION controlp INFIELD xmzyuc001
#add-point:ON ACTION controlp INFIELD xmzyuc001 name=”construct.c.xmzyuc001″
#開窗c段
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = ‘c’
LET g_qryparam.reqry = FALSE
CALL q_ooag001() #呼叫開窗
DISPLAY g_qryparam.return1 TO xmzyuc001 #顯示到畫面上
NEXT FIELD xmzyuc001
ON ACTION controlp INFIELD xmzyuc002
#add-point:ON ACTION controlp INFIELD xmzyuc002 name=”construct.c.xmzyuc002″
#開窗c段
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = ‘c’
LET g_qryparam.reqry = FALSE
CALL q_ooeg001_9() #呼叫開窗
DISPLAY g_qryparam.return1 TO xmzyuc002 #顯示到畫面上
NEXT FIELD xmzyuc002 #返回原欄位
ON ACTION controlp INFIELD xmzyuc003
#add-point:ON ACTION controlp INFIELD xmzyuc003 name=”construct.c.xmzyuc003″
#開窗c段
INITIALIZE g_qryparam.* TO NULL
LET g_qryparam.state = ‘c’
LET g_qryparam.reqry = FALSE
CALL q_pmaa001_13() #呼叫開窗
DISPLAY g_qryparam.return1 TO xmzyuc003 #顯示到畫面上
NEXT FIELD xmzyuc003 #返回原欄位
END CONSTRUCT
根据construct获取条件组成g_wc,在b_fill修改
在#add-point:b_fill段rank_sql_after name=”b_fill.rank_sql_after”中修改:
LET ls_sql_rank = “SELECT UNIQUE ‘N’,xmzzucdocno,xmzzucseq,xmzyucdocdt,xmzyuc003,pmaal004,xmzzuc001,imaal003,imaal004,”,
“xmzzuc002,”,xmzzuc003,xmzzuc007,xmzzuc008,xmzzuc009,xmzzuc010″,
” FROM xmzyuc_t “,
” LEFT JOIN xmzzuc_t ON xmzyucent=xmzzucent AND xmzyucdocno=xmzzucdocno “,
” LEFT JOIN pmaal_t ON xmzyucent=pmaalent AND xmzyuc003=pmaal001 AND pmaal002='”,g_dlang,”‘”,
” LEFT JOIN imaal_t ON xmzzucent=imaalent AND xmzzuc001=imaal001 AND imaal002='”,g_dlang,”‘”,
” WHERE xmzyucent=?”,
” AND “, g_wc
LET ls_sql_rank = ls_sql_rank, cl_sql_add_filter(“xmzyuc_t”),
” ORDER BY xmzyuc_t.xmzyucdocno”
还需在 #add-point:b_fill段sql_after name=”b_fill.sql_after” 里修改:
如果画面上的栏位,不能用表里面的字段来表示,需要用自定义字段来接收的,可以在#add-point:b_fill段資料填充 name=”b_fill.fill”里面补充资料例如获取客户名称,数值计算等
#add-point:b_fill段資料填充 name=”b_fill.fill”
# [单位说明]的查询, add by lzy
SELECT oocal003 INTO g_xmzyuc_d[l_ac].xmzzuc002_desc FROM oocal_t
WHERE oocalent = g_enterprise
AND oocal001 = g_xmzyuc_d[l_ac].xmzzuc002
#end add-point
如果需求是有多页单身,那么需要在b_fill的函数里面根据画面的栏位写多条sql语句,具体可以参考axmq540标准程序的b_fill逻辑
8. azzi850 给程序授权
总结
Q查询开发流程不难,主要就是在 b_fill 中写SQL。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43734095/article/details/113391746
转载请注明:赫非域 » 【实习之T100开发】T100 Q查询开发流程