Invantive Control 中用于控制查询结果的参数的替代方法

Alternative approach to parameters in Invantive Control to control query outcome

我想在 Invantive 控制中使用参数。

例如,我只想检索在给定数据参数中的 Exact 在线项目管理的小时数。

常用的方法有以下三种:

  1. 在模型编辑器中使用参数。
  2. 使用 Excel 个值。
  3. 使用相关数据库中的数据。

模型参数

要在模型编辑器中使用参数,请在模型编辑器中定义它们:

  • Select 唯一代码。
  • 可能提供一个默认值(总是字符串,使用 to_... 或强制转换在查询中更改它)。
  • 定义值列表以提供快速选择。

唯一代码通常全部为大写,格式为 P_...,但只要它是合法标识符,任何东西都应该有效。

要在一个或多个块查询或触发器中使用它们:

  • 使用积木按钮。
  • 或在 SQL 中键入 $P{CODE} 或触发 Excel。

可以使用参数按钮(控制功能区中的绿色漏斗)输入值:

请注意,参数始终作为参数绑定,而不是按字典顺序替换,因此您不能说:select * from $P{TABLE_NAME}

请注意参数可以相互依赖,因此在查询参数时可以使用另一个参数。比如先选择一个项目所在的国家,然后显示那个国家的项目列表。但要明智,避免递归和其他过于复杂的场景;用户不会轻易理解它。

Excel 值

要使用 Excel 值,您可以按如下方式定义它们:

  • 在 Excel 中的某处输入一个值。
  • 可选择定义命名范围,以便更轻松地更改位置。

您当然可以在 Excel 中像往常一样分配列表作为弹出窗口或其他验证。单元格锁定也可以正常工作。

要在 Invantive Control 的查询或触发器中使用实际值,您可以使用查询编辑器中的构建块或使用 select * from table where code = $X{projectcode}select * from table where code = $X{B2&C2&D2} 之类的东西。最后一个显示您还可以使用其他类型的 Excel 表达式。

注意Excel参数也作为参数绑定到查询中,但是它们也是typed,所以下面的查询可以根据一般的不同Excel 单元格的格式:

select *
from   table
where  code like $X{CELL}

当单元格为文本时,数据库或 Exact Online 在这种情况下将检索:

select *
from   table
where  code like :ex0

其中 ex0 是文本,例如“8%”。但是当单元格是百分比时,内容可能仍然在 Excel 中显示为 '8%',但实际查询将与结果相同:

select *
from   table
where  code like 0.08

让我有些头疼,但输入通常是一个有用的功能,尤其是日期。

参数使用数据库数据

选项 3 对于 Exact Online 实际上不可行,因为创建您自己的表 and/or 字段的可能性很小。

在 Oracle 等其他平台上,您可能希望在 Excel 中的 Invantive Control 中输入新行,然后它们同步上传以提供参数。在复杂风险模型的情况下特别方便。