2013-12-09 26 views
2

我正在尝试构建AX服务以从Microsoft Dynamics AX 2009中的InventTable检索数据。 参考https://community.dynamics.com/ax/f/33/t/70476.aspx,我尝试在AOT作业中执行代码以检索具有修改日期=“2/7/2013”​​的数据 该代码示例是如下:如何使用webservice请求检索具有偏移量和限制的数据?

static void SelectQueryTest(Args _args) 
    { 
     Query q = new Query(); 
    QueryRun qr; 
    QueryBuildDataSource qbds; 
    int64 countItem; 
    InventTable inventTable; 
    Fromdate FromDate = 2\7\2013; 


    ; 

    qbds = q.addDataSource(tableNum(InventTable)); 
    qbds.addRange(fieldNum(InventTable, modifiedDateTime)).value(date2StrUsr(FromDate)); 
    qr = new QueryRun(q); 
    countItem =SysQuery::countTotal(qr); 
    if(countItem>0) 
    { 

    while(qr.next()) 
    { 

     inventTable = qr.get(tableNum(inventTable)); 
     info(strfmt("Item Name: %1", inventTable.ItemName)); 
    } 
    } 
    else 
    { 
    info("No records found"); 
    } 

    } 

任何一个可以建议我如何写它检索数据使用偏移量是从Web服务请求,采取了代码和限制。

+0

什么偏移支持的任何SQL,什么是限制,什么web服务?你写的日期是七月二号。 –

+0

其实我的意思是一个方法就像跳过并取得linq或MySql中的“SELECT column FROM table LIMIT 18 OFFSET 8”之类的选择查询。 –

回答

2

查询AX时,限制和偏移在x ++中不可用。

在我看来,你有2个选项可以实现相同的目标。

  1. 订购由recId设置的结果集,存储recId以及recId> yourRecId用于偏移量的用法。您还需要使用类似select的方式手动计数记录。

  2. 使用X ++查询直接在SQL数据库,在这种情况下,你应该能够使用由服务器

0

您很可能不需要自己提供服务,因为有标准的方法可以做到这一点。

就以这里的答案一看:Fetching data from dynamics ax 2009 using Ax webservices and C#

也采取this screencast看看。

+0

感谢您的答复。我们在AX数据库中有近20万个产品。我认为使用web服务一次很难获取大量数据。因此,我正在考虑只检索500个AX服务每个数据并将它们拉入我的MySql数据库 –