Filtrar y ordenar datos de BD (SQL WHERE/ORDER)
Cuando necesite filtrar y ordenar datos de base de datos, utilice un componente WHERE/ORDER de SQL/NoSQL. Esto le permitirá introducir a mano (desde la interfaz gráfica del usuario de MapForce) una cláusula WHERE de SQL que filtre los datos. También tiene la opción de especificar una cláusula ORDER BY si desea ordenar el conjunto de registros según cierto campo de la base de datos, en orden ascendente o descendente.
El componente WHERE/ORDER de SQL/NoSQL debe estar conectado a una tabla o campo de un componente de base de datos. También puede conectarse a un componente de combinación cuando se necesita filtrar un conjunto de registros o registros combinados previamente (véase Combinar datos de BD).
Agregar un componente WHERE/ORDER de SQL/NoSQL en la asignación
Para añadir un componente WHERE/ORDER de SQL/NoSQL a la asignacón:
1.En el menú Insertar seleccione el comando WHERE/ORDER de SQL/NoSQL. Este componente presenta esta estructura predeterminada:
2.Conecte una tabla o un campo de la tabla de base de datos de origen con el nodo table/field del componente WHERE/ORDER de SQL/NoSQL. Por ejemplo, la asignación de ejemplo FilterDatabaseRecords.mfd de la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\ incluye un componente WHERE/ORDER de SQL que sirve para filtrar los registros de la tabla de origen Person cuyo apellido empiece por la letra B.
3.Haga doble clic en el título del componente WHERE/ORDER de SQL (o clic con el botón derecho y después clic en Propiedades). Esto abre el cuadro de diálogo "Propiedades del componente WHERE/ORDER de SQL".
4.Escriba la cláusula WHERE de SQL en el cuadro de texto superior. También tiene la opción de introducir la cláusula ORDER BY. En la imagen anterior puede ver las cláusulas WHERE y ORDER BY definidas en la asignación DB_PhoneList.mfd. Encontrará más ejemplos en el apartado Crear cláusulas WHERE y ORDER BY.
Suministrar parámetros a componentes WHERE/ORDER de SQL
El componente componente WHERE/ORDER de SQL de la asignación DB_PhoneList.mfd define esta cláusula WHERE:
Last LIKE :Name |
"Last" se refiere al nombre de un campo de la BD de la tabla que está conectada. "LIKE" es un operador SQL y ":Name" crea un parámetro llamado "Name" en la asignación.
Los parámetros son opcionales en los componentes WHERE/ORDER de SQL. Son prácticos si se quiere pasar un valor a la cláusula WHERE desde la asignación. La misma cláusula WHERE se puede escribir sin parámetros de la siguiente manera:
Last LIKE "B%" |
Esto recuperaría todas las personas cuyo apellido empiece con la letra B. Para poder hacer esta consulta más flexible añadimos un parámetro en lugar de "B%". Esto nos permitirá usar cualquier letra desde la asignación (p. ej. "C" para recuperar las personas cuyo apellido empiece por la letra "C" con solo cambiar una constante o un parámetro de entrada).
En la asignación, el carácter comodín SQL % viene dado por una constante y después se concatena con el valor del parámetro con ayuda de la función concat. La ventaja es que no es necesario teclear comodines SQL en la línea de comandos si se ejecuta esta asignación en otro entorno, como MapForce Server.
Aspecto de los componentes WHERE/ORDER de SQL
Algo importante que se debe tener en cuenta sobre los componentes WHERE/ORDER de SQL es que su aspecto cambia dependiendo de su configuración. Esto permite saber a simple vista qué papel desempeña el componente WHERE/ORDER de SQL en la asignación. Por ejemplo:
Se definió una cláusula WHERE. | |
Se definió una cláusula WHERE con un parámetro. El parámetro "Name" aparece debajo del nodo "table/field". | |
Se definió una cláusula WHERE con un parámetro y una cláusula ORDER BY. El icono A-Z indica que se definió una ordenación. |
Con solo pasar el puntero del ratón por encima del título del componente podrá ver qué cláusulas se han definido exactamente.