Ordena una tabla.

Descripción

La función Sort ordena una tabla según una fórmula.

La fórmula se evalúa para cada registro de la tabla y los resultados se usan para ordenar la tabla. La fórmula debe dar como resultado un número, una cadena o un valor booleano; no puede generar una tabla ni un registro.

Los campos del registro que se están procesando actualmente están disponibles en la fórmula. Solo tiene que hacer referencia a ellos por su nombre, como haría con cualquier otro valor. También puede hacer referencia a propiedades de control y otros valores en toda la aplicación. Para obtener más información, consulte los siguientes ejemplos y la sección sobre cómo trabajar con ámbito de registro.

Para ordenar primero por una columna y luego por otra, debe insertar una fórmula Sort dentro de otra. Por ejemplo, puede usar esta fórmula para ordenar una tabla Contacts primero por una columna LastName y, luego, por una columna FirstName: Sort( Sort( Contacts, LastName ), FirstName )

La función SortByColumns también se puede usar para ordenar una tabla según una o más columnas.

La lista de parámetros para SortByColumns proporciona los nombres de las columnas según las cuales ordenar y la dirección de ordenación por columna. La ordenación se realiza según el orden de los parámetros (ordenados primero por la primera columna, luego la segunda, etc.). Los nombres de columna se especifican como cadenas y requieren comillas dobles si se incluyen directamente en la lista de parámetros. Por ejemplo, SortByColumns( CustomerTable, "LastName" ).

Puede combinar SortByColumns con un control Menú desplegable o Cuadro de lista para permitir que los usuarios seleccionen la columna según la cual ordenar.

Además de ordenar de manera ascendente o descendente, SortByColumns puede ordenar según una tabla de valores de una sola columna. Por ejemplo, puede ordenar el registro según el nombre de un día de la semana si suministra [ "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo" ] como el criterio de ordenación. Todos los registros que incluyan Lunes" aparecerán primero, seguidos de los registros que incluyan Martes, etc. Los registros encontrados que no aparezcan en la tabla de ordenación se colocan al final de la lista.

Las tablas son un valor en PowerApps, tal como una cadena o un número. Se pueden pasar a funciones y las funciones pueden devolverlas. Sort y SortByColumn no modifican una tabla; en lugar de eso, toman una tabla como argumento y devuelven una tabla nueva que se ordenó. Consulte cómo trabajar con tablas para más detalles.

Delegación

Cuando sea posible, PowerApps delegará las operaciones de filtro y ordenación al origen de datos y se desplazará por los resultados a petición. Por ejemplo, al iniciar una aplicación que muestre un control galería relleno con datos, inicialmente solo se pasará al dispositivo el primer conjunto de registros. Cuando el usuario se desplace, se mueven datos adicionales desde el origen de datos. El resultado es una reducción del tiempo de inicio de la aplicación y el acceso a conjuntos de datos muy grandes.

Sin embargo, es posible que la delegación no siempre se pueda realizar. Los orígenes de datos varían en cuanto a las funciones y los operadores que admiten con la delegación. Si no es posible la delegación completa de una fórmula, el entorno de creación marcará con una advertencia la parte que no se puede delegar. Cuando sea posible, considere la posibilidad de cambiar la fórmula para evitar funciones y operadores que no se puedan delegar. La lista de delegación detalla los orígenes de datos y operaciones que se pueden delegar.

Si la delegación no es posible, PowerApps extraerá solo un pequeño conjunto de registros para trabajar localmente. Las funciones de filtro y ordenación operarán en un conjunto reducido de registros. Es posible que en la galería no esté todo disponible, lo que podría generar confusión a los usuarios.

Para más información, consulte la introducción a la delegación.

Sintaxis

Sort( Table, Formula [, SortOrder ] )

  • Table: requerido. La tabla que se va a ordenar.
  • Formula: requerido. Esta fórmula se evalúa para cada registro de la tabla y los resultados se usan para ordenar la tabla. Puede hacer referencia a columnas dentro de la tabla.
  • SortOrder: opcional. Especifique SortOrder.Descending para ordenar la tabla en orden descendente. SortOrder.Ascending es el valor predeterminado.

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Table: requerido. La tabla que se va a ordenar.
  • ColumnName(s): requerido. Los nombres de las columnas según las cuales ordenar, como cadenas.
  • SortOrder(s): opcional. SortOrder.Ascending o SortOrder.Descending. SortOrder.Ascending es el valor predeterminado. Si se suministran varios ColumnNames, todas las columnas, menos la última, deben incluir un SortOrder.

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table: requerido. La tabla que se va a ordenar.
  • ColumnName: requerido. El nombre de la columna según la cual ordenar, como cadenas.
  • SortOrderTable: requerido. Tabla de valores de una sola columna según la cual ordenar.

Ejemplos

En los ejemplos siguientes, usaremos el origen de datos Helado, que contiene los datos de esta tabla:

