Showing posts with label ax - QueryBuildRange class. Show all posts
Showing posts with label ax - QueryBuildRange class. Show all posts

Wednesday, September 6, 2023

ax - How to call new form and modify its grid filter

Args    args;
FormRun formRun;
Query query;
My_VM_Resources table;
FormDataSource formDataSource = new FormDataSource();

super();

// call the new form 
args = new Args();
formRun = new menufunction( menuItemDisplayStr( WrkCtrCapRes ), 
                            MenuItemType::Display ).create( args );

formRun.init();
formDataSource = formRun.dataSource();
formRun.run();

table = My_VM_Resources_ds.cursor();
formDataSource.filter( fieldNum(WrkCtrCapRes, WrkCtrId), /*"5210*"*/table.my_resource_mask );
formRun.detach();

formRun.wait();

Thursday, February 8, 2018

AX - How use Query with date range (since-till) in where condition

When you need use date range in Query where condition, use SysQuery::range() function:
ProdRouteTrans prodRouteTrans;
Query q; 
QueryBuildDataSource qDS; 
QueryBuildRange qRange;
QueryRun qRun;
...
while
  select * from vm_resources
  where
  vm_resources.resource_mask != "" &&
  vm_resources.active == NoYes::Yes
  {
    q = new Query();
    qDS = q.addDataSource( TableNum( ProdRouteTrans ) );

    /* date range since..till */
    qRange = qDS.addRange( FieldNum( ProdRouteTrans, DateWIP ) );
    qRange.value( SysQuery::range( startDate, endDate ) );

    qRun = new QueryRun( q );
    while ( qRun.next() )
    {
       /* get ProdRouteTrans data from query */
       prodRouteTrans = qRun.get( TableNum( ProdRouteTrans ) );
       ...
    }
  ...
}

AX - How use Query with enum in where condition

When you need use enum item in Query where condition, use queryValue() function:
ProdRouteTrans prodRouteTrans;
Query q; 
QueryBuildDataSource qDS; 
QueryBuildRange qRange;
QueryRun qRun;
...
while
  select * from vm_resources
  where
  vm_resources.resource_mask != "" &&
  vm_resources.active == NoYes::Yes
  {
    q = new Query();
    qDS = q.addDataSource( TableNum( ProdRouteTrans ) );

    /* where condition: Qty only */
    qRange = qDS.addRange( FieldNum( ProdRouteTrans, TransType ) );
    qRange.value( queryValue( ProdRouteTransType::Qty ) );

    qRun = new QueryRun( q );
    while ( qRun.next() )
    {
       /* get ProdRouteTrans data from query */
       prodRouteTrans = qRun.get( TableNum( ProdRouteTrans ) );
       ...
    }
  ...
}