如何使用多个数据源中的字段创建查找?

Moh*_*han 3 x++ axapta dynamics-ax-2012

我需要在我的表单字段中创建动态查找,它应该显示来自两个不同数据源的字段.我正在尝试执行它:

  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();
}
Run Code Online (Sandbox Code Playgroud)

注释行是我试图添加不同数据源的操作.

小智 5

据我所知,SysTableLookup类不支持显示其他表中的字段.addLookup()方法不接受TableId,并假设所有字段都在查询的第一个数据源中.

您可以编写自己的SysTableLookup版本,该版本支持从各种表中引用字段.一种更简单,更实用(也更便宜)的方法可能是在SmmBusRelTable上创建一个显示方法,以从DirPartyTable中获取名称(如果它尚不存在),并将其用作查找中的字段.如果我没记错的话,支持主表上的显示方法.

根据您要完成的具体内容,可能会有更简单的方法.可以添加的显示方法的自动查阅表场组SmmBusRelTable的,并避免具有覆盖的查找()方法.

  • 此外,您可以创建一个加入`smmBusRelTable`和`DirPartyTable`的视图(我认为已经存在).然后`SysTableLookup`可以使用该视图. (3认同)