Skip to main content

Notifications

Community site session details

Community site session details

Session Id :
Finance | Project Operations, Human Resources, ...
Unanswered

Filters Not Updating Dynamically Based on Selected FromDate & ToDate in Report UI Builder

(0) ShareShare
ReportReport
Posted on by 233

Hello, I am working on a custom report UI in Dynamics 365 Finance & Operations that allows users to filter Sales Orders and Item Numbers based on a selected FromDate and ToDate.

 

However, after selecting FromDate and ToDate, the Sales Orders and Item Numbers lookups are not refreshing dynamically. Users still see all values instead of only those within the selected date range.

  • When a user changes FromDate or ToDate, the lookup values for Sales Orders and Item Numbers should update automatically.

  • The lookups should only show results within the selected date range.

I am using a UI Builder class (IS_CustomsUIBuilder) with lookup methods for filtering Sales Orders and Item Numbers.

 

I have tried:

✅ Using DialogField.registerOverrideMethod() to track modified() events for FromDate and ToDate.

✅ Re-registering the lookup method when dates change.

✅ Using SysLookupMultiSelectGrid::lookup() inside the lookup methods.

 

But the lookups are not updating dynamically when FromDate or ToDate is changed.

 

Controller Class:
class IS_CustomsController extends SrsReportRunController
{
    protected boolean isArabic;

    public boolean showPrintSettings()
    {
        return false;
    }

    public boolean showQueryValues(str parameterName)
    {
        return false;
    }

    protected void prePromptModifyContract()
    {
        IS_CustomContract contract = this.parmReportContract().parmRdpContract();
      //  this.processreportparamters(contract);
        contract.parmFromDate(DateNull());
        contract.parmToDate(DateNull());
        contract.parmMutliSelectSalesOrders(new List(Types::String));
        contract.parmAllCust(new List(Types::String));
        contract.parmMultiSelectItemNumbers(new List(Types::String));
        contract.parmPort('');
        contract.parmCountry('');
        contract.parmisArabic(NoYes::No);
    }

    protected void prerunmodifycontract()
    {
        #define.CustomsDS_isArabic('isArabic')
        boolean isArabicc;
        SrsReportDataContract datacontract = this.parmReportContract();
        IS_CustomContract contract = this.parmReportContract().parmRdpContract();
        isArabicc = contract.parmisArabic();

        if(isArabicc == Noyes::Yes)
        {
            this.parmReportContract().parmReportName(ssrsReportStr(IS_CustomsInvRep,ar));
        }
        else
        {
            this.parmReportContract().parmReportName(ssrsReportStr(IS_CustomsInvRep,en));
        }
    }

    //protected void processreportparamters(IS_CustomContract _contract)
    //{

    //    IS_CustomContract contract;
    //    IS_Salesline_Transport IS_Salesline_Transport;

    //    if(this.parmArgs().record().TableId==tableNum(IS_Salesline_Transport))
    //    {
    //        if(this.parmArgs()&&this.parmArgs().record())
    //        {
    //            contract = this.parmReportContract().parmRdpContract() as IS_CustomsContract();
    //            IS_Salesline_Transport = this.parmArgs().record();
    //        }
    //        //_contract.parmPrimaryCustomer(IS_Salesline_Transport.inventtransid);

    //    }
    //}

   public static void main(Args _args)
    {
        IS_CustomsController controller = new IS_CustomsController();
        controller.parmArgs(_args);
        controller.parmReportName(ssrsReportStr(IS_CustomsInvRep,en));
        controller.startOperation();
    }

}
 
 
UI Builder:
class IS_CustomsUIBuilder extends SysOperationAutomaticUIBuilder
{
    IS_CustomContract _contract;
    DialogField dialogItemID,dialogPort,dialogSO,dialogAllCust,dialogFromDate, dialogToDate;
    SysLookupMultiSelectGrid msCtrlCustNames, msCtrlSO, msCtrlItemId;
    

    public void build()
    {
        _contract = this.dataContractObject();
        //dialogItemID          = this.addDialogField(methodStr(IS_CustomContract, parmMultiSelectItemNumbers), _contract);
        //dialogSO              = this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders), _contract);
        //dialogFromDate        = this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders), _contract);
        //dialogToDate          = this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders), _contract);
    }

