Add Group By Field in Code Using X++
AX 2012 Example of Adding Grouping on DataSource fields using X++:
***********************************************************************************
element.inventDimSetupObject().modifyQueryWithBatch(inventSum_DS,inventDim_DS,inventBatch_ds);
***********************************************************************************
X++ Code:
/// <summary>
/// Adds grouping and summing fields for the data sources specified.
/// </summary>
/// <param name="_inventSum_DS">
/// The data source for the <c>InventSum</c> table.
/// </param>
/// <param name="_inventDim_DS">
/// The data source for the <c>InventDim</c> table.
/// </param>
/// <param name="_inventBatch_DS">
/// The data source for the <c>InventBatch</c> table.
/// </param>
public void modifyQueryWithBatch(
FormDataSource _inventSum_DS,
FormDataSource _inventDim_DS,
FormDataSource _inventBatch_DS)
{
Query query = _inventDim_DS.query();
QueryBuildDataSource qbsBatch;
QueryBuildRange criteriaItemId;
if (!callingElement || !callingElement.args())
{
return;
}
this.modifyQuery(_inventSum_DS, _inventDim_DS);
qbsBatch = query.dataSourceName(_inventBatch_DS.name());
qbsBatch.addGroupByField(fieldNum(InventBatch, ItemId));
qbsBatch.addGroupByField(fieldNum(InventBatch, InventBatchId));
qbsBatch.addGroupByField(fieldNum(InventBatch, ProdDate));
qbsBatch.addGroupByField(fieldNum(InventBatch, PdsBestBeforeDate));
qbsBatch.addGroupByField(fieldNum(InventBatch, PdsShelfAdviceDate));
qbsBatch.addGroupByField(fieldNum(InventBatch, ExpDate));
qbsBatch.addGroupByField(fieldNum(InventBatch, PdsDispositionCode));
if (query.orderByFieldCount() == 0)
{
criteriaItemId = qbsBatch.findRange(fieldNum(InventBatch, ItemId));
if (!criteriaItemId || criteriaItemId.value() == '')
{
// If no other sorting then add some default sorting
qbsBatch.addOrderByField(fieldNum(InventBatch,ItemId));
}
}
}
***********************************************************************************
element.inventDimSetupObject().modifyQueryWithBatch(inventSum_DS,inventDim_DS,inventBatch_ds);
***********************************************************************************
X++ Code:
/// <summary>
/// Adds grouping and summing fields for the data sources specified.
/// </summary>
/// <param name="_inventSum_DS">
/// The data source for the <c>InventSum</c> table.
/// </param>
/// <param name="_inventDim_DS">
/// The data source for the <c>InventDim</c> table.
/// </param>
/// <param name="_inventBatch_DS">
/// The data source for the <c>InventBatch</c> table.
/// </param>
public void modifyQueryWithBatch(
FormDataSource _inventSum_DS,
FormDataSource _inventDim_DS,
FormDataSource _inventBatch_DS)
{
Query query = _inventDim_DS.query();
QueryBuildDataSource qbsBatch;
QueryBuildRange criteriaItemId;
if (!callingElement || !callingElement.args())
{
return;
}
this.modifyQuery(_inventSum_DS, _inventDim_DS);
qbsBatch = query.dataSourceName(_inventBatch_DS.name());
qbsBatch.addGroupByField(fieldNum(InventBatch, ItemId));
qbsBatch.addGroupByField(fieldNum(InventBatch, InventBatchId));
qbsBatch.addGroupByField(fieldNum(InventBatch, ProdDate));
qbsBatch.addGroupByField(fieldNum(InventBatch, PdsBestBeforeDate));
qbsBatch.addGroupByField(fieldNum(InventBatch, PdsShelfAdviceDate));
qbsBatch.addGroupByField(fieldNum(InventBatch, ExpDate));
qbsBatch.addGroupByField(fieldNum(InventBatch, PdsDispositionCode));
if (query.orderByFieldCount() == 0)
{
criteriaItemId = qbsBatch.findRange(fieldNum(InventBatch, ItemId));
if (!criteriaItemId || criteriaItemId.value() == '')
{
// If no other sorting then add some default sorting
qbsBatch.addOrderByField(fieldNum(InventBatch,ItemId));
}
}
}
Comments
Post a Comment