我有一个可编辑的对话框列表,用于choices
Use formula for choices
。它在视图上使用DbLookup
。
如果在@DbLookup
之后有3个值,第一个值是否已经设置为对话框列表的默认值?
感谢您的时间和帮助!
首先:为了优化性能并最小化查找,我会使用一个单独的字段来查找值(我们称之为ValueList,它可以为Display计算,必须允许多个值)。然后,作为对话框的公式,只需输入字段ValueList
的名称在对话框字段的默认值公式中输入:
@Subset( ValueList ; 1 );
如果您的ValueList如下所示:
SomeValue |1
AnotherValue |2
那么默认值中的公式看起来像:
@Word( @Subset( ValueList ; 1 ); "|" ; 2 )
如果您的查找依赖于表单中的另一个字段,并且可能会更改,那么"默认值"公式是不够的,因为它只在打开新文档的第一个文档上计算一次。然后你的输入验证-公式可能看起来像:
@If( @IsMember( @ThisValue; ValueList ); @ThisValue; @Subset( ValueList ; 1 ) )
这将确保,如果您的查找公式发生更改,并且当前值不再在可能更改的列表中,它将再次从(新)列表中选择第一个值。。。
当然,所有这些都需要一些"微调",但基本上应该可以解决您的问题。
您可以使用DBLookup为字段的默认值使用默认值公式。在这种情况下,将设置字段值,因此也将在对话框中选择该值。您可以使用@子集(@DbLookup(…);1)
也有类似的情况,我使用了带有@prompt和ProfileDocument的解决方案。
@Prompt([OkCancelList]:[NoSort];Title;Prompt;DefaultChoice;@GetProfileField(profilename;fieldname));
DefaultChoice必须是配置文件文档中的值。
这对我很有效,在对话框Form的PostOpen公式中,为字段设置默认字段值。例如,FormerFirstName是对话框表单上的另一个字段。
@SetField( "Firstname"; FormerFirstName );