DAXSPOT

Showing posts with label Adhoc query. Show all posts
Showing posts with label Adhoc query. Show all posts

Friday, October 9, 2020

Pass a range of enum value - X++ Code

Hi,

Today i will be sharing the code to pass the range of a enum value while working in x++ query or adhoc query.

SalesTable_ds.query().dataSourceTable(tableNum(SalesTable)).addRange(fieldnum(SalesTable,SalesStatus)).value(sysquery::value(SalesTable::Invoiced));

Wednesday, March 18, 2020

Passing ranges as per selection in form, using execute query - X++

Hi,

This post will show you yo filter the values as per user selection in the form.

Assume a form has two controls such as,

1."sales status" - this will filter as per status of Sales Order.

2."creator" -  this will filter Sales Order as per the current user.

Below code will get the value from the form control and filter as such:

public void executeQuery()
{
;
SalesTable_ds.query().dataSourceTable(tableNum(SalesTable)).clearRanges();
if(statusFilter.valueStr() == enum2str(SalesStatus::Backorder))
{  SalesTable_ds.query().dataSourceTable(tableNum(SalesTable)).addRange(fieldnum(SalesTable,SalesStatus)).value(sysquery::value(SalesStatus::Backorder));
}
else if(statusFilter.valueStr() == enum2str(SalesStatus::Delivered))
{   SalesTable_ds.query().dataSourceTable(tableNum(SalesTable)).addRange(fieldnum(SalesTable,SalesStatus)).value(sysquery::value(SalesStatus::Delivered));
}
else if(statusFilter.valueStr() == enum2str(SalesStatus::Invoiced))
{
SalesTable_ds.query().dataSourceTable(tableNum(SalesTable)).addRange(fieldnum(SalesTable,SalesStatus)).value(sysquery::value(SalesStatus::Invoiced));
}

if(CreatorFilter.value() == true)
{
SalesTable_ds.query().dataSourceTable(tableNum(SalesTable)).addRange(fieldnum(SalesTable,CreatedBy)).value(sysquery::value(curUserId()));
}
    super();
}

Tuesday, May 21, 2019

Lookup in form string control

Hi,
Below is an example of the lookup in form string control.
First Go to the string control and override the lookup method, then copy the below code. Change the code as per your requirement.
public void lookup()
{
    Query query;
    QueryBuildDataSource datasourceModule;
    QueryBuildDataSource datasourceLanguage;
    QueryBuildRange rangeElementType;
    QueryBuildRange rangeModuleId;
    SysTableLookup sysTableLookup;
 
    query = new Query();
//Add table in Query build datasource
    datasourceLanguage = query.addDataSource(tableNum(SalesTable));
//pass a range, here i need salesOrder with Backorder status only   
    datasourceLanguage.addRange(
        fieldNum(SalesTable, SalesStatus)).value(queryValue(SalesStatus::BackOrder));
//add the lookup table
    sysTableLookup = SysTableLookup::newParameters(tableNum(SalesTable), this);

//Add which field to show in lookup
    sysTableLookup.addLookupfield(fieldNum(SalesTable, SalesId));

//add the above build query to the lookup Query
    sysTableLookup.parmQuery(query);

//at last perform the lookup.
    sysTableLookup.performFormLookup();

}

Wednesday, May 15, 2019

Get terminated employees or worker from payroll module - X++ Code

Hi,

Today i got a scenario while working in payroll module, to get the terminated workers only using x++ query or adhoc query.

Below code helped me to achieve the requirement.

subQuery       =   new Query();
qbdsEmployment = subQuery.addDataSource(tableNum(HcmWorker));
qbdsEmployment.addSelectionField(fieldNum(HcmWorker, PersonnelNumber));
qbdsEmployment = qbdsEmployment.addDataSource(tableNum(HcmEmployment));
qbdsEmployment.joinMode(JoinMode::InnerJoin);
qbdsEmployment.relations(true);
qbdsEmployment.addLink(fieldNum(HcmEmployment,Worker),fieldNum(HcmWorker,RecId));
//workerRange  =   qbdsEmployment.addRange(fieldNum(HcmEmployment, Worker));
validFromRange = qbdsEmployment.addRange(fieldNum(HcmEmployment, ValidFrom));
validToRange   = qbdsEmployment.addRange(fieldNum(HcmEmployment, ValidTo));
subQuery.validTimeStateDateTimeRange(DateTimeUtil::minValue(), DateTimeUtil::utcNow());
validFromRange.value(SysQuery::valueUnlimited());
validToRange.value(SysQueryRangeUtil::lessThanUtcNow());
qbdsEmployment.addSelectionField(fieldNum(HcmEmployment,Worker));
qbdsEmployment.addSelectionField(fieldNum(HcmEmployment,ValidFrom));
qbdsEmployment.addSelectionField(fieldNum(HcmEmployment,ValidTo));

How to execute SQL directly form Dynamics AX X++

How to execute Sql directly form Dynamics AX X++ Reference by : alirazazaidi Dynamics Ax provide many other ways to communicate with databas...