Oracle Forms:某些行上的特定列没有在数据库中存储值?

时间:2016-11-01 17:00:05

标签: oracle forms builder

要求

以下是简化要求。最终目标是能够显示有关项目的数据,或使用保存的数据打印标签。该解决方案正在Oracle Forms Builder中创建

  • 属性定义表单
    • 旨在定义属性。
    • 属性配置详细信息存储在属性中 定义表
    • 属性可以手动输入 值,或SQL驱动
      • SQL示例:案例权重(使用项目的 案例UOM转换率乘以项目的单位权重)
      • 手动示例:项目颜色
    • 当SQL驱动时,select语句将保存在属性配置中
      • SQL中使用:INVENTORY_ITEM_ID之类的标记,并将替换为。{ SQL评估时表单的值。
  • 项目属性分配表单
    • 旨在将属性链接到项目
    • 表单包含分配给项目的属性列表
      • 将属性链接到项目的记录保存在 数据库
      • 记录存储属性ID,项目ID和属性 价值(如适用)
      • 列表应该在一个块中。
    • 表格 允许额外分配属性(首先定义) 形式)
    • 项目可以分配SQL和手动类型属性 他们。
      • 表单允许随时更新“手动”值 用户
      • 表单派生SQL值,在“值”字段中显示它们, 但应禁用值字段,以便用户无法编辑它。
    • 查询项目或分配新属性时
      • 应该派生/评估SQL值
      • 应拉动手动输入的值 来自表格“价值”栏目

问题

我们不希望表单将SQL派生值保存到表中。

有没有办法让某些行上的特定列不在数据库中存储值?这些行包含SQL派生值,这些值显示在禁用的值单元格中,并在查询项目或分配属性时派生。

1 个答案:

答案 0 :(得分:0)

这是可能的,但你真的应该为你的表格实现表处理程序,而不是依靠Oracle Forms来为你做DML。

通过“实现表处理程序”,我的意思是,将块的“DML Data Target Type”属性设置为“Use Transactional Triggers”。

然后,为您的块代码ON-INSERTON-UPDATE等触发器调用PL / SQL(从块中传入适当的值以插入,更新等)。

在PL / SQL中,您可以准确地将每列插入到您想要的位置,或者根本不插入列,这就是您在此处所做的。

如果您使用的是Oracle电子商务套件,请参阅 Oracle Applications Developer's Guide ,第10章(“在Oracle电子商务套件中使用PL / SQL:编码项目,事件”和表处理程序“)。