    public void postBuild()
    {
       // super();
        this.showallparameters();
        _contract = this.dataContractObject();
        //TransDate fromDate = _contract.parmFromDate();
        //TransDate toDate = _contract.parmToDate();
        //if(!fromDate || !toDate)
        //{
        //    throw error("Please specify From date and to Date before proceeding.");
        //}
        // dialogFromDate = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmFromDate));

        // dialogToDate = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmToDate));
        dialogItemID = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmMultiSelectItemNumbers));
        dialogItemID.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder,ItemidLookup), this);
        dialogPort = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmPort));
        dialogPort.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder,portLookup), this);
        dialogSO = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
        dialogSO.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder,SOLookup), this);
        dialogAllCust = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmAllCust));
        dialogAllCust.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder, allCustomersLookup), this);


    }

    public void postRun()
    {
        
        // this.dataContractObject().parmallCustomers('');
        //Query query = new Query();
        // QueryBuildDataSource qbdsCust = query.addDataSource(tableNum(CustTable));
        // qbdsCust.fields().addField(fieldNum(CustTable, AccountNum));
        // container selectedFields = [tableNum(CustTable), fieldNum(CustTable, AccountNum)];
        // SysLookupMultiSelectCtrl::constructWithQuery(this.dialog().dialogForm().formRun(), dialogAllCust.control(), query, false, selectedFields);
    }

    public void allCustomersLookup(FormStringControl _control)
    {
        TransDate fromDate = this.dataContractObject().parmFromDate();
        TransDate toDate = this.dataContractObject().parmToDate();

        Query query = new Query();

        QueryBuildDataSource qbdsTransport = query.addDataSource(tableNum(IS_Salesline_Transport));
        QueryBuildDataSource qbdsCustTable = qbdsTransport.addDataSource(tableNum(CustTable));
        qbdsCustTable.relations(true);
        qbdsCustTable.joinMode(JoinMode::InnerJoin);
        qbdsCustTable.addLink(fieldNum(CustTable, AccountNum), fieldNum(IS_Salesline_Transport, CustAccount));

       
        QueryBuildRange rangeETD = qbdsTransport.addRange(fieldNum(IS_Salesline_Transport, ETD));
        rangeETD.value(SysQuery::range(fromDate, toDate));

       
        qbdsTransport.fields().clearFieldList();
        qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, CustAccount)); 
        qbdsCustTable.addSelectionField(fieldNum(CustTable, Party)); 
        qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, ETD)); 
       

 
        SysLookupMultiSelectGrid::lookup(query,_control, _control, _control, conNull());
    }

    public void SOLookup(FormStringControl _control)
    {
        TransDate fromDate = _contract.parmFromDate();
        TransDate toDate = _contract.parmToDate();

        Query query = new Query();
        QueryBuildDataSource qbdsSales = query.addDataSource(tableNum(IS_Salesline_Transport));

        // ✅ Apply ETD date filter (Ensure Sales Orders are shown based on FromDate & ToDate)
        if (fromDate && toDate)
        {
            QueryBuildRange rangeETD = qbdsSales.findRange(fieldNum(IS_Salesline_Transport, ETD));
        
            if (!rangeETD)
            {
                rangeETD = qbdsSales.addRange(fieldNum(IS_Salesline_Transport, ETD));
            }

            if (!rangeETD.value())
            {
                rangeETD.value(SysQuery::range(fromDate, toDate));
            }
        }

        qbdsSales.fields().clearFieldList();
        qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, SalesId));
        qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));

        // ✅ Perform the lookup with the filtered query
        SysLookupMultiSelectGrid::lookup(query, _control, _control, _control, conNull());
    }


   public void ItemidLookup(FormStringControl _control)
{
    TransDate fromDate = this.dataContractObject().parmFromDate();
    TransDate toDate = this.dataContractObject().parmToDate();

        Query query = new Query();

       
        QueryBuildDataSource qbdsTransport = query.addDataSource(tableNum(IS_Salesline_Transport));

        
        QueryBuildRange rangeETD = qbdsTransport.addRange(fieldNum(IS_Salesline_Transport, ETD));
        rangeETD.value(SysQuery::range(fromDate, toDate));

        
        qbdsTransport.fields().clearFieldList();
        qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, ItemId));
        qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));
        qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, SalesId));

        
        SysLookupMultiSelectGrid::lookup(query,_control, _control, _control, conNull());
}

    public void portLookup(FormStringControl _formControl)
    {
        TransDate fromDate = this.dataContractObject().parmFromDate();
        TransDate toDate = this.dataContractObject().parmToDate();
        LogisticsAddressCountryRegionId selectedCountry = this.dataContractObject().parmCountry();

        Query query = new Query();
        QueryBuildDataSource qbds = query.addDataSource(tableNum(TMSHubMaster));

       
        qbds.fields().clearFieldList();
        qbds.addSelectionField(fieldNum(TMSHubMaster, HubMasterCode)); 
        qbds.addSelectionField(fieldNum(TMSHubMaster, Name)); 

    
        if (selectedCountry)
        {
            qbds.addRange(fieldNum(TMSHubMaster, Location)).value(queryValue(selectedCountry));
        }

        
        SysTableLookup sysLookup = SysTableLookup::newParameters(tableNum(TMSHubMaster), _formControl);
        sysLookup.parmQuery(query);
        sysLookup.addLookupfield(fieldNum(TMSHubMaster, HubMasterCode), true);
        sysLookup.addLookupfield(fieldNum(TMSHubMaster, Name), false);
        sysLookup.performFormLookup();
    }

    private void showallparameters()
    {
        
        this.addDialogField(methodStr(IS_CustomContract, parmFromDate));
        this.addDialogField(methodStr(IS_CustomContract, parmToDate));
        this.addDialogField(methodStr(IS_CustomContract, parmCountry));
        this.addDialogField(methodStr(IS_CustomContract, parmPort));
        this.addDialogField(methodStr(IS_CustomContract, parmPrimaryCustomer));
        this.addDialogField(methodStr(IS_CustomContract, parmAllCust));
        this.addDialogField(methodStr(IS_CustomContract, parmMultiSelectItemNumbers));
        this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
        this.addDialogField(methodStr(IS_CustomContract, parmisArabic));

    }

}
 
