Search code examples
axaptadynamics-ax-2012x++

Passing parameters to parameter dialog for Query-based reports


I have a query-based report in which the query has some interactive ranges enabled on them. This is great except the value is blank, or has the last values used pre-populated. One of these is Vendor account number. If I wanted to have this report to pre-populate the Vend account based on whichever Vendor account record is selected (the caller), how would I be able to achieve this?


Solution

  • The answer was easy, although hard to find. I wasn't aware that you could access query objects from within a controller. The solution is to create a Controller class with only a main() method defined as normal, and the prePromptModifyContract method overridden. The following code will solve the problem:

    SomeTable   someTable;
    Query       query;
    
    super();
    
    if (this.parmArgs() && this.parmArgs().dataset() == tableNum(SomeTable))
    {
        someTable = this.parmArgs().record();
        query = this.getFirstQuery();
    
        SysQuery::findOrCreateRange(query.dataSourceTable(tableNum(SomeOtherTable)), fieldNum(SomeOtherTable, SomeOtherField)).value(SysQuery::value(someTable.SomeField));
    }