2014-09-03 52 views
0

如标题中所示。如何选择记录如果“在哪里”条件在阵列中

我需要从InventTable中选择记录。为此,我想从动态数组中使用选择的ItemId。问题是根据该数组的值构建过滤器。

+0

你能分享一些代码吗?就我的问题而言,它应该像获取数组值那样简单,将其放入ItemId变量并在where条件中使用该变量。 – 2014-09-03 14:00:28

回答

1

如果数组不是太大,你可以使用QueryBuildRange如下:

static void UseArrayToFilterRecords(Args _args) 
{ 
    str arr[5]; 
    int i; 
    str items; 
    Query q; 
    QueryBuildDataSource qbds; 
    QueryRun qr; 
    InventTable inventTable; 

    // Populate the array for test purposes 
    arr[1] = '10003'; 
    arr[2] = '10004'; 
    arr[3] = '10005'; 
    arr[4] = '10006'; 
    arr[5] = '10007'; 

    // Populate the string to be used in a filter with item numbers from the array 
    for (i = 1; i <= 5; i++) 
    { 
     items += items ? ',' + arr[i] : arr[i]; 
    } 

    // Create a query 
    q = new Query(); 
    qbds = q.addDataSource(tableNum(InventTable)); 
    qbds.addRange(fieldNum(InventTable, ItemId)).value(items); 

    // Run the query and display result 
    qr = new QueryRun(q);  
    while (qr.next()) 
    { 
     inventTable = qr.get(tableNum(InventTable)); 
     info(strFmt('Item number: %1, Record-ID: %2', inventTable.ItemId, inventTable.RecId)); 
    } 

    info('Job completed'); 
} 

否则,您可以填充另一个表与您的数组中的值,并加入该表和InventTable只选择所需的记录。

相关问题