Un ejemplo de consulta X + + para Microsoft Axapta que puede usar cuando desee usar varios criterios.

Microsoft Business Solutions-Axapta 3,0 ahora forma parte de Microsoft Dynamics AX 3,0. Todas las referencias a Microsoft Business Solutions-Axapta y Microsoft Axapta pertenecen a Microsoft Dynamics AX.

INTRODUCCIÓN

Este artículo contiene un ejemplo de consulta X + + de Microsoft Business Solutions Axapta que puede usar en Microsoft Business Solutions-Axapta cuando desea usar varios criterios, como la fecha y el identificador o varios identificadores.

Más información

El código siguiente proporciona el mismo resultado que la instrucción While Select indicada en los comentarios.

static void Query_Example(Args _args){    Query q;    Queryrun qr;    QueryBuildRange qbr;    QueryBuildDataSource qbds;    InventTrans iv;    Real Total;    str range;        /* The following query produces the same results as:    while select sum(qty) from inventTrans        where (inventtrans.ItemId == "OL-1500") || inventtrans.ItemId == "OL-1000"            join inventDim                group by inventBatchId                where inventDim.InventDimId == inventTrans.InventDimId */    // Instantiate the query class.    q = new query("Inventory_Transactions");        // Create a data source by using the InventTrans table.    qbds = q.addDataSource(tablenum(InventTrans));     // Select only the Qty field, and then sum the Qty field.    qbds.addSelectionField(fieldnum(InventTrans,Qty),selectionfield::Sum);     // Set the range to the ItemId field.    qbr = qbds.addRange(fieldnum(InventTrans,ItemId));      // The range for the where statement specifies an 'or' statement.    qbr.value(strfmt('((%1 == "%2") || (%1 == "%3"))',fieldstr(inventtrans,ItemId),'OL-1500','OL-1000'));    // The following is the alternative way to enter the range.    // This also limits the selection on the ItemId values.    range = strfmt('((ItemId == "%1")||(ItemID =="%2"))',queryvalue('OL-1500'),queryvalue('OL-1000'));    qbr.value(range);        // Create the join to the InventDim table.    qbds = qbds.addDataSource(tablenum(InventDim));      // Specify the table relationship.    qbds.relations(true);      // Indicate the order mode as the grouping.    qbds.orderMode(ordermode::GroupBy);     // Specify the grouping on the InventBatchId field.    qbds.addSortField(fieldnum(InventDim,InventBatchId));     // Instantiate the QueryRun class for the form.    qr = new QueryRun(q);      // If the user clicks OK, continue.    if (qr.prompt())      {        // While there are records in the query, continue.        while (qr.next())          {                       // Set the value of the query to the iv table.            bufferiv = qr.get(tablenum(InventTrans));             // Create the value of the total field.           total =  iv.Qty;          }    }    // Specify the quantity for the item.    info(strfmt("Quantity: %1",total));      // Indicate the SQL string that is used for the query.     info (qr.query().dataSourceNo(1).toString());  }

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×