如何在报告中获得静态范围 [英] how to get static range in your report

查看:89
本文介绍了如何在报告中获得静态范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在AX报告中,用户可以选择不同的范围.我试图证明在报表本身中用于过滤用户的条件甚至是

表达式"parameter!CustomerAccount.Value"不起作用,因为此过滤器不是静态参数.

用户可以使用查询中的任何表以及该表中的任何字段以及任何条件.

解决方案

此方法效果很好^ _ ^

(((我使用privet而不是static))

    static void getQueryRanges2(Args _args)
{
 Query query;
 QueryRun queryRun;
 QueryBuildDataSource qbd;
 QueryBuildRange range;
 QueryFilter filter;
 int cnt, filtercnt, i,j, k;
 DictTable dictTable;
 DictField dictField;
 str fieldLabel;
 ;
 query = new query(queryStr(smmSalesCustItemStatistics));
 queryRun = new QueryRun(query);
 queryRun.prompt();
 query = queryRun.query();  for(i = 1; i <= query.dataSourceCount(); i++)
 {
    cnt = query.dataSourceNo(i).rangeCount();
    filtercnt = 0;
    if(!query.dataSourceNo(i).embedded())
    {
        filtercnt = query.queryFilterCount(query.dataSourceNo(i));
    }
    dictTable = new DictTable(query.dataSourceNo(i).table());
    for (k=1; k<= filtercnt; k++)
    {
        filter = query.queryFilter(k, query.dataSourceNo(i));
        dictField = new DictField(query.dataSourceNo(i).table(), fieldname2id(query.dataSourceNo(i).table(), filter.field()));
        info (strFmt("%1, %2. Range = %3", dictTable.label(), dictField.label(), filter.value()));
    }
    for (j=1; j<=cnt; j++)
    {
        range = queryRun.query().dataSourceNo(i).range(j);
        dictField = new DictField(query.dataSourceNo(i).table(), fieldname2id( query.dataSourceNo(i).table(), range.AOTname()));
        if(range.value())
        {
            info(strfmt("%1, %2. Range = %3",dictTable.label(), dictField.label(), range.value()));
        }
    }
 }
}

享受:)

In AX Report the User can select different Range. I seek to show that the criteria used to filter user in the report itself even

the expression "parameter!CustomerAccount.Value" don't work because this filter is not a static parameter.

the user can use any table from the query and any field from the table and any criteria.. I'm locking for trick to get for which table, which field and what criteria it uses.

解决方案

this method work very well ^_^

(( I use it privet and not static ))

    static void getQueryRanges2(Args _args)
{
 Query query;
 QueryRun queryRun;
 QueryBuildDataSource qbd;
 QueryBuildRange range;
 QueryFilter filter;
 int cnt, filtercnt, i,j, k;
 DictTable dictTable;
 DictField dictField;
 str fieldLabel;
 ;
 query = new query(queryStr(smmSalesCustItemStatistics));
 queryRun = new QueryRun(query);
 queryRun.prompt();
 query = queryRun.query();  for(i = 1; i <= query.dataSourceCount(); i++)
 {
    cnt = query.dataSourceNo(i).rangeCount();
    filtercnt = 0;
    if(!query.dataSourceNo(i).embedded())
    {
        filtercnt = query.queryFilterCount(query.dataSourceNo(i));
    }
    dictTable = new DictTable(query.dataSourceNo(i).table());
    for (k=1; k<= filtercnt; k++)
    {
        filter = query.queryFilter(k, query.dataSourceNo(i));
        dictField = new DictField(query.dataSourceNo(i).table(), fieldname2id(query.dataSourceNo(i).table(), filter.field()));
        info (strFmt("%1, %2. Range = %3", dictTable.label(), dictField.label(), filter.value()));
    }
    for (j=1; j<=cnt; j++)
    {
        range = queryRun.query().dataSourceNo(i).range(j);
        dictField = new DictField(query.dataSourceNo(i).table(), fieldname2id( query.dataSourceNo(i).table(), range.AOTname()));
        if(range.value())
        {
            info(strfmt("%1, %2. Range = %3",dictTable.label(), dictField.label(), range.value()));
        }
    }
 }
}

enjoy :)

这篇关于如何在报告中获得静态范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