在 d365 的 runbasebatch class 中调用查询
call a query inside a runbasebatch class in d365
我创建了一个这样的查询:
现在,我想在我的 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();
}
}
我该怎么做?
要use/call x++ 中的 AOT 查询,只需使用 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
}
}
至于如何在派生的 RunBaseBatch class 中使用它,这将取决于您的具体要求,需要更多信息来回答。
我创建了一个这样的查询:
现在,我想在我的 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();
}
}
我该怎么做?
要use/call x++ 中的 AOT 查询,只需使用 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
}
}
至于如何在派生的 RunBaseBatch class 中使用它,这将取决于您的具体要求,需要更多信息来回答。