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 }
  • 相关阅读:
    Scala伴生对象
    Python之随机森林实战
    DevOps 发展融合运维可视化
    为什么选用 React 创建混合型移动应用?
    查找并修复Android中的内存泄露—OutOfMemoryError
    精华阅读第 12 期 | 最新 App Store 审核指南与10大被拒理由?
    Python 应用剖析工具介绍
    的确,Java存在缺陷。但是……
    APM终端用户体验监控分析(下)
    ASP.NET MVC 应用提速的十种方法
  • 原文地址:https://www.cnblogs.com/rumenren/p/3177227.html
Copyright © 2011-2022 走看看