Axapta 如何使用来自多个数据源的字段创建查找?
我需要在表单字段中创建动态查找,该字段应显示来自两个不同数据源的字段。。我尝试将其作为:Axapta 如何使用来自多个数据源的字段创建查找?,axapta,x++,dynamics-ax-2012,Axapta,X++,Dynamics Ax 2012,我需要在表单字段中创建动态查找,该字段应显示来自两个不同数据源的字段。。我尝试将其作为: public void lookup() { query = new Query(); sysTableLookup = SysTableLookup::newParameters(tableNum(smmBusRelTable), this); qbds = query.addDataSource(tablenum(smmBusRelTable)); // qbds.addD
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上创建一个display方法,从DirPartyTable(如果还不存在)获取名称,并将其用作查找中的字段。如果我没记错的话,主表上的显示方法是受支持的
根据你到底想完成什么,可能有一个更简单的方法。您可以将display方法添加到SmmBusRelTable的AutoLookup table字段组中,并避免重写lookup()方法。在一个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();
}
静态客户端无效lookupItemActive(FormStringControl\u ctrl)
{
SysTableLookup SysTableLookup=SysTableLookup::newParameters(tablenum(),_ctrl);
Query Query=新查询(queryStr());
addLookupfield(fieldnum(,ItemId));
sysTableLookup.addLookupfield(fieldNum(,Name));
addLookupfield(fieldNum(,ItemGroupId));
sysTableLookup.addLookupfield(fieldnum(,Status));
addLookupfield(fieldnum(,RevId));
addLookupfield(fieldnum(,ItemType));
sysTableLookup.parmQuery(查询);
sysTableLookup.performFormLookup();
}
此外,您还可以创建一个视图来连接smmBusRelTable
和DirPartyTable
(我认为已经存在了一个)。然后,SysTableLookup
可以使用该视图。