在表单上将记录复制为新记录

Copy a record as new on form

我有一个带表格的 IR,我想通过新的 COPY 按钮创建一条新记录作为已编辑记录的副本。

我将此按钮的行为设置为重定向到同一页面并将所有需要的字段设置为与原始相同(f.e。:P7_SUBJECT 到 &P7_SUBJECT . 等)。

此表单上有一些 LOV。一些基于 LOV 的字段设置正确,但其他字段设置不正确(它们获得 LOV 的第一个值)。我不明白为什么,以及如何为它们设置正确的值。

如果“IG”的意思是“交互式网格”,那么我建议您使用 Apex 已经提供的功能(而不是重新发明轮子):

  • select Interactive Grid 的专栏(一个接一个,或者一次全部)

  • 导航到屏幕右侧的属性

  • 向下滚动到“默认”部分

  • 设置Duplicate 复制现有值 属性 ON

    • 帮助说:

    Specify whether the column should be defaulted to the existing column value when duplicating the record.

  • 最后,运行 页面和


[编辑] 交互式报表不完全是交互式网格...

无论如何,另一个建议:

  • 您有一份交互式报告

  • 每一行的开头都有“编辑”图标 - 它允许您通过重定向到表单来编辑当前值 - 使用它

  • 修改表单页面添加“复制”按钮

    • 这就是你在问题中所说的吗?
  • 创建一个页面进程,它将执行复制操作

  • 怎么样?有主键列,我们称它为P7_ID;假设它被设置为某个序列的值。那么你

    insert into the_table (id, name, subject)
      select seq.nextval, name, subject
      from the_table
      where id = :P7_ID;
    

    换句话说,复制存在于数据库中并由P7_ID标识的行。该选项不会受到任何屏幕值问题

    的影响

这里是如何打开复制的记录而不先将数据保存到数据库。示例包含示例 emp/dept 数据的表格和报告(交互式报告)。第4页是报告,第5页是表格。

  • 在第 5 页添加一个新的隐藏项目P5_COPY_FROM
  • 在第 4 页向链接到第 5 页的报告添加一个“复制”列,并将 P5_COPY_FROM 设置为列值 #EMPNO#
  • 在第 5 页添加一个流程 类型为“执行代码”的流程“Initialize Form Employee”之前
:P5_EMPNO := :P5_COPY_FROM;
  • 在第 5 页添加一个流程 类型为“执行代码”的流程“Initialize Form Employee”之后
:P5_EMPNO := NULL;

这将导致表单初始化为您要从中复制的行,但由于主键值重置为 NULL,因此将在保存时创建新记录。