【实战指南】T100 Q查询开发:从设计器操作到SQL优化全解析

张开发
2026/5/17 15:44:09 15 分钟阅读
【实战指南】T100 Q查询开发:从设计器操作到SQL优化全解析
1. T100 Q查询开发入门指南第一次接触T100 Q查询开发时我被各种专业术语和操作步骤绕得头晕。但经过几个项目的实战后我发现这套开发流程其实很有规律可循。Q查询是T100系统中用于数据检索的核心功能特别适合需要定制化查询界面的业务场景比如订单查询、库存跟踪等。开发一个完整的Q查询程序主要包含三个关键环节程序框架搭建、界面设计、查询逻辑实现。与单档/双档程序不同Q查询更注重数据展示和筛选能力。举个例子我曾经为仓库部门开发过一个物料追溯查询通过Q查询实现了多条件组合筛选和历史数据对比功能。2. 开发环境准备与程序注册2.1 基础程序注册开发前需要在T100系统中注册程序信息。使用azzi900作业创建程序代号时有个容易踩坑的地方程序代号必须全局唯一。我建议采用模块前缀功能缩写的命名方式比如CXM开头的物料模块查询程序。# 示例创建查询程序 r.r azzi900 # 输入参数 # 程序代号cxmq001 # 程序名称物料库存查询 # 程序类型Q2.2 作业关联设置通过azzi910关联作业与程序时一个程序可以被多个作业调用。这里有个实用技巧可以为不同部门创建不同的作业编号但共用同一套程序代码。比如销售部和采购部可以使用不同的作业编号访问同一个库存查询程序。3. 设计器核心操作详解3.1 规格下载与签出在设计器中下载规格时务必勾选同时签出规格和程序选项。我有次漏选这个选项导致后续修改无法同步到服务器。签出后会在本地生成两个关键文件.4fd界面规格文件.4gl程序逻辑文件3.2 R.A画面生成器实战进入adzp168画面生成器时样板类型必须选择Q查询作业。这里有个界面布局的选型建议左方QBE适合条件字段较多的情况上方QBE适合结果展示区域较大的场景字段选择时要注意必选关键字段如单号、日期关联字段要完整如料号需连带品名、规格数值字段要包含单位4. 手动补充开窗代码技巧4.1 CONSTRUCT段开发设计器不会自动生成开窗代码需要手动在construct段添加。以客户编号开窗为例ON ACTION controlp INFIELD xmzyuc003 #add-point:ON ACTION controlp INFIELD xmzyuc003 nameconstruct.c.xmzyuc003 INITIALIZE g_qryparam.* TO NULL LET g_qryparam.state c CALL q_pmaa001_13() # 客户主档开窗程序 DISPLAY g_qryparam.return1 TO xmzyuc003 NEXT FIELD xmzyuc003常见开窗类型对应程序料号查询q_imaal001供应商查询q_pmaa001_11仓库查询q_imaal002_94.2 条件组合处理通过CONSTRUCT BY NAME生成的g_wc变量会自动组合查询条件。但要注意特殊字符处理# 处理带单引号的条件值 IF g_wc MATCHES ** THEN LET g_wc REPLACE(g_wc, , ) END IF5. b_fill段SQL优化实战5.1 基础查询结构优化在rank_sql_after段落构建SQL时要注意优先使用LEFT JOIN代替子查询多表关联时要指定关联条件大数据量表要放在JOIN的左侧LET ls_sql_rank SELECT xmzyucdocno, pmaal004, imaal003, FROM xmzyuc_t, LEFT JOIN pmaal_t ON xmzyucentpmaalent AND xmzyuc003pmaal001, LEFT JOIN imaal_t ON xmzzucentimaalent AND xmzzuc001imaal001, WHERE xmzyucent?, g_enterprise, AND , g_wc5.2 性能提升技巧索引利用确保查询条件字段已建索引字段精简只SELECT必要的字段分页处理大数据量时添加LIMIT条件语言参数多语言字段要带语言条件# 优化后的多语言查询示例 LEFT JOIN imaal_t ON xmzzucentimaalent AND xmzzuc001imaal001 AND imaal002,g_dlang,5.3 自定义字段处理对于需要计算的衍生字段在fill段落补充#add-point:b_fill段資料填充 nameb_fill.fill # 计算含税金额 LET g_xmzyuc_d[l_ac].tax_amount g_xmzyuc_d[l_ac].amount * 1.136. 调试与授权技巧6.1 常见问题排查开窗不弹出检查CALL的程序是否存在查询无结果打印g_wc值确认条件组合性能缓慢用EXPLAIN分析SQL执行计划6.2 程序授权要点通过azzi850授权时要注意测试阶段先开放全部权限正式上线后按角色分配权限敏感字段要设置只读权限# 授权示例 r.r azzi850 # 选择程序cxmq001 # 设置角色WAREHOUSE # 权限查询/打印7. 进阶开发建议实际项目中我总结出几个提升效率的方法建立标准模板程序减少重复开发复杂查询使用存储过程封装定期优化数据库统计信息使用cl_sql_add_filter添加系统级过滤条件遇到多页签需求时可以参考标准程序axmq540的实现方式在b_fill中编写多个SQL片段通过UNION合并结果。

更多文章