Delphi – Ejecutar procedimientos almacenados de SQL Server

En este artículo aprenderemos a ejecutar procedimientos almacenados de SQL Server usando Delphi y ADO y para ello usaremos el procedimiento que hemos creado en el artículo SQL SERVER – Crear un procedimiento almacenado. Esta tarea puede resumirse en los siguientes pasos:

  1. Configurar la conexión en un componente TADOConnection.
  2. Asignar la conexión a un componente TADOStoredProc
  3. Establecer el nombre del procedimiento almacenado en la propiedad ProcedureName del componente TAdoStoredProc
  4. Haciendo uso de la propiedad Parameters del componente TADOStoredProc, definir los parámetros del procedimiento almacenado
  5. Usar el método Open del TADOStoredProc si el procedimiento devuelve un recordset o Exec si no devuelve recordsets.

Para efectos prácticos crearemos una pequeña aplicación donde podremos indicar el valor del punto de reorden y presionando un botón se ejecute el procedimiento y nos muestre el resultado en un Dbgrid. Así pues comencemos con el diseño de la pantalla:

*** Importante. Aunque este artículo ha sido escrito usando Delphi 2010, lo aquí expuesto aplica para cualquier versión de Delphi que incluya ADO.

Ejecutaremos Delphi y crearemos una nueva aplicación VCL Forms. En la aplicación colocaremos y configuraremos los siguientes componentes:

Componente Button1Componente Button2

Componente Button1Componente Button2

Componente AdoConnection1
Propiedad Valor
Loginprompt False
Componente TAdoStoredProc
Connection AdoConnection1
Name AdpProc
Componente DataSource1
DataSet AdoTable1
Componente DbGrid1
DataSource DataSource1
Componente Label1
Caption Punto de reorden
Componente Button1
Caption Mostrar Artículos
Componente Button2
Caption &Salir

Además agregaremos un EditBox y un Label adicional para el título de la aplicación. Esta quedará diseñada como se muestra en la siguiente imagen:

 

Delphi-Ejecuta-Procedure-SQL-Server

Ahora vamos a configurar la cadena de conexión de nuestro componente AdoConnection1 para conectarnos a SQL Server usando su proveedor OleDb. Daremos doble click en el componente y se mostrará la lista de proveedores instalados en nuestro sistema:

*** Importante. EL proveedor OLEDB de SQL Server ya viene preinstalado en el sistema operativo Windows por lo que no necesitarás descargar nada adicional.

SelectOleDbProvider

 

De la lista de proveedores OLEDB seleccionaremos Microsoft OLE DB Provider for SQL SERVER y presionaremos siguiente.

 

 

 

 

 

 

 

confcadconsql

 

En la pantalla “Propiedades de vínculo de datos” vamos configurar las opciones de la siguiente manera:

  1. Escribiremos el nombre del servidor donde esté instalado SQL Server.
  2. El tipo de sesión dependerá de cómo fue instalado Sql Server en mi caso lo he instalado con modo de autenticación mixta por lo que seleccionaré conectarme con un nombre de usuario y contraseña específicos. En mi caso usuario sa.  Daremos click en la casilla “Permitir guardar contraseña”.
  3. Si todo ha sido correcto al desplegar la lista se mostrarán las bases de datos a las que tenemos acceso y seleccionaremos AdventureWorks2012.

Como paso adicional si desean validar la conexión deben presionar el botón “Probar Conexión” y de ser todo correcto el sistema mostrará el mensaje “La prueba de conexión fue satisfactoria”. Configurada la conexión guardamos cambios presionando el botón aceptar y ok sucesivamente.

 

Una vez configurada la cadena de conexión, seleccionamos el botón “Mostrar Artículos” y daremos doble click en él. Ello nos llevará al editor de código con lo que podremos codificar la ejecución del procedimiento almacenado.  En el evento OnClick que nos ha generado delphi colocaremos el siguiente código:

  AdpProc.ProcedureName := 'AdventureWorks2012.dbo.SPProductosPtoReord';
  AdpProc.Parameters.CreateParameter('@PtoReorden',ftInteger,pdInput,0,0);
  AdpProc.Parameters.ParamByName('@PtoReorden').Value := StrToIntDef(Edit1.Text,0);
  AdpProc.Open;

Como puede verse en el código anterior, lo primero es definir el nombre del procedimiento almacenado a ejecutar. Aquí conviene mencionar que de seleccionarse una base de datos al momento de configurar la cadena de conexión podría solo colocarse el nombre SPProductosPtoReord.  Después se deben crear los parámetros que recibe el procedimiento almacenado tal y como fueron definidos en la base de datos por nombre, tipo y orden de declaración.  Luego, haremos uso de la propiedad parameters para asignar el valor que enviaremos al procedimiento.  Por último usaremos el método open para ejecutar el procedimiento. Cabe mencionar que si el procedimiento almacenado no devolviera datasets entonces se debe usar el método ExecProc.

Probaremos nuestra aplicación presionando el botón “Mostrar Artículos”:

delphi-sql-server-sp

Si lo deseas, puedes descargar el código fuente del programa aquí.

1 Trackback / Pingback

  1. Delphi – Ejecutar procedimientos almacenados de SQL Server « DbRunas – Noticias y Recursos sobre Bases de Datos

Deja un comentario