D365FO – AX – Multiple tables join with Query AddLink syntax example

This example :

Query q = new query();
QueryRun qr;
QueryBuildDataSource qbds;
QueryBuildDataSource qbds2;
QueryBuildDataSource qbds3;
QueryBuildRange qbr;

qbds = q.addDataSource(tableNum(CustPackingSlipJour));
qbr = qbds.addRange(fieldnum(CustPackingSlipJour, StatusExportDDTRhiagERA));
qbr.value(QueryValue(NoYes::No));
qbr = qbds.addRange(fieldnum(CustPackingSlipJour, ReturnItemNum));
qbr.value(QueryValue(“”));

qbds3 = qbds.addDataSource(tableNum(EDIDocumentParametersERA));
qbds3.relations(false);
qbds3.joinMode(JoinMode::InnerJoin);
qbds3.fetchmode(QueryFetchMode::One2One);
qbds3.addLink(fieldnum(CustPackingSlipJour, OrderAccount),fieldnum(EDIDocumentParametersERA, CustAccount));

qbds2 = qbds.addDataSource(tableNum(InterfaceWMSParameterERA));
qbds2.relations(false);
qbds2.joinMode(JoinMode::InnerJoin);
qbds2.fetchmode(QueryFetchMode::One2One);
qbds2.addLink(fieldnum(CustPackingSlipJour, InventLocationId),fieldnum(InterfaceWMSParameterERA, IntInventLocationId));

 qr = new QueryRun(q);

  while (qr.next())

{

//Insert code here

}

Produces this SQL output:

SELECT *
FROM CustPackingSlipJour
WHERE (StatusExportDDTRhiagERA = 0 AND ReturnItemNum = ”)
JOIN EDIDocumentParametersERA
ON CustPackingSlipJour.OrderAccount = EDIDocumentParametersERA.CustAccount
JOIN InterfaceWMSParameterERA
ON CustPackingSlipJour.inventLocationId = InterfaceWMSParameterERA.IntInventLocationId

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s