Ejemplo: SELECT con parámetros
Con este ejemplo aprenderá a crear una asignación de MapForce que lee datos de una base de datos SQLite y los escribe en un archivo CSV. En concreto, en este ejemplo utilizamos una consulta SELECT de base de datos personalizada con un parámetro. La instrucción SELECT combina datos de varias tablas diferentes. Y después los resultados se envían a la asignación para seguir procesando los datos.
Este ejemplo viene acompañado de un diseño de asignación, cuya ruta de acceso es <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\select-component.mfd. Puede abrir este diseño y analizarlo o seguir los pasos que aparecen a continuación para crear el mismo diseño desde cero.
Aunque para este ejemplo usamos una base de datos SQLite, el proceso es idéntico con otras bases de datos. Consulte la sección Conectarse a una base de datos para obtener información sobre cómo conectarse a los distintos tipos de base de datos.
El objetivo de nuestro diseño de asignación es:
1.Seleccionar en la base de datos solamente aquellos pedidos cuyo número de productos pedidos supere determinado valor. Este valor vendrá dado por un parámetro. Para conseguir nuestro objetivo crearemos una instrucción SELECT que tome un parámetro de entrada.
2.En la base de datos SQLite el formato de fecha es YYYY-MM-DD HH-MI-SS. En el archivo CSV de destino la parte de hora debe eliminarse para que el formato sea YYYY-MM-DD. Para conseguir nuestro objetivo usaremos la función date-from-datetime de MapForce.
3.El archivo CSV resultante debe llamarse OrdersReport.csv.
Paso n°1: agregar la estructura SELECT
1.En el menú Insertar seleccione el comando Base de datos.
2.Seleccione Altova-Products.sqlite y siga los pasos del asistente para conectarse a la base de datos altova-products.mdb que está en la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\.
3.En el cuadro de diálogo "Insertar objetos de la base de datos" haga clic en el botón Agregar/Editar instrucción SELECT e introduzca esta consulta:
SELECT *, (Quantity * UnitPrice) AS Price |
Esta consulta usa una combinación interna entre las tablas Orders y Products y recupera todos los campos (*) y un valor calculado (AS Price). La consulta también especifica el parámetro :Quantity en la cláusula WHERE.
4.Ahora haga clic en el botón Agregar instrucción SELECT.
5.Haga clic en Aceptar para terminar. El componente altova-products se añadió al área de asignación.
6.Ahora haga clic en el botón de este componente y seleccione Insertar llamada con parámetros en el menú contextual.
La asignación incluye ahora una estructura nueva (SELECT_Statement) que está dividida en dos paneles: el panel izquierdo aporta los conectores de entrada y el derecho los conectores de salida. Observe que el panel izquierda también incluye el parámetro Quantity que definimos en pasos anteriores.
Paso n°2: agregar el parámetro de entrada
1.En el menú Insertar haga clic en el comando Insertar componente de entrada.
2.Introduzca el nombre "Quantity".
3.En el grupo de opciones Ejecución de tiempo de diseño introduzca el valor de parámetro que se debe usar para ejecutar la asignación durante la fase de diseño (p. ej. 2). Para más información consulte la sección Pasar parámetros a la asignación.
Ahora puede conectar el parámetro de entrada con la estructura de llamada a la base de datos (imagen siguiente).
Paso n°3: agregar el componente CSV de destino
1.En el menú Insertar haga clic en el comando Archivo de texto.
2.Seleccione la opción Utilizar procesamiento básico para archivos CSV estándar y después haga clic en Continuar.
3.En el cuadro de diálogo "Configuración del componente" haga clic en el botón Anexar campo y añada nueve campos nuevos. Recomendamos que los campos CSV tengan el mismo nombre que los campos de la base de datos (imagen siguiente). Así podrá ahorrar tiempo a la hora de crear asignaciones. Consulte el apartado Opciones de configuración de componentes CSV para obtener más información.
4.Cree una conexión entre el nodo result de la estructura SELECT y el nodo Rows del componente CSV.
Como la mayoría de los campos del componente CSV se llaman igual que su equivalente de la base de datos, cuando conecte result con Rows, probablemente MapForce cree las demás conexiones automáticamente. Si no lo hace, seleccione el comando Conexión y habilite la opción Conectar automáticamente los secundarios equivalentes. El único elemento que deberá conectar a mano será ProductID porque en la estructura SELECT no hay ningún campo con este nombre.
Paso n°4: convertir la fecha
En la ventana Bibliotecas busque la función date-from-datetime y arrástrela hasta el área de asignación. Después conecte su entrada y su salida tal y como se aprecia en esta imagen:
Paso n°5: establecer el nombre del archivo de salida
Para definir el nombre OrdersReport.csv para el archivo de salida basta con hacer doble clic en la barra del título del componente CSV. Se abre el cuadro de diálogo "Configuración del componente", donde puede introducir el valor en el cuadro de texto que corresponde al archivo de salida (marcado en rojo en la imagen siguiente).