Vous pouvez utiliser "jointure externe" au lieu de " Retardé "puis modifiez le mode de jointure par programmation lorsqu'il y a une recherche de champs sur HRMVirtualNetworkTable.
Ajouter cette méthode à la classe SysQuery:
static void updateJoinMode(QueryBuildDataSource qds)
{
Counter r;
if (qds)
{
qds.joinMode(JoinMode::OuterJoin);
for (r = 1; r <= qds.rangeCount(); r++)
{
if (qds.range(r).value() && qds.range(r).status() == RangeStatus::Open)
{
qds.joinMode(JoinMode::InnerJoin);
break;
}
}
}
}
Dans le executeQuery() sur le EmplTable DataSource
public void executeQuery()
{;
SysQuery::updateJoinMode(this.queryRun() ? this.queryRun().query().dataSourceTable(tableNum(HRMVirtualNetworkTable)) : this.query().dataSourceTable(tableNum(HRMVirtualNetworkTable)));
super();
}
Parfois this.queryRun() return null Il faut donc utiliser this.query() au lieu.
Mise à jour:
Notez que ce qui précède n'est pas pertinent pour AX 2012 et plus tard, où vous pouvez utiliser des filtres de requête dans les jointures externes. Voir How to Use the QueryFilter Class with Outer Joins.