2014-09-03 51 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只選擇所需的記錄。

相關問題