zoukankan      html  css  js  c++  java
  • AX2009根据当前显示维度查询

    在上一篇中已经获取到了当前窗体的维度显示,那如何根据获取到的维度显示进行其他的查询呢?

    系统给出了两种方案

    方案1

    使用宏#InventDimJoin

    调用参数在行1到行5已经给出了,按照这几个参数调用就可以了

     1 /* %1 InventDimId           */
     2 /* %2 InventDim             */
     3 /* %3 InventDimCriteria     */
     4 /* %4 InventDimParm         */
     5 /* %5 Index hint            */
     6 
     7 join tableId from %2
     8     #ifnot.empty(%5)
     9         index hint %5
    10     #endif
    11     
    12     where (%2.InventDimId       == %1) &&
    13           (%2.ConfigId          == %3.ConfigId              || ! %4.ConfigIdFlag)           &&
    14           (%2.InventSizeId      == %3.InventSizeId          || ! %4.InventSizeIdFlag)       &&
    15           (%2.InventColorId     == %3.InventColorId         || ! %4.InventColorIdFlag)      &&
    16           (%2.InventSiteId      == %3.InventSiteId          || ! %4.InventSiteIdFlag)       &&
    17           (%2.InventLocationId  == %3.InventLocationId      || ! %4.InventLocationIdFlag)   &&
    18           (%2.InventBatchId     == %3.InventBatchId         || ! %4.InventBatchIdFlag)      &&
    19           (%2.WMSLocationId     == %3.WMSLocationId         || ! %4.WMSLocationIdFlag)      &&
    20           (%2.WMSPalletId       == %3.WMSPalletId           || ! %4.WMSPalletIdFlag)        &&
    21           (%2.InventSerialId    == %3.InventSerialId        || ! %4.InventSerialIdFlag)22 #InventDimDevelop

    原理和简单,就是根据表InventDimParm中的字段显示标识,做为查询的条件进行关联,但是这种方法只能使用在查询语句中

    那就介绍另一种方案,可以用在Query中的

    方案2

    使用动态组合查询

     1     InventDimParm                   inventDimParm=callerArgs.caller().parmDimParmVisibleGrid();//获取显示的维度
     2     container                       dimFields = InventDim::dimFieldList();//获取当前系统使用的维度
     3     QueryBuildDataSource            inventDimqbs=this.query().dataSourceTable(tablenum(InventDim));//关联当前Form的Dim数据源
    5 FormDataSource                  inventDimFrqbs=InventDim::callerInventDimDatasource(callerArgs);//从调用Form获取Dim数据
    6
    int h; 7 fieldId dimParmFieldId,dimFieldId; 8 ; 9 for(h=1;h<=conlen(dimFields);h++) 10 { 11 dimFieldId = conpeek(dimfields,h);//维度ID 12 dimParmFieldId = InventDim::dim2dimParm(dimFieldId);//显示维度ID 13 if(inventDimParm.(dimParmFieldId)) 14 inventDimqbs.addRange(dimFieldId).value(queryValue(inventDimFrqbs.cursor().(dimFieldId)));//根据显示的维度进行过滤 15 else 16 inventDimqbs.addRange(dimFieldId).value(SysQuery::valueUnlimited());//不显示的维度取消过滤 17 }
  • 相关阅读:
    Linux oracle操作
    Job
    Oracle创建表空间和用户并分配权限
    Oracle赋予用户查询另一个用户所有表的权限
    plsql中文乱码解决方案
    PLSQL创建Oracle定时任务,定时执行存储过程
    fcntl函数参数F_GETPIPE_SZ、F_SETPIPE_SZ报错引出的关于linux-specific头文件的使用方法
    从Windows Server 2008 迁移mantis到CentOS 6.8
    从Windows Server 2008 迁移VisualSVN到CentOS 6.8
    CentOS 6.8上开启NFS服务给不同用户使用的曲线设置方法
  • 原文地址:https://www.cnblogs.com/rumenren/p/3177227.html
Copyright © 2011-2022 走看看