我正在尝试创建基于多项目数据库的表单。 当我打开它时,它总是会被一个记录填充。 我想要它的功能,它将填充新创建记录的所有字段,与第一个(从DB中选择)记录相同。只需从第一条记录中复制它们即可。
我正在尝试使用WHEN-NEW-ITEM-INSTANCE触发器和“:system.record_status IN('NEW','INSERT')”条件,但我不知道,如何告诉Forms,我从我的第一张唱片中获得价值。 我的意思是,
IF :system.record_status IN ('NEW','INSERT')
THEN
:block.item := <<here goes pointer to my first record of that item>>
END IF;
那么,我如何从特定项目实例中获取价值?
提前致谢。
答案 0 :(得分:2)
创建一个虚拟块,一个对用户不可见的块。使用默认记录填充它作为WHEN-NEW-FORM-INSTANCE触发器的一部分。
然后在实际的数据块中,您可以引用虚拟块中的项目来预先填充项目。我可能会选择使用更高级别的触发器,例如WHEN-CREATE-RECORD,而不是拥有一群WHEN-NEW-ITEM-INSTANCE触发器,但这取决于你的设计的其余部分如何挂起。
“这是一个粗糙的解决方案”
抱歉,我没有意识到您正在向用户显示默认记录。但是,据我所知,Forms没有任何机制来引用当前记录以外的记录(完全披露:我实际上没有使用过一段时间的形式而我无法测试这是否仍然是案件)。
你能做的是:
First_Record;
Duplicate_Record;
这也有缺点,因为用户可能会发现导航跳转令人困惑。
答案 1 :(得分:0)
APC的解决方案应该有效,只需一次修改:
First_Record;
Create_Record;
Duplicate_Record;
Duplicate_Record始终将先前记录复制到当前记录,而不一定复制到新记录。显然,Create_Record将为您创建新记录。