关于更改当前公司(二)--CrossCompany

在AX2009里新增了一个关键字CrossCompany,这个关键字让查询多个公司的数据的语法变得简洁,如下所示:

ContractedBlock.gif ExpandedBlockStart.gif Code
static void ChangeCompanyDEMO(Args _args)
{
    SalesTable      salesTable;
    ;
    
while select CrossCompany salesTable
    {
        
print salesTable.SalesId,'  ',salesTable.dataAreaId;
    }

    pause;

}

查看执行的SQL语句如下所示:

SQL 语句:  SELECT   *   FROM  SALESTABLE A  [ ID=1575, 已重用=否 ]

可以看出在增加了关键字CrossCompany之后执行的SQL语句已经没有DataAreaId的限定了。如何限定选择某几个公司那?比如只选择"001"和"002"公司。需要在关键字CrossCompany后面加一个Container变量限定一下。如下所示:

ContractedBlock.gif ExpandedBlockStart.gif Code
static void ChangeCompanyDEMO(Args _args)
{
    SalesTable      salesTable;
    Container       c 
= ['001','002'];
    ;
    
while select forceLiterals CrossCompany:c salesTable
    {
        
print salesTable.SalesId,'  ',salesTable.dataAreaId;
    }

    pause;

}

执行的SQL语句如下:

SQL 语句:  SELECT   *   FROM  SALESTABLE A  WHERE  (DATAAREAID  IN  (N ' 001 ' ,N ' 002 ' ) )  [ ID=953, 已重用=否 ]

从上面可以看出,AX把限定Container里的内容翻译成了SQL里的IN语法。
关于跨公司查询的更多内容可以参照MSDN,上面有很多示例代码和更详尽的解释。
http://msdn.microsoft.com/en-us/library/cc634544.aspx

转载于:https://www.cnblogs.com/Farseer1215/archive/2009/11/16/1603611.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值