在d365中的runbasebatch类内调用查询

问题描述 投票:0回答:1

我创建了这样的查询:

enter image description here

现在,我想在我的runBaseBatch类中调用此查询:

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();

    }

}

我该怎么办?

axapta x++ dynamics-365-operations
1个回答
0
投票

要在x ++中使用/调用AOT查询,只需使用QueryRun类的构造函数。

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
    }
}

关于如何在派生的RunBaseBatch类中使用它,这将取决于您的特定要求,并且需要更多信息来回答。

© www.soinside.com 2019 - 2024. All rights reserved.