Fórmula Descripción Resultado
Sort( Helado, Sabor )

SortByColumns( Helado, "Sabor" )
Ordena Helado según su columna Sabor. La columna Sabor contiene cadenas, por lo que la tabla se ordena alfabéticamente. De manera predeterminada, el criterio de ordenación es ascendente.
Sort( Helado, Cantidad )

SortByColumns( Helado, "Cantidad" )
Ordena Helado según su columna Cantidad. La columna Cantidad contiene números, por lo que la tabla se ordena numéricamente. De manera predeterminada, el criterio de ordenación es ascendente.
Sort( Helado, Cantidad, SortOrder.Descending )

SortByColumns( Helado, "Cantidad", SortOrder.Descending )
Ordena Helado según su columna Cantidad. La columna Cantidad contiene números, por lo que se ordena numéricamente. El criterio de ordenación se especificó como descendente.
Sort( Helado, Cantidad + EnPedido ) Ordena Helado por la suma de sus columnas Cantidad y EnPedido para cada registro individualmente. La suma es un número, por lo que la tabla se ordena numéricamente. De manera predeterminada, el criterio de ordenación es ascendente. Como ordenamos según una fórmula y no según valores de columna sin formato, no hay ningún equivalente usando SortByColumns.
Sort( Sort( Helado, EnPedido ), Cantidad )

SortByColumns( Helado, "EnPedido", Ascendente, "Cantidad", Ascendente )
Ordena Helado primero según su columna EnPedido y, luego, según su columna Cantidad. Observe que "Pistacho" apareció arriba de "Vainilla" en la primera ordenación según EnPedido y, luego, pasaron a su lugar adecuado según Cantidad.
SortByColumns( Helado, "Sabor", [ "Pistacho", "Fresa" ] ) Ordena Helado según su columna Sabor en función de la tabla con una sola columna que contiene "Pistacho" y "Fresa". Los registros que tienen un Sabor "Pistacho" aparecerán primero en el resultado, seguidos de los registros que contienen "Fresa". En el caso de los valores de la columna Sabor que no tienen coincidencia, como "Vainilla", aparecerán después de los elementos que sí tuvieron coincidencia.

Paso a paso

Para ejecutar estos ejemplos, cree el origen de datos Helado como una colección:

  1. Agregue un botón y establezca su propiedad OnSelect en esta fórmula:
    ClearCollect( Helado, { Sabor: "Chocolate", Cantidad: 100, EnPedido: 150 }, { Sabor: "Vainilla", Cantidad: 200, EnPedido: 20 }, { Sabor: "Fresa", Cantidad: 300, EnPedido: 0 }, { Sabor: "Menta-chocolate", Cantidad: 60, EnPedido: 100 }, { Sabor: "Pistacho", Cantidad: 200, EnPedido: 10 } )

  2. Obtenga una vista previa de la aplicación, seleccione el botón y, luego, presione Esc para volver al área de trabajo predeterminada.

  3. Seleccione Colecciones en el menú Archivo para mostrar la colección que acaba de crear y, luego, presione Esc para volver al área de trabajo predeterminada.

Ordenar

  1. Agregue otro botón y establezca su propiedad OnSelect en esta fórmula:
    ClearCollect( SortByFlavor, Sort( Helado, Sabor ) )

    La fórmula anterior crear otra colección, denominada SortByFlavor, que contiene los mismos datos que Helado. Sin embargo, la colección nueva contiene los datos ordenados alfabéticamente según la columna Sabor en orden ascendente.

  2. Presione F5, seleccione el botón nuevo y, luego, presione Esc.

  3. Seleccione Colecciones en el menú Archivo para mostrar ambas colecciones y, luego, presione Esc para volver al área de trabajo predeterminada.

  4. Repita los últimos tres pasos, pero cambie el nombre de la colección que desea crear y reemplace la fórmula Sort por una fórmula distinta de la tabla de ejemplos que apareció anteriormente en esta sección que usa Sort.

SortByColumns

  1. Agregue otro botón y establezca su propiedad OnSelect en esta fórmula:
    ClearCollect( SortByQuantity, SortByColumns( Helado, "Cantidad", Ascendente, "Sabor", Descendente ) )

    La fórmula anterior crea una tercera colección, denominada SortByQuantity, que contiene los mismos datos que Helado. Sin embargo, la colección nueva contiene los datos ordenados numéricamente según la columna Cantidad en orden ascendente y, luego, según la columna Sabor en orden descendente.

  2. Presione F5, seleccione el botón nuevo y, luego, presione Esc.

  3. Seleccione Colecciones en el menú Archivo para mostrar las tres colecciones y, luego, presione Esc para volver al área de trabajo predeterminada.

  4. Repita los últimos tres pasos, pero cambie el nombre de la colección que desea crear y reemplace la fórmula SortByColumns por una fórmula distinta de la tabla de ejemplos que apareció anteriormente en esta sección que usa SortByColumns.