2011-05-18 41 views
3

我正在尝试创建基于多项目数据库的表单。 当我打开它时,它总是会被一条记录填充。 我想要它的功能,它将填充新创建记录的所有字段,与第一个(从数据库中选择)记录相同。只需从第一条记录中复制它们即可。我尝试使用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; 

所以,我怎样才能得到具体的项目实例值?

在此先感谢。

回答

2

创建一个对用户不可见的虚拟块。作为WHEN-NEW-FORM-INSTANCE触发器的一部分填充默认记录。

然后在您的实际数据块中,您可以引用虚拟块中的项目以预先填充项目。我可能会选择使用更高级别的触发器,例如WHEN-CREATE-RECORD,而不是拥有一组WHEN-NEW-ITEM-INSTANCE触发器,但这取决于设计的其余部分如何挂在一起。


“那粗解”

对不起,我没有意识到,你是显示默认的记录给用户。然而,据我所知,表单没有任何机制来引用除当前记录以外的记录(完全公开:我实际上没有实际使用过表单,而且我也没有权限测试它是否仍然是案件)。

你可以做的是:

First_Record; 
Duplicate_Record; 

这也有一个缺点,因为用户可能会发现导航跳转混乱。

+0

这是一个粗略的解决方案,我可以使用参数用于相同的目的。没有更多的选择? – CrazyDiamond 2011-05-18 11:11:16

+0

刚刚找到Duplicate_Record过程,谢谢。 它仍然没有解决问题:它将第一张唱片公布到第二张,总是(如果我们移动到第一张唱片之前),所以我们不能拥有第三张唱片。新纪录总是第二。 试了一段时间没有结果。 – CrazyDiamond 2011-05-18 13:56:51

0

APC的解决方案应该工作,一个修改:

First_Record;
Create_Record;
Duplicate_Record;

Duplicate_Record总是复制以前的记录当前记录,不一定是一个新的记录。显然,Create_Record会为您创建新记录。

相关问题