如何使用 X++ 过滤我的记录以在 D365 FO 处显示主表中的所有记录?

问题描述

我需要使用 onlookup 事件根据表单中的另一个表过滤我的数据。 我有 inventsite 表单和 2 个表,其中有 1:N 关系。其中之一是 SitePI,另一个是 PITrans。

这里是场景:我转到 InventSite 表单并添加一个名为 test 的站点,然后转到 SitePI 表(它在快速选项卡中)我添加了记录(001、004、005),我添加了另一个名为 test2 的站点并为其 SitePI 添加记录 003,006,007。最后,我转到 PITrans 表(它在另一个快速选项卡中),当我按下下拉菜单时,我需要能够选择属于 SitePI 表的记录作为查找。

但我只能看到选中的记录。

Image of my tables and issue

选择记录时需要看到 001、004 和 005。

这是我的代码(PICode 是我查找表的 RefRecId)

[FormControlEventHandler(formControlStr(InventSite,PITrans_PICode),FormControlEventType::Lookup)]
public static void PITrans_PICode_OnLookup(FormControl sender,FormControlEventArgs e)
{
    SysReferenceTableLookup tableLookup = SysReferenceTableLookup::newParameters(tableNum(SitePI),sender);
    Query query = new Query();

    SitePI sitePI = sender.formRun().dataSource('SitePI').cursor();
    InventSite inventSite = sender.formRun().dataSource('InventSite').cursor();

    QueryBuildDataSource qbds = query.addDataSource(tableNum(SitePI));
    
    qbds.addRange(fieldNum(SitePI,PICode)).value(queryValue(sitePI.PICode));
   

    query.dataSourceTable(tableNum(SitePI)).addOrderByField(fieldNum(SitePI,PICode),SortOrder::Ascending);

    tableLookup.addLookupField(fieldNum(SitePI,PICode));
    
    tableLookup.parmQuery(query);
    tableLookup.performFormlookup();

    FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
    ce.CancelSuperCall();

如果有人能帮助我,我将不胜感激。

问候

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...