我需要在我的表单字段应该从两个不同的数据源显示字段来创建动态查找..我试图执行它:
public void lookup()
{
query = new Query();
sysTableLookup = SysTableLookup::newParameters(tableNum(smmBusRelTable), this);
qbds = query.addDataSource(tablenum(smmBusRelTable));
// qbds.addDataSource(tableNum(DirPartyTable));
//qbds.relations(true);
sysTableLookup.parmQuery(query);
sysTableLookup.addLookupField(fieldNum(smmBusRelTable, Busrelaccount));
//sysTableLookup.addLookupfield(fieldNum(DirPartyTable, Name));
sysTableLookup.performFormLookup();
}
注释行是我试图执行添加不同数据源的操作。
据我所知SysTableLookup类不支持从其它表显示的字段。 所述addLookup()方法并不需要一个TABLEID并假定所有字段都在查询的第一数据源。
你可以写你自己的支持从各种表引用字段SysTableLookup的版本。 一种更简单,更实用(更便宜)的办法可能是创建SmmBusRelTable的显示方法从DirPartyTable取名字(如果没有已经存在),并使用它作为在查找的字段。 如果我没有记错的主表的显示方法的支持。
这取决于你想完成什么有可能是一个更简单的方法。 可以添加的显示方法的自动查阅表场组SmmBusRelTable的,并避免具有覆盖的查找()方法。
它实际上是很容易的多个数据源中sysTableLookup结合起来。 这里是我曾经是能够从对名称进行过滤的伎俩EcoResProductTranslation
在查找物品。
1)创建,结合了所有的数据源视图,并添加你想在你的查找到视图查看的字段。
2)创建从在步骤1中创建的视图的查询。
3)使用这些如下执行您的查找...
static client void lookupItemActive(FormStringControl _ctrl)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(<ViewName>),_ctrl);
Query query = new Query(queryStr(<QueryName>));
sysTableLookup.addLookupfield(fieldnum(<ViewName>, ItemId));
sysTableLookup.addLookupfield(fieldNum(<ViewName>, Name));
sysTableLookup.addLookupfield(fieldNum(<ViewName>, ItemGroupId));
sysTableLookup.addLookupfield(fieldnum(<ViewName>, Status));
sysTableLookup.addLookupfield(fieldnum(<ViewName>, RevId));
sysTableLookup.addLookupfield(fieldnum(<ViewName>, ItemType));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}