Esta vez, les voy a poner un fragmento de código para leer un query, en este caso, este código aplica tanto para Ax 2009 como para Ax 2012. Algunas veces cuando creamos un query en el AOT de Ax necesitamos varias cosas para validar que esta consultando la información que requerimos, por ejemplo:
- queremos ver algún campo o muchos campos específicos aplicando uno o mas filtros o rangos en distintos campos
- queremos ver la sentencia SQL que esta haciendo a la base de datos
- queremos ver toooooda la información que arroja la consulta en una tabla
Para cada uno de estos puntos tenemos soluciones.
Para comenzar, aquí nuestro query en el AOT
1. Queremos ver algún campo o muchos campos específicos aplicando uno o mas filtros o rangos en distintos campos; aquí el código en un job indicándole el nombre del query, el filtro que queremos y asignamos a nuestros buffer de las tablas el resultado.
static void grwQueryEtapa1(Args _args)
{
QueryBuildRange range;
QueryRun queryRun;
Counter recordsFound;
GRWTransportTable gRWTransportTable;
GRWTransportInput gRWTransportInput;
;
// Indicamos el nombre del query
queryRun = new QueryRun(queryStr (GRWTransportQuery));
//Le indicamos que en dataSource numero 1, osea mi primera tabla del query, le queremos aplicar un filtro al campo Shipment
range = queryRun.query().dataSourceNo( 1).addRange(fieldNum (GRWTransportTable, Shipment));
range.value( "12345");
//Con el promt se lanza el dialogo del query por si quisieramos poner mas filtros a mano, esto es opcional, podriamos evitar este if
if(queryRun.prompt())
{
//Recorremos los resultados del query
while(queryRun.next())
{
//Asignamos a cada buffer el resultado del query
gRWTransportTable = queryRun.get( tableNum(GRWTransportTable));
gRWTransportInput = queryRun.get( tableNum(GRWTransportInput));
//Mostramos en pantalla el resultado
info( strFmt("%1, %2, %3" ,gRWTransportTable.Shipment, gRWTransportTable.MaterialType, gRWTransportTable.MovementType));
info( strFmt("%1, %2, %3" , gRWTransportInput.QualificationGeneral, gRWTransportInput.QualificationUnit, gRWTransportInput.AuthorizedDate));
recordsFound++;
}
}
//Mostramos el total de registros leidos
info( strFmt("registros: %1" , recordsFound));
}
2. Queremos ver la sentencia SQL que esta haciendo a la base de datos
static void grwQueryEtapa1(Args _args)
{
QueryBuildRange range;
QueryRun queryRun;
;
// Indicamos el nombre del query
queryRun = new QueryRun(queryStr (GRWTransportQuery));
//Le indicamos que en dataSource numero 1, osea mi primera tabla del query, le queremos aplicar un filtro al campo Shipment
range = queryRun.query().dataSourceNo( 1).addRange(fieldNum (GRWTransportTable, RecId));
range.value( "12345");
//Mostramos la sentencia SQL
info( strFmt("consulta: %1" , queryRun.query().toString()));
}
3. Queremos ver toooooda la información que arroja la consulta en una tabla; Creamos una vista arrastrando nuestro query al datasource de la vista y abrimos la vista como si fuera una tabla, ya sea con click derecho -> Abrir o posicicionandonos en el nombre de la vista y presionando Ctrl+O
Por último, te invito a que te unas a la página de facebook recién creada para estar al día con las actualizaciones del blog y que podamos tener más comunicación. La meta? es hacer la comunidad de habla hispana mas grande sobre Dynamics Ax en cuestiones de desarrollo.
Muchas gracias por este post, me ha ayudado mucho.
ResponderBorrar