Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 Configuración de Procedimientos en SQL. Introducción Este documento ha sido desarrollado con la finalidad de brindar a los usuarios de los productos de InduSoft sugerencias y pasos para llamar a un procedimiento guardado en SQL, mediante instrucciones disponibles en el entorno de desarrollo de InduSoft Web Studio. Para el desarrollo del ejemplo se ha usado Microsoft SQL Express 2014 además de la última versión disponible de Wonderware InduSoft Web Studio v8.0, sin embargo considere que las instrucciones y sintaxis que se van a presentar también son válidas para versiones anteriores. Page 1/10 Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 Creación de un procedimiento en SQL 1.- Abrir Microsoft SQL Express 2014, crear una tabla e insertar datos para tener valores de referencia al ejecutar las instrucciones de búsqueda. 2.- Crear un procedimiento en Microsoft SQL Express 2014. Recuerde que una vez insertado el código, debe de hacer click a al botón “Ejecutar” para que el procedimiento pueda ser grabado en “Stored Procedures”. Page 2/10 Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 Configuración en InduSoft 1.- Para tener una mejor visualización se va a insertar un objeto grid y configurar la conexión a la base de datos para mostrar los valores de la tabla creada anteriormente. Page 3/10 Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 2.- El procedimiento se va a llamar mediante la función “DBExecute”, el cual ejecuta una instrucción de SQL considerando los siguientes parámetros: $DBExecute( ConexionDBExterna, QuerySQL , TagResultado , MaxFile ) ConexionDBExterna : Es el nombre de la conexión externa adicional que se hace en InduSoft para conectar la tabla y poder usar funciones relacionadas a la interacción con base de datos. En nuestro ejemplo la conexión tendrá los siguiente parámetros : QuerySQL : Aquí va la instrucción query de SQL. TagResultado : Nombre del tag que va a recibir el resultado del query. MaxFile : La cantidad máxima de filas, que son el resultado del query. *Nota para mayor información acerca de las funciones de conexión para base datos, ver las referencia técnica. Para poder ejecutar la función DBExecute vamos a crear un botón en la pantalla e insertar el siguiente código VBscript : Page 4/10 Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 $DBstatus = $DBExecute("DB1","EXEC GetName 'Lima'","Result",2) $DBStatus : Este valor va recibir el resultado de todas las filas que fueron afectados por el query de SQL. Si el valor es negativo quiere decir que hubo un error durante la ejecución. EXEC GetName ‘Lima’: Esta es la instrucción en SQL para poder llamar al procedimiento que había sido creado en el paso 1. Nótese que la variable de esta condición (en este caso la ciudad “Lima”) tiene comillas simples porque es una variable tipo “string”. También considere que al inicio y final de toda la instrucción deben ir doble comillas. Result: Es el nombre del tag tipo arreglo que va a recibir el resultado del “query”. Si el resultado de la búsqueda es más de uno, será almacenado en el arreglo dependiendo del índice, es decir : o Result[0] : recibirá el primer resultado. o Result[1] : recibirá el segundo resultado. 2 : Este número limita la cantidad de resultados que se van a obtener , en otras palabras es el valor máximo del índice del arreglo. 3.- Insertar dos cuadros de texto para poder recibir los resultados del procedimiento: Considerando que solo se van a visualizar dos valores del arreglo; se va insertar dos cuadros de texto para recibir el resultado: Result[0] y Result [1] . Page 5/10 Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 4.- Correr la aplicación y luego presionar el botón para ejecutar la función “DBexecute”: El procedimiento creado en la primera sección de este manual debe retornar el valor de la fila o filas correspondientes a la columna “Nombre” que cumplan la condición de pertenecer a la misma ciudad. (El parámetro de entrada del procedimiento fue definido como @city) El resultado de este primer query ha sido dos nombres: Joel y Miguel. Verificando estos valores con la tabla podemos afirmar que es correcto. 5.- Nuestra siguiente prueba va a ser crear un botón en donde vamos insertar dinámicamente el nombre de la ciudad, para evitar que sea un valor estático como en el ejemplo anterior. Para ello vamos a insertar un nuevo botón en la pantalla, pero esta vez uno de los parámetros de DBExecute será diferente: Page 6/10 Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 En el código se ha agregado una instrucción cíclica “for” con la finalidad de limpiar las variables Result[0] y Result[1]. Esta instrucción no es necesario, solo ha sido insertada para mejorar la visualización Se ha creado una variable local adicional denominada: “condicional” para crear el query considerando un tag como referencia para la ciudad es decir: condicional = "EXEC GetName" & " ' " & $Parametro & " ' " Nótese que en este caso, comparado al anterior; se debe de insertar las comillas simples con comillas dobles adicionales para poder indicar que es un tipo de dato string.( “Parametro”, también es un tag tipo string) 6.- Vamos a insertar un objeto: “combo box” en la pantalla. Considerando el tag “Parámetro” para el campo de “etiqueta”, tal y como se muestra en la siguiente imagen: Page 7/10 Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 Además, se va a insertar el nombre de las ciudades que aparecen en la tabla como opciones de selección: 7.-Se ejecuta el proyecto , luego se selecciona la ciudad desde el objeto combo box , y finalmente se presionara el botón : “Ejecuta Procedimiento 2”. En la siguiente imagen se puede ver los resultados del procedimiento cuando se selecciona la ciudad: Cusco. Page 8/10 Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 8.- En el siguiente ejemplo se va a mostrar el resultado del procedimiento cuando se selecciona la ciudad: Lima. Page 9/10 Manual Técnico 12 de Enero del 2016 – Rev A ©Copyright InduSoft Systems 2016 Mapeo de revisión Revisión A Autor Joel Fernández Cusi Date Enero 2016 Comentarios Revisión inicial Page 10/10