如何从查询窗口中识别高级查询或动态连接?

时间:2014-11-15 16:22:16

标签: axapta x++ dynamics-ax-2012 dynamics-ax-2012-r2

在弹出的查询窗口中,如果用户右键单击并选择" 1:n"并选择一个表,如何检测和使用该表?我有一份很好的样本工作和截图,可以展示我想要完成的工作。

我编写了这个示例作业,它转储了AOT查询对象,但没有转储动态连接的表/范围/值。

static void InventSumQuery(Args _args)
{
    Query               query = new Query(queryStr(InventDimPhys));
    QueryRun            qr = new QueryRun(query);
    QueryBuildRange     queryRange;

    DictField           dictField;

    int i, n;


    if(qr.prompt())
    {
        for (n=1; n<=query.dataSourceCount(); n++)
        {            
            for (i=1; i<=query.dataSourceNo(n).rangeCount(); i++)
            {
                queryRange = query.dataSourceNo(n).range(i);

                dictField = new dictField(query.dataSourceNo(n).table(), fieldName2id(query.dataSourceNo(n).table(), queryRange.AOTname()));

                info(strFmt("%1.%2", tableId2name(dictField.tableid()), dictField.name()));
            }
        }
    }

    info("Done");
}

Screen1

Screen2

Screen3

1 个答案:

答案 0 :(得分:3)

当然,我想出了自己的答案。查询对象是静态的,查询表单实际上只是在您进行更改时修改查询。

所以你需要将上面的代码修改为:

if(qr.prompt())
{
    query = qr.query();

这将获得修改后的查询。高级查询实际上只是表单本身的一个函数,最终会修改查询。