OiRc
OiRc

Reputation: 1622

call a query inside a runbasebatch class in d365

I created a query like this:

enter image description here

now, i want to call this query inside my runBaseBatch class:

class Exercise_RunbaseBatch extends RunBaseBatch
{

    private void customerLookup(FormStringControl _control)
    {
        SysTableLookup sysTableLookUp;
        QueryBuildDataSource qbds;
        Query query = new Query();

        qbds = query.addDataSource(tableNum(CustTable));

        sysTableLookUp = SysTableLookup::newParameters(tableNum(CustTable), _control, true);

        sysTableLookUp.addLookupfield(fieldNum(CustTable, AccountNum));

        sysTableLookUp.parmQuery(query);
        sysTableLookUp.performFormLookup();
    }

    public Object dialog()
    {

        DialogRunbase dialog = super();
        DialogRunBase dialogLookUP = super();
        FormBuildStringControl control;

        DialogField dialogField = new DialogField(dialog);
        DialogField dialogFieldLookUp = new DialogField(dialog);

        dialogFieldLookUp = dialog.addField(extendedTypeStr(AccountNum));
        control = dialogFieldLookUp.control();

        dialogField = dialog.addField(extendedTypeStr(LogisticsAddressCountryRegionId));
        control.registerOverrideMethod(methodStr(FormStringControl, lookUp),methodstr(Exercise_RunbaseBatch, customerLookup),this);

         return dialog;
    }

    public boolean runsImpersonated()

    {

        return true;

    }

    public boolean showQueryValues()

    {

        return true;

    }

    public static   Exercise_RunbaseBatch construct()

    {

        return new Exercise_RunbaseBatch();

    }

    public boolean canGoBatch()

    {

        return true;

    }

    public static void main(Args args)

    {

       Exercise_RunbaseBatch runBaseDemo = Exercise_RunbaseBatch::construct();

        runBaseDemo.getLast();

        if(runBaseDemo.prompt())

        runBaseDemo.run();

    }

    public void run()

    {

        super();

    }

}

How i can do it?

Upvotes: 1

Views: 3280

Answers (1)

rjv
rjv

Reputation: 1090

To use/call an AOT query in x++, simply use the constructor of the QueryRun class.

public void run()
{
    QueryRun queryRun = new QueryRun(queryStr(AssetBalances));

    while (queryRun.next())
    {
        AssetGroup assetGroup = queryRun.get(tableNum(AssetGroup));

        //table(s) assetGroup and others as a single record result set
    }
}

As far as how to use it in your derived RunBaseBatch class, that will depend on your specific requirement and needs more information to answer.

Upvotes: 3

Related Questions