<< Clic para mostrar Tabla de Contenidos >> Filtros usando XPath |
Las colecciones pueden ser filtradas para obtener un número menor de valores. Los filtros son una herramienta muy poderosa que restringen el número de elementos que se representan en una expresión XPath.
Un filtro indica una o más condiciones que deben ser cumplidas en la relación uno a muchos (1-N). Los filtros son utilizados en expresiones para evaluar el registro de una colección.
Estas condiciones se establecen dentro de corchetes luego del nombre que identifica la relación 1:N.
<XPath[filter condition]>
El siguiente diagrama será utilizado para mostrar cómo es la estructura de los filtros en un XPath.
Imagine un proceso de solicitud de compras, cuyo modelo de datos es mostrado a continuación. El proceso de Solicitud de compra tiene una entidad de proceso llamada Solicitud de Compra. La entidad del proceso tiene una relación uno a muchos con la entidad Productos de la solicitud de compra.
Para obtener de la colección aquellos productos solicitados que tienen un precio unitario mayor de 1000 utilice la siguiente expresión:
<PurchaseRequest.ProductsRequestedforPurchase[UnitPrice > 1000]>
Cada solicitud de compras tiene varias cotizaciones para seleccionar el mejor proveedor. Por esta razón, se tiene una relación uno a muchos llamada Cotizaciones entre las entidades Solicitud de Compra y Cotizaciones.
Para obtener la cotización seleccionada utilice la siguiente expresión:
<PurchaseRequest.Quotation[Selected = true]>
Para obtener la dirección de correo electrónico del proveedor para cada cotización seleccionada utilice la siguiente expresión:
<PurchaseRequest.Quotation[Selected = true].Supplier.Email>
Cuando navega a través de una colección, cómo en el ejemplo anterior, la expresión XPath puede retornar una colección o simplemente un número en función de los registros que cumplan con las condiciones del filtro.
Por lo que, la expresión anterior, devolverá una colección de correos electrónicos cuando se haya seleccionado más de un proveedor.
Usted puede crear un filtro con varias condiciones utilizando los operadores lógicos “AND” y “OR”. Dentro del filtro no use paréntesis. Si necesita usar paréntesis use la función Me.getXPath("")
Para obtener los productos solicitados que están relacionados en una cotización y además la cotización es de más de 1000 por unidad se debe incluir operador “AND”.
<PurchaseRequest.ProductsRequestedforPurchase[QuotationsRequested = true AND UnitPrice > 1000]>
Usted puede utilizar los siguientes operadores dentro de un filtro.
Operador |
Descripción |
Ejemplo |
---|---|---|
= |
Igual |
<PurchaseRequest.Quotation[Selected = true]> |
!= |
No igual |
<PurchaseRequest.Quotation[Selected != true]> |
> |
Mayor que |
<PurchaseRequest.ProductsRequestedforPurchase[TotalPrice > 1000]> |
< |
Menor que |
<PurchaseRequest.ProductsRequestedforPurchase[UnitPrice < 1000]> |
>= |
Mayor o igual que |
<PurchaseRequest.Quotation[QuotationDiscount >= 1000]> |
<= |
Menor o igual que |
<PurchaseRequest.Quotation[DiscountPercentaje <= 0,1]> |
AND |
Y |
<PurchaseRequest.Quotation[QuotationDiscount >= 1000 AND DiscountPercentaje <= 0.1]> |
OR |
O |
<PurchaseRequest.Quotation[QuotationDiscount >= 1000 OR DiscountPercentaje <= 0.1]> |
Es verdadero (por defecto) |
<PurchaseRequest.ProductsRequestedforPurchase[QuotationsRequested]> |
|
! |
Es falso |
<PurchaseRequest.ProductsRequestedforPurchase[!QuotationsRequested]> |
Asignar y obtener valores utilizando colecciones filtradas con XPath
La forma más fácil de asignar un valor a una colección es utilizar el operador “=”.
var quantity = <PurchaseRequest.ProductsRequested[QuotationRequested=true].Quantity>
En la variable, se guarda a través de la expresión XPath una colección que contiene la cantidad de cada cotización seleccionada por cada producto de la solicitud de compra.
<PurchaseRequest.Quotation[Discount = true].Selected> = true
Esta expresión asigna al atributo booleano seleccionado el valor de verdadero para todas las cotizaciones que tienen un descuento.
Last Updated 1/26/2022 3:55:13 PM