用友NC_查询引擎使用文档.doc_第1页
用友NC_查询引擎使用文档.doc_第2页
用友NC_查询引擎使用文档.doc_第3页
用友NC_查询引擎使用文档.doc_第4页
用友NC_查询引擎使用文档.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用友用友 NCNC 二次开发平台二次开发平台 查询引擎查询引擎 用友 NC 平台技术部 2003 12 31 第 2 页 目目 录录 第一章前言 3 1 产品的前身 3 2 产品的需求背景 3 第二章查询引擎的管理调度 5 1 对象树管理 5 1 1目录管理 5 1 2对象管理 6 2 切换定义数据源 6 第三章查询引擎的查询模型 8 1 参数控制 8 2 SQL 设计 9 2 1数据字典 10 2 2向导设计 10 2 3手工设计 13 3 数据交叉 13 3 1第一类 投影 交叉 13 3 2第二类 旋转 交叉 15 4 代码嵌入 16 4 1SQL整理 16 4 2数据加工 18 4 3穿透规则 21 5 查询浏览 24 5 1查询执行与展现 24 5 2数据导出 24 5 3创建物化表 24 6 查询任务 25 第四章查询引擎的界面模型 26 1 引用查询 26 2 格式设计 27 2 1控件管理 27 2 2行列格式设计 31 2 3预定义数据处理 34 3 界面运行 36 3 1界面初始化 36 3 2数据处理 37 3 3控件连动 40 3 4报表打印 41 3 5功能节点挂接 41 参考文献 43 第 3 页 第一章第一章 前言前言 查询引擎的功能定位 一个面向高级实施人员和专业开发人员的查询建模产品 可以全面 支持复杂查询的设计和个性化的报表展现 1 产品的前身产品的前身 查询引擎在功能流程和查询模型方面参考了自定义查询的理念 在界面设计方面汲取了 Form Design 的思路 同时融入了数据仓库的技术 并依赖于通用的 NC 数据字典 DDC 1 自定义查询 NC 于 2000 年开始研发的一个面向中级实施人员和二次开发人员的 查询报表工具 由查询管理中心 报表格式设计 报表浏览 报表权限控制和数据 加工厂几个模块构成 此工具首次提出了基于数据字典来管理数据并建立查询对象 的思路 能够提供比较丰富的查询分析 数据加工和报表展现功能 2 Form Design NC 于 2003 年开始研发的一种界面开发模式 定位于支持功能建模 3 数据字典 一种管理数据库逻辑结构的机制 存在于物理数据库和用户接口之间 NC 于 2002 年开始研发数据字典 最开始只用于自定义查询 后来经过功能强化 和逐步推广 成为现在的 DDC Data Dictionary Control 其功能包括数据库对象 的管理与编辑 数据字典的解析生成等 4 数据仓库 NC 的一个独立产品 能够按照指定的入仓规则从多个业务数据库抽取 数据 并通过入仓服务定期把数据加载到数据仓库 2 产品的需求背景产品的需求背景 1 复杂查询报表的需求 在实际的业务查询中 开发人员经常会遇到以下一些棘手的 问题 复杂的 SQL 从不同的查询条件得到完全不同的查询结果 查询结果的 复合 业务逻辑代码和大量数据加工算法的介入 各种各样的数据交叉和数据处理 手段等等 在展现格式方面 通常要求灵活 友好 可视化 个性化的设计界面 丰富的展现控件和统计图表 依据数据对单元格 列表头和行表头的格式进行设置 表单控件之间的连动等等 这一切都对早期的查询报表工具提出了艰巨的要求 2 二次开发的需求 随着 NC 对行业用户的拓展 由业务组程序员在通用软件中针对 每个查询报表需求进行开发的方案已经变得不太现实 一线人员越来越频繁的面临 来自用户的个性化报表实施压力 实施团队迫切要求一个强大而且易用的二次开发 工具 尽管功能的强大和易用往往存在着一些矛盾 3 工具整合的需求 自定义查询在推出后 在实施中得到了一定的应用 但局限于出 复杂程度不太高的查询报表 IUFO 是公司的传统报表产品 它更偏重于报表的管 理方面 比如报表的发布 审核 校验等等 数据仓库使查询的应用由单数据源拓 展到了多数据源 并且提供定时同步业务数据的功能 为了有效地实现资源共享 结合发挥各个工具的优势 NC 决策层一直在推动相关产品的整合 4 查询分析软件发展潮流的需求 近几年来 查询分析 数据挖掘 商业智能的研究 不论在企业应用还是在学术领域都成为热点 ERP 软件的数据建模和查询建模功能 已经成为代表产品水平的重要指标 第 4 页 第 5 页 第二章第二章 查询引擎的查询引擎的管理调度管理调度 1 对象树管理对象树管理 查询引擎的管理调度功能由主界面完成 主界面左侧为一棵对象树 树上挂有代表查询对 象和界面对象的节点 右侧为显示当前选中对象基本属性的属性框 图 2 1 管理调度主界面 对象树 ObjectTree 对象树是一个支持层次管理的数据结构 它维护自身的加载 存储和节点的目录管理 每个节点的信息主体存储在数据库的一个 BLOB 字段中 对象树上 的节点通常分为目录 Folder 和对象两类 并支持快速定位 树获得焦点时用 ctrl f 属性框 ObjectInspector 一个自动显示对象的属性和取值的控件 取值部分会根 据属性的数据类型采用不同的编辑器 1 1 目录管理 1 增加 删除 修改 在根节点或目录节点之下可以增加目录 删除目录时会删除目录 第 6 页 下的所有对象 目录的可修改属性为目录名称 同一目录下的目录和对象不能重名 2 复制 剪切 粘贴 在查询子树或格式子树下 可以将一个目录及其下属内容从某位 置拷贝或移动到另一个位置 1 2 对象管理 1 增加 删除 修改 在根节点或目录节点之下可以增加查询对象或者界面对象 前者 的属性为编码 名称和数据源 后者的属性为编码和名称 其中编码一经使用 就 不再建议作任何修改 因为此编码可能被其它对象引用 2 复制 剪切 粘贴 在查询或格式子树下 可以将一个对象从某位置拷贝或移动到另 一个位置 3 导入 导出 选中某个对象 可将其导出为 XML 文件 该文件可被导入到另外的目 录下 当选中某目录时 导入功能可用 此功能可用于对象的跨数据库复制 需 要注意的是 a 在导出查询对象或界面对象时 需将其引用的查询对象一并导出才 有意义 b 导入不能违反对象主键及名称的唯一性约束 下图显示了某查询对象 所导出的 XML 文件 图 2 2 导出 XML 文件 2 切换定义数据源切换定义数据源 多数据源运作机制 查询引擎支持这样的模式 NC 业务在数据源 A 下运行 查询引 擎的定义放在数据源 B 通过引擎定义的查询可以到数据源 C 去执行 第 7 页 图 2 3 切换定义数据源 定义数据源 上面说的 B 是指查询引擎自身的系统表所在的数据源 执行切换功能后 主界面上的对象树的内容会作相应改变 图 2 4 切换定义数据源效果 第 8 页 第三章第三章 查询引擎的查询模型查询引擎的查询模型 查询模型的定义包括参数定义 SQL 设计 含交叉定义 SQL 整理 数据加工 穿透规 则等几部分 其中穿透规则描述的是本查询与外部查询的通信关系 剩余部分都用于描述 查询内部的属性 查询设计态和运行态的基本流程如下图所示 图 3 1 查询模型流程 1 参数控制参数控制 参数是查询模型中代表动态信息的元素 在 SQL 设计 SQL 整理和数据加工中 均可以根 据参数的不同 对查询的定义和执行进行调整 过滤型参数 如果创建某个参数的作用是根据其取值的不同改变 WHERE 条件的设置 则 这类参数成为过滤型参数 这是最常用的参数功能 1 参数定义 用于定义本查询内部引用的所有参数 其中参数名要保证互不相同 数据类型包括自由录入 枚举 参照几种 当类型为枚举时 枚举项为用 分隔的枚举值 或者是一个单字段的查询 SQL 当类型为参照时 枚举 项为基础参照名 或者是用尖括号括起的自定义参照的类名 2 参数引用 参数可在 SQL 设计的筛选条件页签引用 也可在 SQL 整理或数据 加工的嵌入代码中利用编码向导引用 3 参数设置 运行态要求用户首先对参数进行设置 这与查询模板的使用类似 当报表引用了多个查询时 参数将通过多页签设置 每个页签代表一个查询 第 9 页 图 3 2 参数定义 图 3 3 参数引用 图 3 4 参数设置 2 SQL 设计设计 SQL 设计包括向导设计方式和手工设计方式 无论采用哪种 在完成设计时系统均会对 SQL 进行合法性校验 如未通过校验则不能保存设计 作为向导设计的一个重要组成环节 我们有必要先介绍一下数据字典 第 10 页 2 1 数据字典 前面已经提到过 查询对象的属性中包含数据源信息 因此在设计查询的时候需要加载相 应数据源的数据字典 我们知道 NC 的数据库以 DDC 作为数据字典 但非 NC 的数据库 则没有 DDC 此时 系统会根据执行数据源是 NC IUFO 或其它数据库三种情况分别加 载不同的数据字典 而且这一机制已经预留了扩展的接口 其目的就是可以面向各种类型 的数据库执行取数功能 关于数据字典的生成有多种做法 可以参考 DDC 的专门文档 这里只介绍一下数据字典 的引用操作 查询引擎中用到的数据字典都以一棵对象树的形式存在 树节点包括目录 表 视图 字段 外键等信息 通过双击对象节点可以协助录入 SQL 语句的成分 2 2 向导设计 向导设计参考典型 SQL 的构成规则 充分利用数据字典的功能 引导用户一步步完成 SQL 的设计 因此是推荐使用的方式 它由以下六个环节构成 其中最后一步 交叉属性 超 出了 SQL 的涵义 我们在后面的专门章节中进行介绍 1 表定义 即 SQL 语句中的 from 部分 可以利用数据字典选择库里的数据表 也可以选择查询对象 从而实现查询的集成 基于查询结果定义新的查询 2 连接定义 即 SQL 语句中的 join 部分 表间连接关系 支持单键连接和多键 连接两种模式 3 字段定义 即 SQL 语句中的 select 部分 可以定义任何 SQLSERVER 语法支 持的查询表达式 但要保证字段别名不重复且使用规范名称 以字母开头 由 字母 数字 下划线组成的字符串 且不能使用 SQL 保留字 如果使用了聚 集函数 则由系统自动完成 group by 部分 4 筛选条件定义 即 SQL 语句中的 where 部分 可定义确定条件和待定条件 后者可以通过双击右操作数编辑框弹出参数界面并作引用 5 排序字段定义 即 SQL 语句中的 order by 部分 6 数据交叉属性 交叉是一种常用的多维数据分析手段 详见后文 图 3 5 表定义 第 11 页 图 3 6 数据表与临时表 图 3 7 连接定义 图 3 8 字段定义 第 12 页 图 3 9 表达式生成器 图 3 10 筛选条件定义 图 3 11 排序字段定义 第 13 页 2 3 手工设计 手工设计是支持自由 SQL 的方式 由于复杂 SQL 在解析 适配 执行等方面的不稳定性 较大 因此不推荐普通用户使用 手工设计分为以下两个环节 1 SQL 录入 用户可以在数据字典的辅助下录入 SQL 语句 要求遵循 SQLSERVER 语法 2 字段显示名设置 系统通过对用户录入 SQL 的解析获得字段信息 并向用户提供输入 字段显示名的机会 显示名的默认值与查询字段的物理名相同 图 3 12 录入 图 3 13 字段显示名设置 第 14 页 3 数据交叉数据交叉 3 1 第一类 投影 交叉 投影交叉 假定有一个查询 SQL 其查询结果是单行单列的汇总值 另外还有两组 WHERE 条件的序列 分别为横向序列 WhereX1 WhereX2 WhereXn 和纵向序列 WhereY1 WhereY2 WhereYn 则数据矩阵 A aij 对应的结果集成为投影交叉 如果 aij是 WhereXi和 WhereYj同时作用在上述 SQL 上获得的结果 比如 某查询用于查出公司和部门下的人数 原始 SQL 为 SELECT bd corp unitname bd deptdoc deptname COUNT bd psndoc psncode FROM bd corp INNER JOIN bd deptdoc ON bd corp pk corp bd deptdoc pk corp INNER JOIN bd psndoc ON bd deptdoc pk deptdoc bd psndoc pk deptdoc GROUP BY bd corp unitname bd deptdoc deptname 查出的结果如下表所示 图 3 14 原始数据 无交叉 现在我们把查询字段中只保留人数 count bd psndoc psncode 一项 然后进行如下的投影交 叉设置 第 15 页 图 3 15 投影交叉设置 则交叉后的结果如下表所示 图 3 16 投影交叉结果 3 2 第二类 旋转 交叉 旋转交叉 此类交叉用于显示表中某几个字段 称为交叉值字段 的统计值 并将其分 组放置在查询结果中 一组列在数据表的左侧 称为交叉行字段 一组列 称为交叉列字 段 旋转到数据表的上部成为列表头 统计值则放在对应的交叉单元 关于旋转交叉的更细节的内容 请参考李媛媛所著的 交叉表使用说明 两类交叉的最大差别在于 第一类交叉属于查询行为 适用于行列设置都已在表样中固定 的报表 其交叉结果严格遵循表样格式 其行列结构不会受查询数据的影响 第二类交叉 属于数据加工行为 其交叉后的行列结构在查询出数据之前不可预料 多用于完全真实地 对原始数据进行动态处理 沿用 3 1 使用的例子 假定我们进行如下的旋转交叉设置 其中交叉砝码的意义是代表交 叉值字段的位置 它只能出现在交叉行字段或交叉列字段当中 第 16 页 图 3 17 旋转交叉设置 则交叉后的结果如下表所示 图 3 18 旋转交叉结果 4 代码嵌入代码嵌入 4 1 SQL 整理 SQL 整理 SQL Repair 指在 SQL 查询之前 对 SQL 所作的调整 通常会根据参数的 不同 对查询的表 字段或条件等信息进行增补或修改 SQL 整理的具体内容由内嵌的代码片段描述 这与后面将介绍的数据加工和穿透规则一样 代码的录入可通过编码向导协助完成 尽管如此 这几种功能仍然推荐由高级实施人员或 程序员使用 第 17 页 图 3 19 SQL 整理代码 在图示的 SQL 整理代码中 表达了这样一个整理愿望 当参数 detail 取值为 Y 时 引擎会在本查询对象已完成的 SQL 设计基础上多查询一张表 bd defdoc 和两个字段 档案编码 档案名称 从而获得更明细的查询信息 如果该参数取值不为 Y 则仍 然按照 SQL 设计的定义去执行查询 以下简单介绍几种 SQL 整理算法的编码向导使用方法 1 追加查询表 参数为待追加的表物理名 图 3 20 追加表向导 2 追加连接条件 与追加表同时使用 参数为连接模式 追加表物理名和追加的 表间连接条件 第 18 页 图 3 21 追加连接条件向导 3 追加查询字段 与追加表同时使用 参数为追加字段的表达式 显示名和别名 图 3 22 追加字段向导 4 按参数追加条件 根据参数取值的不同追加不同的筛选条件 参数为参数名和 筛选字段 图 3 23 按参数追加条件向导 第 19 页 4 2 数据加工 查询结果集 ResultSet 由二维数据集合 数据体 及其列信息 元数据 包括列名 列数据类型等信息 构成的一个数据载体 查询引擎中使用的结果集为 Borland 公司开发 的 DataSet 数据加工 Data Process 数据加工是指某个 或某几个 结果集在经过一系列加工 算法的变换后得到另一个结果集 而后者通常是业务上要求的展现结果 相关的算法又称 为加工滤镜 滤镜通常支持输入多个结果集和输出一个结果集 并可以嵌套使用 数据加工与 SQL 整理的区别在于 前者在 SQL 查询之后进行 作用的对象是结果集 后者 在查询之前进行 作用的对象是 SQL 定义 在数据加工的编码向导中 提供了多种实用加工滤镜 图示的数据加工代码把主键分别为 user1 和 user2 的两个结果集按照 pk corp 字段为键进行了左外连接 并在连接结果 中保留了 user name1 pk corp user name2 三列 图 3 24 数据加工代码 以下简单介绍几种数据加工算法的编码向导使用方法 1 由查询获得结果集 根据查询 ID 和参数哈希表获得查询结果集 如果没有参 数或不需要设置参数 则参数变量可取 null 第 20 页 图 3 25 获得结果集向导 2 公式设置 参数为公式列名 返回值数据类型和公式 如果公式列名不存在则 新增一列 否则将该列的内容更新为公式返回值 图 3 26 公式编辑 图 3 27 公式定义 3 结果集连接 指定两个结果集的连接字段 连接方式和连接后的保留字段 得 到连接后的结果集 第 21 页 图 3 28 结果集连接向导 4 结果集联合 指定两个列结构相兼容的结果集 得到联合 union 后的结果 图 3 29 结果集联合向导 另外再列举几个加工代码中可以调用的有用方法 1 StorageDataSet getDataSet 获得当前加工状态下的结果集 2 void setDataSet StorageDataSet ds 设置当前加工状态下的结果集 如果这句指令 放在最后 则 ds 将作为加工的最终结果集返回 3 String getQmd getDsName 获得当前加工查询模型的执行数据源 4 Hashtable getHashParam 获得参数设置哈希表 其键为参数名 值为参数 VO ParamVO 4 3 穿透规则 数据穿透 假定报表 R1 上存在某个区域 A1 A1 内部有若干业务数据 如果以 A1 为出 发点能够切换到另一张报表 R2 的上的区域 A2 而且 A1 和 A2 的内部数据存在着某种内在 联系 则称可以从 R1 穿透到 R2 当这种穿透行为传递下去 我们就可以了解某张报表的 数据明细 甚至追溯到它的数据来源 通常我们会把上述的区域选为一个表格行或者一个 表单元 而上述的内在联系就称为穿透规则 第 22 页 一个查询上可以定义多个穿透规则 每个规则需要指定穿透的目标查询 同时目标查询上 要创建一个过滤型参数 用于接收穿透区域的取值 下图所示的穿透规则表达了这样的一 个穿透意愿 当用户选中了当前查询结果的某行时 允许他按照 psncode 字段在选中行 的取值穿透到另一个查询 即目标查询 其 ID 为 rygzay 而目标查询的接收参数为 psncode 图 3 30 穿透规则定义向导 图 3 31 穿透规则代码 下图显示了一个由公司部门信息穿透到人员信息再穿透到薪资信息的用例 其中第一步穿 透是单列等值穿透 相当于 部门 电工班 第二步是非等值穿透 相当于 姓名 like 何 第三步是多列联合穿透 相当于 人员 何志平 and 年份 2003 图 3 32 穿透效果示意 第 23 页 第 24 页 5 查询浏览查询浏览 5 1 查询执行与展现 在建立好查询模型之后 系统提供预览查询执行结果的功能 用户首先输入执行查询所需 要的参数取值 如果有参数的话 查询引擎会根据该查询对象的数据源去对应的数据库执 行查询 在经过查询结果集评估 对于查询记录数过大的情况允许用户优化或放弃查询 之后 把结果集展现给用户 在展现之后 用户可以继续进行穿透 交叉和仪表测试等工 作 图 3 33 查询预览 5 2 数据导出 导出功能支持将预览数据导出为纯文本文件 并可进而用 EXCEL 打开 随着产品的发展 数据导出的格式会逐步丰富 5 3 创建物化表 查询引擎可以根据预览数据直接到数据库创建物化表 同时将物化表的结构注册到 DDC 中 以后的 SQL 设计就可以基于新创建的物化表进行 从而扩充了查询集成的范围 第 25 页 图 3 34 创建物化表 6 查询任务查询任务 查询任务由专门的节点 ETL 工具 完成 用于提供类似数据仓库的功能 ETL 工具由数 据抽取工具 查询引擎 数据仓库建表工具 DWC 和任务调度工具组成 其具体功能 参见阳雄编写的 ETL 工具使用文档 第 26 页 第四章第四章 查询引擎的界面模型查询引擎的界面模型 界面模型节点的新建和管理参见第二章 我们可以设计新的界面模型 也可以对已有的界 面模型进行修改 界面模型的设计包括引用查询 界面可视化设计 绑定数据集 数据预 处理等部分 界面模型设计态和运行态的基本流程如下图所示 设计态的操作并没有严格 意义上的顺序限制 图 4 1 界面模型流程 1 引用查询引用查询 引用查询是指将界面模型所要展现的查询结果集对应的查询定义引用到模型中来 由于同 一查询定义根据不同参数设置也可以得到不同结果集 所以为了区分这种绑定基于同一查 询定义的不同结果集时 我们对每一个查询结果集起一个单一的别名来标志 图 4 2 查询引用界面 对于数据集之间存在的某种一对多的关系 我们还可以根据需要建立主从关系 即主子表 第 27 页 图 4 3 主子连接设置界面 2 格式设计格式设计 界面模型的格式设计包括了控件拖放 编辑控件属性及数据绑定属性 定义列格式 列表 头 行表头等行列格式以及数据预处理等几部分 分别介绍如下 图 4 4 界面模型设计界面 2 1 控件管理 界面模型设计工具提供了几种最常用的控件 如图 4 4 中控件栏中所示 分别是按钮 复 选框 组合框 标签 列表 单选框 多页签 表 文本域 文本框 树 面板 分割栏 主子表 图表和参照控件 其中最重量级的控件是表和图表 绝大部分的数据集展现工作 是这两个控件完成的 控件栏 表图表 第 28 页 初始时 界面上只有一个面板 处于选中状态 布局是默认的 BorderLayout 我们接下来 的工作就是要在这个面板上定制我们的界面 这个过程和一般的可视化设计大同小异 在 此不再赘述 图 4 5 界面模型 双击界面上的控件就可以打开属性编辑器 可以编辑控件的相关属性 属性编辑器上边是 当前界面的控件列表 下面列出了当前选中控件的属性列表 我们可以从控件列表中选中 控件 也可以在界面上双击控件来选中控件进行属性编辑 图 4 6 属性编辑器 所有控件都有背景色 前景色 字体和首选大小等普通属性 其次 控件具有一些自己特 有的属性 如面板具有布局属性 分割栏有分栏方向 分栏位置等特有属性 下面我们来 介绍一下几个主要的控件 第 29 页 展现数据集的最重要的控件 表的几个属性 1 绑定数据集 可以将表绑定到引用查询中的某一个查询定义 那么在运行态下 表展现的就是该查询定义对应得到的查询结果集 当设置了表的数据集绑定属 性后 该查询定义中定义的列就相应的出现在表里 此时没有数据只有表头 2 列格式绑定 有时候会对表中的数据展现有各种格式上的要求 如预警显示 精度设置 前缀后缀等等 这时可以设置表的列格式属性 在列格式属性里不 但可以设置列绑定的列格式 也可以设置列的显示顺序 显示与否等属性 列 格式的定义在后面的小节里专门讲述 图 4 7 列格式设置 3 列表头绑定 当表绑定了数据集之后 可以根据展现需要绑定列表头格式 在 表头 ID 属性里绑定表头的 ID 之后 从界面上就可以看到表的列表头已经绑定 到了表头 ID 对应的表头格式 列表头格式的设计在后面的小节里会专门讲述 4 行表头绑定 如果表绑定的查询定义里定义了第一类交叉 即投影交叉 参见 第三章第 3 节 则表还可以设置行表头格式 关于行表头的定义和设置在后 面小节中讲述 图表 图表控件在设置了数据集绑定属性之后 可以设定其数据绑定属性 在图表控件上弹出右 键菜单点击数据绑定菜单项 可弹出数据绑定设置界面如图 4 8 所示 在这里我们可以设 置图表的类型 以及绑定的系列等属性 第 30 页 图 4 8 图表数据绑定设置界面 图表支持的类型有三种 分类图 饼图和仪表图 分类图有 2D 和 3D 两种 还可以选择是水平方向还是垂直方向展开 如果选择了各系列单 独设置图例 还可以对不同的系列设置不同的展现类型 如图 4 9 显示了两个系列的数 据 一个系列是直方图 一个系列是折线图 图 4 9 分类图 饼图也有 2D 和 3D 两种 图 4 10 显示了图 4 9 中的数据用饼图类型的展现 第 31 页 图 4 10 饼图 仪表图将每个系列的数据在一个仪表盘中显示 图 4 11 为同样的数据在仪表图的展现 仪 表图一次展现数据中的一条记录 可以通过仪表图中的导航工具栏浏览数据 图 4 11 仪表图 列表 下拉框 文本框 标签 参照等简单控件提供了绑定到多种内容的属性 其中 列 表和下拉框可以绑定到查询结果集中某列 导航或枚举 绑定查询结果集对应的参数 即 查询参数 文本框可以绑定查询参数和环境变量 参照控件可以绑定查询参数 下面是设 置一个文本框绑定到查询参数的截图 第 32 页 图 4 12 绑定查询参数的文本框 2 2 行列格式设计 行列格式设计包括列格式定义 列表头定义和行表头定义三部分 分别说明如下 列格式定义 图 4 13 列格式定义界面 我们可以定义四种类型的列格式 字符型 数值型 货币型 百分比型 后三种实际上都 属于数值型数据的不同展现 格式定义包括对齐方式 文本颜色 前导符号等等 对于数 值型的列格式还可以设置保留小数位数 是否加千分位等格式 列格式的一个比较重要的 设置就是设置预警显示 预警显示就是将符合指定条件的数据按指定颜色来显示 如销售 额这样的数据通过分段预警就很容易体现出高中低来 方便浏览数据 图 4 14 中所示预警设置就是将小于 60 的数用红色显示 60 到 80 之间的数用蓝色显示 大于 80 的数用黄色显示 预警条件中除支持用常量表达式进行比较之外 也支持用含变量 的表达式进行比较 其中的变量名必须是表中某列的列名 如表中有 A B C 三列 要 求某行中 A 列中的值大于 B 列和 C 列的值之和时该行 A 列按某种指定颜色显示 我们可 第 33 页 以给 A 列绑定列格式 在列格式的预警设置中设置预警条件为 B C 注 这里的 A B C 都是指的列名 不是列显示名 参见图 4 7 图 4 14 预警设置界面 列表头定义 图 4 15 列表头设计界面 有时候为了方便归类和分组列数据 我们需要定义多表头来加强展现 如图 4 15 我们可 以根据自己的需要定义一个多表头用来展现 在这里 可以很方便的组合表中列 定义好 的表头格式存在数据库中 并有一个表头 ID 与之对应 通过表头 ID 该列表头格式可以被 表绑定 绑定了列表头的表效果参见图 4 5 小技巧 定义对应某一查询的列表头展现时 我们可以通过参照 选中该查询来快速引 入该查询定义的列 而不用手工录入 行表头定义 如果设置表的绑定数据集属性到一个定义了第一类交叉的查询 那么表中会出现与查询中 定义的列和行相对应的列头和行头 默认的列头和行头没有任何附加的格式 如图 4 16 所 第 34 页 示 图 4 16 绑定到第一类交叉查询定义的表 就像可以给列分组定义列表头一样 我们也可以给行分组定义行表头 如图 4 17 所示 类似于列表头的定义 我们也可以合并行 还可以定义行号显示与否 行号显示的位置 甚至可以为定义好的表头绑定列表头 保存后我们可以看到界面上的表已经显示了新定义 的行表头格式 图 4 17 行表头设计界面 第 35 页 图 4 18 定义了行列表头格式的表 承图 4 16 2 3 预定义数据处理 界面模型中支持两种数据预定义的处理 定义公式列和定义小计合计 其中 公式列定义 是基于查询结果集的 定义的公式列对于所有绑定该查询结果集的控件都是可见的 小计 合计是基于表控件的 定义的小计合计只对该表起作用 不影响其他绑定到相同数据集的 控件 公式列 点击数据处理菜单下的公式列菜单项 就会弹出如图 4 19 所示的公式列定义界面 第 36 页 图 4 19 公式列定义界面 在查询结果集下拉框中选中要定义公式列的数据集 如果是添加公式列 则数据集中可选 的列名会出现在可选列列表中 如果是预定义的公式列 则可选列是数据集的原始列 如 果是运行态定义的公式列 可选列还包括已经定义的公式列 双击列项可将该列添加到公 式表达式中 公式列中可用函数和操作符也已列出 均是通过双击可以添加到表达式中 添加公式列需要指定公式列名和公式类型 也可以给公式列指定列格式 公式列表达式只 支持 Ascii 字符 不支持中文 如果表达式有误 则运行态下公式列内各行的值均为空 如果是删除公式列 列表中列出了当前数据集已定义的公式列 选中即可删除 修改公式 列界面与添加公式列类似 小计合计 设计界面模型时在表控件的表头上弹出右键菜单 点击小计合计菜单项可弹出设置小计合 计的界面 如图 4 20 其中 根据表绑定的查询定义的不同 界面会稍有区别 分别说明 如下 普通表 可以设置根据什么列分组 进行小计合计 以及分组列的升降序 可以设置小计合计计算与否 以及小计行和合计行标志展现 可以设置需要小计合计的列 以及统计运算的类型 目前支持的运算类型有求和 最大值 和最小值 可以设置统计数据放置在原始数据之前还是放置在后 第一类交叉表 投影交叉表 定义了第一类交叉的查询结果集行列结构是固定的 多用在固定格式的报表中 因此 其 小计合计也设计得稍有区别 在这种情况下 小计合计是根据表的行头来进行的 它根据 表行头所示的树状结构中树节点的级次来小计合计 所以 对于这类表 我们设置的是小 计开始级次和终止级次 而不是分组列 a 普通表 b 投影交叉表 图 4 20 小计合计设置界面 第 37 页 3 界面运行界面运行 对于已经格式设计完毕的界面模型 我们可以运行该界面来查看结果 3 1 界面初始化 我们发出运行某界面的命令后 在界面呈现出来之前 系统会做一系列的初始化工作 根 据界面模型引用的查询定义查询得到对应的结果集 由界面定义构造出界面 根据数据集 绑定属性将控件绑定到对应的结果集 当所有的初始化工作都完成以后 界面才呈现在我 们面前 图 4 21 查询参数设置界面 如果界面引用的查询定义里定义了查询参数 那么在初始化界面工作去后台查询结果集之 前 会要求我们输入查询参数 如当我们运行图 4 5 中定义的界面模型 它引用的查询如 图 4 2 所示 时 因为其引用的查询定义中 部门档案 是定义了参数的 所以系统会弹 出查询参数设置界面让我们输入查询参数 如图 4 21 所示 第 38 页 图 4 22 界面模型运行结果 承图 4 5 输入相应的查询参数 运行结果如图 4 22 所示 3 2 数据处理 界面模型在运行态提供了几种数据处理的功能 查找 排序 过滤 公式列 小计合计 交叉和穿透 其中 查找 排序 过滤和公式列是基于数据集的 这些操作对于所有绑定 到被操作数据集的控件都是起作用的 放在数据处理菜单下 而小计合计 交叉和穿透是 基于表控件的 放在表控件表头右键菜单下 只对表控件本身的数据展现起作用 不影响 其他控件 查找 图 4 23 查找设置界面 选中要进行查找的数据集 以及要查找的字段 输入查找值就可以进行查找 如果数据集 中存在符合查找条件的记录 数据集会滚动到这一条记录 同时在界面控件上体现出来 排序 图 4 24 排序设置界面 选中要进行排序的数据集 选择排序列及升降序 可以对数据集进行排序 相当于 Order By 过滤 过滤设置分两种类型 叠加过滤和重新过滤 叠加过滤是在前过滤结果的基础上再按指定 第 39 页 条件进行过滤得到新的结果 而重新过滤则是去掉了之前设置的过滤条件 在原始结果集 的基础上按指定条件过滤得到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论