How to filter records between two dates using QueryBuildDataSource

There are two date type FormControls to enter start and end dates.

The request is to filter GridControl.TransDate between the two dates when values are entered for the start and end dates.

Current Code
public void executeQuery()
{
Query query;
QueryBuildDataSource qbds;
QueryBuildRange qbr;

        date startDate, endDate;
        startDate = StartDateControl.dateValue();
        endDate = EndDateControl.dateValue();

        if(startDate && endDate)
        {
            query = new Query();
            qbds = query.addDataSource(tableNum(ProvisionalSettlementTable));
            qbr = qbds.addRange(fieldNum(ProvisionalSettlementTable, TransDate));

            qbr.value(queryRange(startDate, endDate));
        }
        super();
    }

Thanks for your help.

I’m assuming that you want to add ranges to ProvisionalSettlementTable data source and you’ve overriden its executeQuery() method. The problem is that you don’t touch the query used by the data source; you create a completely new query and a data source, which has no impact on the form.

Use this.queryBuildDataSource() to get the existing data source instead of creating a new query and adding a new data source.

public void executeQuery()
{
    QueryBuildDataSource qbds = this.queryBuildDataSource();
    QueryBuildRange qbr = SysQuery::findOrCreateRange(qbds, fieldNum(ProvisionalSettlementTable, TransDate));
    qbr.value(queryRange(StartDateControl.dateValue(), EndDateControl.dateValue()));

    super();
}

Your original request has been met.
Thank you for showing us a new way of doing things.