Categories:
  • Martin Dráb Profile Picture
    232,160 Most Valuable Professional on at
    Filters Not Updating Dynamically Based on Selected FromDate & ToDate in Report UI Builder
    No, most of isn't related to the problem. All your code creating the lookup is irrelevant if you have wrong input values. You'll never get the intended query if you have wrong FromDate value, therefore there is no point doing that. And your lookup can't give you the right result if he query is wrong, therefore testing is a waste of time. You need to forget the lookup for now and focus on the actual problem: why _contract.parmFromDate() returns an empty date. For example, maybe there is a bug in the method, or the value gets never set.
     
    By the way, I see you've reintroduced some useless code that I removed before. For example, there is no point calling findRange(), because you've just created the data source and therefore there can't be any range. Checking the value of a newly created range is equally uncessary.
  • ISDev Profile Picture
    233 on at
    Filters Not Updating Dynamically Based on Selected FromDate & ToDate in Report UI Builder
    Thanks MARTIN, i have removed the RDP Class.
    here is the minimal example demonstrating my problem
     
    class IS_CustomsUIBuilder extends SysOperationAutomaticUIBuilder
    {
        IS_CustomContract contract;
    
        public void postBuild()
        {
            contract = this.dataContractObject();
    
            DialogField dialogSO = this.bindInfo().getDialogField(contract, methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
            dialogSO.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(IS_CustomsUIBuilder, soLookup), this);
        }
    
        public void soLookup(FormStringControl _control)
        {
           TransDate fromDate = _contract.parmFromDate();
    TransDate toDate = _contract.parmToDate();
    
    Query query = new Query();
    QueryBuildDataSource qbdsSales = query.addDataSource(tableNum(IS_Salesline_Transport));
    
    
        QueryBuildRange rangeETD = qbdsSales.findRange(fieldNum(IS_Salesline_Transport, ETD));
    
        if (!rangeETD)
        {
            rangeETD = qbdsSales.addRange(fieldNum(IS_Salesline_Transport, ETD));
        }
    
        if (!rangeETD.value())
        {
            rangeETD.value(SysQuery::range(fromDate, toDate));
           
        }
    
    
    qbdsSales.fields().clearFieldList();
    qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, SalesId));
    qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));
    
    SysLookupMultiSelectGrid::lookup(query, _control, _control, _control, conNull());
        }
    }
  • Martin Dráb Profile Picture
    232,160 Most Valuable Professional on at
    Filters Not Updating Dynamically Based on Selected FromDate & ToDate in Report UI Builder
    Now we're making progress! Remember this lesson that debugging can give you cricial information about what happens in your code, so you don't have to blindly guess where the problem may be, you don't have to waste time analyzing irrelevant code and so on. Also, notice that it's you who needs to debug your code; asking in a forum can't replace. You didn't even know what question to ask when you forgot to collect basic information.

    So... now you know that the problem isn't about registerOverrideMethod(), the lookup, query ranges etc. and you can focus on the actual problem - why from data and to date in your contract is empty.
     
    Is this the correct minimal example demonstrating your problem?
    class IS_CustomsUIBuilder extends SysOperationAutomaticUIBuilder
    {
        IS_CustomContract contract;
    
        public void postBuild()
        {
            contract = this.dataContractObject();
    
            DialogField dialogSO = this.bindInfo().getDialogField(contract, methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
            dialogSO.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(IS_CustomsUIBuilder, soLookup), this);
        }
    
        public void soLookup(FormStringControl _control)
        {
            info(strFmt("FromDate: %1, contract.parmFromDate()));
        }
    }
    By the way, lease remove the irrelevant code from your question, so we don't need to keep scrolling through it.
  • ISDev Profile Picture
    233 on at
    Filters Not Updating Dynamically Based on Selected FromDate & ToDate in Report UI Builder
    Hi Martin, after debugging the values of fromdate and todate are showing as 01/01/1900 knowing that a value is selected in the parameter window
  • Martin Dráb Profile Picture
    232,160 Most Valuable Professional on at
    Filters Not Updating Dynamically Based on Selected FromDate & ToDate in Report UI Builder
    It's a pity that you haven't anwer any of my questions. Let's assume that your problem is solely in soLookup() and let's remove all irrelevant code that just obscure the problem.
    class IS_CustomsUIBuilder extends SysOperationAutomaticUIBuilder
    {
        IS_CustomContract contract;
    
        public void postBuild()
        {
            this.showAllParameters();
            
            contract = this.dataContractObject();
    
            DialogField dialogSO = this.bindInfo().getDialogField(contract, methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
            dialogSO.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder, soLookup), this);
        }
    
        public void soLookup(FormStringControl _control)
        {
            TransDate fromDate = contract.parmFromDate();
            TransDate toDate = contract.parmToDate();
    
            Query query = new Query();
            QueryBuildDataSource qbdsSales = query.addDataSource(tableNum(IS_Salesline_Transport));
    
            // ✅ Apply ETD date filter (Ensure Sales Orders are shown based on FromDate & ToDate)
            if (fromDate && toDate)
            {
                QueryBuildRange rangeETD = qbdsSales.addRange(fieldNum(IS_Salesline_Transport, ETD));
                rangeETD.value(SysQuery::range(fromDate, toDate));
            }
    
            qbdsSales.fields().clearFieldList();
            qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, SalesId));
            qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));
    
            // ✅ Perform the lookup with the filtered query
            SysLookupMultiSelectGrid::lookup(query, _control, _control, _control, conNull());
        }
    
        private void showAllParameters()
        {
            this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
        }
    }
    I don't think that your code in showAllParameters() does anything useful. You add a field, but you don't use it for anything. In postBuild(), you use the automatically created one instead. Let me remove that.
    class IS_CustomsUIBuilder extends SysOperationAutomaticUIBuilder
    {
        IS_CustomContract contract;
    
        public void postBuild()
        {
            contract = this.dataContractObject();
    
            DialogField dialogSO = this.bindInfo().getDialogField(contract, methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
            dialogSO.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder, soLookup), this);
        }
    
        public void soLookup(FormStringControl _control)
        {
            TransDate fromDate = contract.parmFromDate();
            TransDate toDate = contract.parmToDate();
    
            Query query = new Query();
            QueryBuildDataSource qbdsSales = query.addDataSource(tableNum(IS_Salesline_Transport));
    
            if (fromDate && toDate)
            {
                QueryBuildRange rangeETD = qbdsSales.addRange(fieldNum(IS_Salesline_Transport, ETD));
                rangeETD.value(SysQuery::range(fromDate, toDate));
            }
    
            qbdsSales.fields().clearFieldList();
            qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, SalesId));
            qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));
    
            SysLookupMultiSelectGrid::lookup(query, _control, _control, _control, conNull());
        }
    }
    Now please debug your code and tell us what you've found. For example, check if fromDate and toDate variables have the expected values.
  • ISDev Profile Picture
    233 on at
    Filters Not Updating Dynamically Based on Selected FromDate & ToDate in Report UI Builder
    Hi Martin,
     
    my bad, i pasted the wrong UI Builder class, i have updated the code now and please check it below
    class IS_CustomsUIBuilder extends SysOperationAutomaticUIBuilder
    {
        IS_CustomContract _contract;
        DialogField dialogItemID,dialogPort,dialogSO,dialogAllCust,dialogFromDate, dialogToDate;
        SysLookupMultiSelectGrid msCtrlCustNames, msCtrlSO, msCtrlItemId;
        
    
        public void build()
        {
            _contract = this.dataContractObject();
            //dialogItemID          = this.addDialogField(methodStr(IS_CustomContract, parmMultiSelectItemNumbers), _contract);
            //dialogSO              = this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders), _contract);
            //dialogFromDate        = this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders), _contract);
            //dialogToDate          = this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders), _contract);
        }
    
        public void postBuild()
        {
           // super();
            this.showallparameters();
            _contract = this.dataContractObject();
            //TransDate fromDate = _contract.parmFromDate();
            //TransDate toDate = _contract.parmToDate();
            //if(!fromDate || !toDate)
            //{
            //    throw error("Please specify From date and to Date before proceeding.");
            //}
            // dialogFromDate = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmFromDate));
    
            // dialogToDate = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmToDate));
            dialogItemID = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmMultiSelectItemNumbers));
            dialogItemID.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder,ItemidLookup), this);
            dialogPort = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmPort));
            dialogPort.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder,portLookup), this);
            dialogSO = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
            dialogSO.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder,SOLookup), this);
            dialogAllCust = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmAllCust));
            dialogAllCust.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder, allCustomersLookup), this);
    
    
        }
    
        public void postRun()
        {
            
            // this.dataContractObject().parmallCustomers('');
            //Query query = new Query();
            // QueryBuildDataSource qbdsCust = query.addDataSource(tableNum(CustTable));
            // qbdsCust.fields().addField(fieldNum(CustTable, AccountNum));
            // container selectedFields = [tableNum(CustTable), fieldNum(CustTable, AccountNum)];
            // SysLookupMultiSelectCtrl::constructWithQuery(this.dialog().dialogForm().formRun(), dialogAllCust.control(), query, false, selectedFields);
        }
    
        public void allCustomersLookup(FormStringControl _control)
        {
            TransDate fromDate = this.dataContractObject().parmFromDate();
            TransDate toDate = this.dataContractObject().parmToDate();
    
            Query query = new Query();
    
            QueryBuildDataSource qbdsTransport = query.addDataSource(tableNum(IS_Salesline_Transport));
            QueryBuildDataSource qbdsCustTable = qbdsTransport.addDataSource(tableNum(CustTable));
            qbdsCustTable.relations(true);
            qbdsCustTable.joinMode(JoinMode::InnerJoin);
            qbdsCustTable.addLink(fieldNum(CustTable, AccountNum), fieldNum(IS_Salesline_Transport, CustAccount));
    
           
            QueryBuildRange rangeETD = qbdsTransport.addRange(fieldNum(IS_Salesline_Transport, ETD));
            rangeETD.value(SysQuery::range(fromDate, toDate));
    
           
            qbdsTransport.fields().clearFieldList();
            qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, CustAccount)); 
            qbdsCustTable.addSelectionField(fieldNum(CustTable, Party)); 
            qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, ETD)); 
           
    
     
            SysLookupMultiSelectGrid::lookup(query,_control, _control, _control, conNull());
        }
    
        public void SOLookup(FormStringControl _control)
        {
            TransDate fromDate = _contract.parmFromDate();
            TransDate toDate = _contract.parmToDate();
    
            Query query = new Query();
            QueryBuildDataSource qbdsSales = query.addDataSource(tableNum(IS_Salesline_Transport));
    
            // ✅ Apply ETD date filter (Ensure Sales Orders are shown based on FromDate & ToDate)
            if (fromDate && toDate)
            {
                QueryBuildRange rangeETD = qbdsSales.findRange(fieldNum(IS_Salesline_Transport, ETD));
            
                if (!rangeETD)
                {
                    rangeETD = qbdsSales.addRange(fieldNum(IS_Salesline_Transport, ETD));
                }
    
                if (!rangeETD.value())
                {
                    rangeETD.value(SysQuery::range(fromDate, toDate));
                }
            }
    
            qbdsSales.fields().clearFieldList();
            qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, SalesId));
            qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));
    
            // ✅ Perform the lookup with the filtered query
            SysLookupMultiSelectGrid::lookup(query, _control, _control, _control, conNull());
        }
    
    
       public void ItemidLookup(FormStringControl _control)
    {
        TransDate fromDate = this.dataContractObject().parmFromDate();
        TransDate toDate = this.dataContractObject().parmToDate();
    
            Query query = new Query();
    
           
            QueryBuildDataSource qbdsTransport = query.addDataSource(tableNum(IS_Salesline_Transport));
    
            
            QueryBuildRange rangeETD = qbdsTransport.addRange(fieldNum(IS_Salesline_Transport, ETD));
            rangeETD.value(SysQuery::range(fromDate, toDate));
    
            
            qbdsTransport.fields().clearFieldList();
            qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, ItemId));
            qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));
            qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, SalesId));
    
            
            SysLookupMultiSelectGrid::lookup(query,_control, _control, _control, conNull());
    }
    
        public void portLookup(FormStringControl _formControl)
        {
            TransDate fromDate = this.dataContractObject().parmFromDate();
            TransDate toDate = this.dataContractObject().parmToDate();
            LogisticsAddressCountryRegionId selectedCountry = this.dataContractObject().parmCountry();
    
            Query query = new Query();
            QueryBuildDataSource qbds = query.addDataSource(tableNum(TMSHubMaster));
    
           
            qbds.fields().clearFieldList();
            qbds.addSelectionField(fieldNum(TMSHubMaster, HubMasterCode)); 
            qbds.addSelectionField(fieldNum(TMSHubMaster, Name)); 
    
        
            if (selectedCountry)
            {
                qbds.addRange(fieldNum(TMSHubMaster, Location)).value(queryValue(selectedCountry));
            }
    
            
            SysTableLookup sysLookup = SysTableLookup::newParameters(tableNum(TMSHubMaster), _formControl);
            sysLookup.parmQuery(query);
            sysLookup.addLookupfield(fieldNum(TMSHubMaster, HubMasterCode), true);
            sysLookup.addLookupfield(fieldNum(TMSHubMaster, Name), false);
            sysLookup.performFormLookup();
        }
    
        private void showallparameters()
        {
            
            this.addDialogField(methodStr(IS_CustomContract, parmFromDate));
            this.addDialogField(methodStr(IS_CustomContract, parmToDate));
            this.addDialogField(methodStr(IS_CustomContract, parmCountry));
            this.addDialogField(methodStr(IS_CustomContract, parmPort));
            this.addDialogField(methodStr(IS_CustomContract, parmPrimaryCustomer));
            this.addDialogField(methodStr(IS_CustomContract, parmAllCust));
            this.addDialogField(methodStr(IS_CustomContract, parmMultiSelectItemNumbers));
            this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
            this.addDialogField(methodStr(IS_CustomContract, parmisArabic));
    
        }
    
    }
     
  • Martin Dráb Profile Picture
    232,160 Most Valuable Professional on at
    Filters Not Updating Dynamically Based on Selected FromDate & ToDate in Report UI Builder
    Do I understand correctly that you have a problem with SOLookup() and most of the code you've shared (such as the whole IS_CustomsDP class) isn't really relevant to the problem?
     
    What have you found when you debugged your code? For example, does SOQuery() returns what you expect?

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

🌸 Community Spring Festival 2025 Challenge 🌸

WIN Power Platform Community Conference 2025 tickets!

Announcing Our 2025 Season 1 Super Users!

A new season of Super Users has arrived, and we are so grateful for the daily…

Kudos to the February Top 10 Community Stars!

Thanks for all your good work in the Community!

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 293,309 Super User 2025 Season 1

#2
Martin Dráb Profile Picture

Martin Dráb 232,160 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156 Moderator

Leaderboard

Product updates

Dynamics 365 release plans