【问题标题】:Custom lookup select issue自定义查找选择问题
【发布时间】:2014-03-10 12:05:08
【问题描述】:

我们的想法是使用唯一的雇主名称构建查找。 查找工作正常,但是当我选择一个值然后选择查找按钮时 再次点击RED标记的地方,有重复值,是错误的。

请参考sn-p和快照

QueryBuildDataSource    qbds;
Query                   query = new Query();
FormStringControl       control = dialog.formRun().controlCallingMethod();
SysTableLookup          sysTableLookup =  SysTableLookup::newParameters(tablenum(VendTable), control);
;

qbds  = query.addDataSource(tablenum(VendTable));
qbds.addGroupByField(fieldnum(VendTable,EmployerName));
sysTableLookup.addLookupfield(fieldnum(VendTable, EmployerName));

sysTableLookup.parmQuery(query);
sysTableLookup.parmUseLookupValue(false);
sysTableLookup.performFormLookup();

tion 这里]2

【问题讨论】:

  • 这不是重复的。单击上方红色区域标记的“员工姓名”时,我遇到了问题。

标签: lookup axapta dynamics-ax-2009


【解决方案1】:

在表VendTable 和字段EmployerName 上创建一个视图以及RecId 的计数,然后基于该视图进行查找。

如下图CustTableCustGroup

【讨论】:

  • 我已经创建了一个视图并在其中添加了字段qbds = query.addDataSource(tablenum(VendTableEmplViewLookup)); qbds.addGroupByField(fieldnum(VendTableEmplViewLookup,EmployerName)); sysTableLookup.addLookupfield(fieldnum(VendTableEmplViewLookup, EmployerName)); 但是当我单击查找 btn 时没有任何反应,调试我看到查询是正确构造的,即使在视图结果上运行作业正确。
  • 答案已更新。如果在视图中完成分组,则不需要qbds.addGroupByField
  • 太棒了!感谢您的及时.. VIEW 很好:) 解决了我的问题。但是对于我提出的线程,这可以被视为一种解决方案吗?因为它是一种解决方法...
  • 我们可能假设SysTableLookup 中存在错误,这既不是你的问题,也不是我的问题。因此,如果我解决了您的问题,请考虑接受答案。
【解决方案2】:

在这些情况下,我使用这种方法。与 Jan 提出的答案类似,但更简单。

创建一个 TMP 表,其中包含您希望在查找中看到的字段,包括 EmployerName,我将其命名为 MyTmpTable。好吧,实际上您可以将 VendTable 用作带有 setTmp() 的 tmp 表,但是它很容易出错(如果您之前 insert() 并忘记了 setTmp() 怎么办?)并且它有很多字段(更多的 RAM 消耗,即使它们'重新为空);所以我宁愿创建一个新的 TMPTable。

现在在 VendTable 中使用了这个查找方法:

static voidlookup_EmployerName(FormControl _callingControl)
{
    VendTable       vendTable;
    MyTmpTable      tmpTable;
    SysTableLookup  sysTableLookup;
    ;
    while select EmployerName from vendTable
        group by EmployerName
    {
        tmpTable.EmployerName = vendTable.EmployerName;
        tmpTable.insert();
    }        

    sysTableLookup = SysTableLookup::newParameters(tableNum(MyTmpTable),_callingControl);
    sysTableLookup.addLookupField(fieldNum(MyTmpTable, EmployerName),true);
    sysTableLookup.addLookupMethod(tableMethodStr(MyTmpTable, yourMethod));
    sysTableLookup.addLookupField(fieldNum(MyTmpTable, otherfieldtosee),false);
    //More field/methods...
    sysTableLookup.parmTmpBuffer(tmpTable);
    sysTableLookup.performFormLookup();
}

现在您可以随意使用此查找。 While Select 可以重写以获得性能,但在这里使用它是为了更清晰。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 2014-09-26
    • 2016-08-10
    • 1970-01-01
    • 2010-11-30
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多