Anda di halaman 1dari 14

Siguiendo las entregas anteriores las cuales haba dejado abandonadas por mucho tiempo, en esta entrega vamos

a tratar el caso de uso de procedimientos almacenados en Sql Server, para ello vamos a usar Sql Server Express 2005. Comenzaremos con el diseo de la base de datos en Sql Server 2005 Express, vamos al administrador de Sql Server y en la opcin Database (Base de datos) hacemos clic con el boton derecho del mouse para abrir el menu emergente y hacemos clic en la opcion New Database(Nueva Base de datos).Ver imagen.

En la pantalla Nueva base de datos,ingresamos el nombre de la base de datos el nombre que se le dara es creditos. Para terminar la creacion de la base de datos, hacemos Ok en la pantalla y en de la parte izquierda del administrador de Sql Server donde esta la opcion de bases de datos debe de aparecer la base de datos creditos.Ver Imagen

Ahora crearemos dos tablas y los procedimientos almacenados que sern los primeros objetos del esquema de bases de datos que acabamos de crear estos elementos del esquesma son los que por el momento no permitirn poner en prctica el uso de ADO.net y Visual Basic.net en la insercin de registros. Creemos la tabla Creditos, sigamos en el administrador de Sql Server. Seleccionemos la base de datos Creditos y expandamos el rbol para hacer esto hagamos clic en el smbolo con una cruz que esta parte a la izquierda de la base de datos, una vez hecho esto veremos que nos aparecen todos los objetos que forman un esquema de base de datos estre estos objetos tenemos Tablas, Procedimientos almacenados, vistas, Funciones,Sinonimos etc. Los que vamos a usar por el momento son Tablas Y Procedimientos almacenados. Comencemos creando la tabla clientes. Sigamos un procedimiento similar al de la creacin de la base de datos, hagamos clic con el botn derecho del mouse sobre la opcion New Table que

aparece en el menu emergente y nos aparecera una ventana similar a la siguiente:

aca creamos la tabla clientes los campos a incluir son los siguientes vean la siguiente imagen, esta tabla incluye los nombres de los campos junto a sus tipo de datos.

Ahora crearemos una segunda tabla la cual se llamara clientesdependientes ,esta tabla servir como ejemplo para explicar el concepto de relacin entre la tabla clientes y las personas que dependen de ellos esta dependencia se refiere a hijos ya que estos clientes pueden ser padre o tutores de varias personas. Creemos la tabla clientesdependientes, siguiendo el procedimiento al diseo de la tabla clientes. Veamos la siguiente figura para que observemos el diseo de la tabla.

Un vez creada la tabla, entraremos en materia para entender el concepto de relacin. Para entender mejor este concepto tenemos que crear la relacin entre estas dos tablas para ellos vamos a la parte donde dice Database Diagrams(Diagrama de Base de Datos), hagamos clic con el botn derecho del mouse y seleccionemos New Database Diagram(Nuevo Diagrama De Base De Datos). Una vez creado el diagrama aca podremos agregar las tablas que formaran parte de la relacin vamos a usar dos tablas la tabla clientes y clientesdependientes. Veamos el diagrama.

Podemos ver el tipo de relacin establecida en estas dos tablas, la relacin es de uno a muchos, esto se entiende viendo la llave que se encuentra en la tabla clientes y el smbolo de infinito en la tabla clientesdependientes, para crear una relacin de este tipo arrastramos el campo llave de la tabla clientes hacia el campo clienteid de la tabla clientesdependientes tenemos que entender que en la tabla clientes el campo clienteID es una campo de llave primario lo que indica que un registro este campo aparece una vez no se puede repetir en el caso de la tabla clientesdependientes el campo clienteid se puede repetir muchas veces en los registros que se inserten en esta tabla. En este instante ya tenemos creadas las tablas clientes y clientesdependientes y su relacin. Es tiempo de crear los procedimientos almacenados. Seleccionemos el objeto programmability(Programacion) y despus seleccionemos Stored Procedure(Procedimientos Almacenados), hagamos clic con el botn derecho del mouse sobre el objeto Procedimiento almacenado y seleccionemos New Stored Procedure se nos presenta una pantalla con una plantilla de cdigo que define un procedimiento almacenado este cdigo lo podemos sustituir por nuestro propio cdigo ver instrucciones siguientes: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ------================================================ Template generated from Template Explorer using: Create Procedure (New Menu).SQL Use the Specify Values for Template Parameters command (Ctrl-Shift-M) to fill in the parameter

------

values below. This block of comments will not be included in the definition of the procedure. ================================================

-- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE [dbo].[insertarclientes] @clid smallint, @clnombre1 varchar(100), @clnombre2 varchar(100), @clApellido1 varchar(50), @clApellido2 varchar(50), @clcedula varchar(50) AS INSERT INTO dbo.clientes (dbo.clientes.clienteID1,dbo.clientes.clienteNombre1,dbo.clientes.clien teNombre2, dbo.clientes.clienteApellido1,dbo.clientes.ClienteApellido2,dbo.client es.clienteCedula) VALUES(@clid,@clnombre1,@clnombre2,@clapellido1,@clapellido2,@clcedula )

Este cdigo es el que usaremos para insertar registros en la tabla clientes y define un procedimiento almacenado DML,ya que hace uso de una instruccin del lenguaje de manipulacin de datos, esta instruccin es un INSERT INTO de Sql. Salvemos el procemientos almacenado y refresquemos los objetos de Stored Procedure del esquema de la base de datos de crditos, debe de aparecer el nuevo procedimiento que acabamos de definir el cual tiene por nombre dbo.insertarclientes Ahora vamos a dar una breve explicacin del cdigo del procedimiento almacenado que acabamos de crear. La instruccin CREATE PROCEDURE [dbo].[insertarclientes], define o crea el procedimiento almacenado en el esquema de la base de datos, las instrucciones: @clid smallint, @clnombre1 varchar(100), @clnombre2 varchar(100), @clApellido1 varchar(50), @clApellido2 varchar(50), @clcedula varchar(50)

Esta instruccin puede ser eliminada del procedimiento en el caso que cambiramos la forma del manejo del incremento de la llave, si queremos usar una tabla con una clave autonumerica no sera necesario usar esta declaracin de parmetro y podramos borrarla.

Definen parmetros de entrada de datos que se usaran en la ejecucin del procedimiento. Estos parmetros se usaran exactamente en el momento de hacer la llamada al procedimiento desde el cdigo de Visual Basic.net. La instruccin: INSERT INTO dbo.clientes (dbo.clientes.clienteID,dbo.clientes.clienteNombre1,dbo.clientes.clien teNombre2, dbo.clientes.clienteApellido1,dbo.clientes.ClienteApellido2,dbo.client es.clienteCedula) VALUES(@clid,@clnombre1,@clnombre2,@clapellido1,@clapellido2,@clcedula Representa una instruccin SQL de insercin de registros, ac podemos observar el uso de los parmetros para insertar los datos en la tabla clientes. Cambiando el diseo de la tabla clientes y el procedimiento almacenado insertarclientes para que permita generacin de valores autonumericos. Entrando un poco en teora vamos a explicar de forma breve que es un valor autonumerico y como se logra crear uno en una tabla de un esquema de bases de datos Sql Server. Un campo de valor autonumerico tambin conocido como campos autoincrementales son aquellos campos que generan de forma automtica un valor nuevo de clave cada vez que se insertan un nuevo registro en la tabla que lo contiene. Ahora que ya despejamos la duda de que es un campo con valores autonumericos vamos a ver como se logra la creacin de uno de estos campos y especficamente vamos a hacer esto en la tabla clientes. Para lograr esto requerimos modificar el diseo de la tabla clientes y el procedimiento almacenado insertarclientes por que el primer diseo no inclua la generacin de valores autonumericos en la tabla clientes ni como regresar un valor autonumerico al cdigo que llame al procedimiento almacenado insertarclientes Cambiando el diseo de la tabla clientes en nuestra base de datos crditos para permitir que esta tabla genere valores auto numricos 1. Vayamos a los objetos de tabla en el administrador Sql Server y busquemos la tabla con el nombre clientes 2. hagamos clic con el botn derecho del mouse sobre ella y seleccionemos modificar,una vez abierta la tabla en modo de diseo. 3. Seleccionemos el campo clienteID, este campo es el campo clave o campo primario de la tabla clientes. 4. Vayamos a las propiedades de campo y busquemos la propiedad especificacin de identidad. Seleccionemos la opcin es identidad y asignmosle el valor si. Con esto ya modificamos la tabla para permitir que su campo clave sea un campo que genere valores autonumericos ahora vamos a modificar el procedimiento almacenado. Para lograr esto es necesario crear un parmetro de salida en la definicin del procedimiento almacenado insertarclientes y al final del procedimiento despus de la instruccin de insercin colocamos el siguiente cdigo, la nueva declaracin de procedimiento insertarclientes seria igual al cdigo a continuacin:
ALTER PROCEDURE [dbo].[insertarclientes] @clnombre2 varchar(100), @clApellido1 varchar(50), @clApellido2 varchar(50), @clnombre1 varchar(100),

@clcedula varchar(50),@identidad int OUT AS INSERT INTO dbo.clientes (dbo.clientes.clienteNombre1,dbo.clientes.clienteNombre2, dbo.clientes.clienteApellido1,dbo.clientes.ClienteApellido2,dbo.clientes.clienteCedula) VALUES(@clnombre1,@clnombre2,@clapellido1,@clapellido2,@clcedula) SET @identidad = SCOPE_IDENTITY()

En esta nueva definicin del procedimiento almacenado desaparece por completo el parmetro @clid y por consiguiente en la instruccin Insert de sql tambien ya no se hace referencia al campo dbo.clientes.clienteID , la explicacion de esto radica en que no es necesario insertar un valor para este tipo de campo ya que este se gener de forma automatica.

Usando los objetos de ADO.net para insertar registros en la tabla clientes. Para entrar en materia comencemos diseando un formulario similar al que aparece en la pantalla siguiente:

Ahora procederemos a crear la conexin al motor de base de datos, para recordar estamos usando Sql Server. Usaremos algo de teora de conexiones usando cadenas de conexin en un archivo app.config que se genera en Visual Basic.net, la parte a incluir en el archivo app.config para crear la conexin es la siguiente: <add name="DatabaseConnection" connectionString="Data Source=SERGIOPC\SQLEXPRESS;Initial Catalog=creditos;Integrated Security=True" /> En su caso ustedes deberan sustituir la parte del Datasource=Sergio-PC, por el nombre de su PC(Computadora Personal) y conservar la instruccin SQLEXPRESS Para ver una definicin completa de cmo crear el archivo app.config ir al siguiente link. http://www.alltechinfo.biz/index.php?option=com_content&task=view&id=20&Itemid=13 Una vez creada la cadena de conexin procederemos a crear la instruccin de conexin en el formulario y abrir una conexin.

Explicaremos como crear el cdigo que hace esto: Hagamos doble clic sobre el formulario para abrir su ventana de cdigo. Ahora vamos a insertar el espacio de nombres de Sql para crear la conexin y usar el resto de objetos ADO.net El espacio de nombre tiene que estar antes de la definicin de la clase del formulario. El espacio de nombre es el conjunto de libreras que contienen las definiciones de ADO.net y el archivo app.config, nosotros podemos incluir tantas libreras como objetos se requieran no solo sirve para el uso de ADO.net, tambin sirve para el tratamiento de archivos binarios, archivos de textos, tratamientos de imgenes etc. Las libreras para el uso de ADO.net son: Imports System.Data Imports System.Data.SqlClient La libreria para el uso de app.config es: Imports System.Configuration

Las instrucciones quedaran definidas de esta manera en la declaracin del formulario. Ver las siguientes instrucciones:
Imports System.Data Imports System.Data.SqlClient Imports System.Configuration Public Class FormClientes

Veamos el cdigo completo para insertar registros en la tabla clientes,usando un objeto command y el procedimiento almacenado que creamos en la base de datos sql server. Agreguemos el siguiente cdigo al evento clic del botn de comando Salvar
Private Sub ButtonSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSalvar.Click Dim cmdInsertarClientes As New SqlCommand("insertarclientes", dbConnection) cmdInsertarClientes.CommandType = CommandType.StoredProcedure ' configurar los parametros de entrada que recibe el procedimiento almacenado. Dim parNombre1 As New SqlParameter("@clnombre1", SqlDbType.NVarChar) Dim parNombre2 As New SqlParameter("@clnombre2", SqlDbType.NVarChar) Dim parApellido1 As New SqlParameter("@clapellido1", SqlDbType.NVarChar) Dim parApellido2 As New SqlParameter("@clapellido2", SqlDbType.NVarChar) Dim parCedula As New SqlParameter("@clcedula", SqlDbType.NVarChar) 'Se define que cada parametro es de Entrada parNombre1.Direction = ParameterDirection.Input parNombre2.Direction = ParameterDirection.Input parApellido1.Direction = ParameterDirection.Input parApellido2.Direction = ParameterDirection.Input parCedula.Direction = ParameterDirection.Input 'Se le asigna a cada parametro el valor que se captura atraves de la interfaz creda por el formulario parNombre1.Value = TextBoxNombre1.Text parNombre2.Value = TextBoxNombre2.Text parApellido1.Value = TextBoxApellido1.Text parApellido2.Value = TextBoxApellido2.Text parCedula.Value = TextBoxCedula.Text cmdInsertarClientes.Parameters.Add(parNombre1) cmdInsertarClientes.Parameters.Add(parNombre2) cmdInsertarClientes.Parameters.Add(parApellido1) cmdInsertarClientes.Parameters.Add(parApellido2) cmdInsertarClientes.Parameters.Add(parCedula)

'ejecutar el objeto command cmdInsertarClientes.ExecuteNonQuery() End Sub Expliquemos el cdigo para insertar los registros en la tabla clientes.

Dim cmdInsertarClientes As New SqlCommand("insertarclientes", dbConnection)

La instruccin anterior nos permite crear un objeto command el cual hace uso del procedimiento almacenado insertarclientes definido en la base de datos, este objet command se conecta a la base de datos a travs del objeto dbConnection el cual es una instancia de una conexin a la base de datos crditos, esta conexin se define en la parte de declaraciones objetos que tienen un mbito de clase de formulario y tendra la siguiente declaracion ver instrucciones siguientes:
Imports System.Data.SqlClient Imports System.Configuration Public Class FormClientes Protected configuracion As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("DatabaseConnection") Dim dbConnection As New SqlConnection(configuracion.ConnectionString)

En estas instrucciones vemos el uso de la cadena de conexin definida en el archivo app.config y como se usa junto con el objeto conexin. El objeto command ejecuta el procedimiento almacenado insertarclientes, el cual recibe como parmetros los nombres de los clientes, sus apellidos y su nmero de cedula, las siguientes instrucciones definen el uso de uno de esos parmetros, la definicin de los otros parmetros es igual a esta.
Veamos el siguiente cdigo. Dim parNombre1 As New SqlParameter("@clnombre1", SqlDbType.NVarChar) parNombre1.Direction = ParameterDirection.Input parNombre1.Value = TextBoxNombre1.Text cmdInsertarClientes.Parameters.Add(parNombre1)

la primera instruccin crea el objeto parNombre1 que es de tipo Sqlparameter observemos que el constructor de este objeto recibe dos parmetros el primero es el nombre del parmetro tal y como se defini en el procedimiento almacenado que est guardado en el esquema de base de datos y el segundo parmetro es una constante que representa el tipo de valor que se pasara al procedimiento almacenado usando como entrada el parmetro, recordemos un poco la definicin del parmetro y nos daremos cuenta que este parmetro es de tipo Varchar el cual se representa por la constante SqlDBType.NVarChar, a este objeto se le asigna un valor que se toma del control de texto TextBoxNombre1, y por ultimo lo agregamos al objeto command para posteriormente ejecutar la instruccin del procedimiento almacenado. Los parmetros usados hasta el momento en la definicin del procedimiento almacenado insertarclientes son del tipo Varchar pero esto no significa que no podamos usar otros tipos de datos. Si quisiramos agregar un nuevo campo a la tabla cliente digamos la fecha de registro del cliente podemos usar un campo de tipo date, y el valor de la constante asociada al parmetro tendra que ser SqlDBType.Date. Esto indica que los parmetros deben ir asociados con el tipo de datos con el que se definieron en la tabla.

Recuperando el valor autonumerico recin generado al insertar el nuevo registro Recordemos la modificacin que hicimos en el procedimiento almacenado insertarclientes, si no nos hemos olvidado del objetivo de esa modificacin recordaremos que se hizo para que el procedimiento nos permitiera retornar el valor autonumerico recin creado al insertar un nuevo registro. La instruccin que permitia hacer esto era esta:
SET @identidad = SCOPE_IDENTITY()

Ahora vamos a ver cmo usar este parmetro de salida en cdigo de visual basic para recuperar el valor autonumerico recin ingresado. Modifiquemos la pantalla para agregar una etiqueta para mostrar el ide del cliente y modifiquemos el evento clic del botn de comando salvar. La pantalla nueva quedara con este diseo veamos la imagen:

El nuevo cdigo para el evento clic del botn salvar seria:


Private Sub ButtonSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSalvar.Click Dim cmdInsertarClientes As New SqlCommand("insertarclientes", dbConnection) cmdInsertarClientes.CommandType = CommandType.StoredProcedure ' Configurar los parametros para el procedimiento almacenado Dim parNombre1 As New SqlParameter("@clnombre1", SqlDbType.NVarChar) Dim parNombre2 As New SqlParameter("@clnombre2", SqlDbType.NVarChar) Dim parApellido1 As New SqlParameter("@clapellido1", SqlDbType.NVarChar) Dim parApellido2 As New SqlParameter("@clapellido2", SqlDbType.NVarChar) Dim parCedula As New SqlParameter("@clcedula", SqlDbType.NVarChar) Dim parIdentidad As New SqlParameter("@identidad", SqlDbType.Int) parNombre1.Direction = ParameterDirection.Input parNombre2.Direction = ParameterDirection.Input parApellido1.Direction = ParameterDirection.Input parApellido2.Direction = ParameterDirection.Input parCedula.Direction = ParameterDirection.Input 'El parametro es de salida por que tiene que retornar el valor autonumerico recien creado parIdentidad.Direction = ParameterDirection.Output parNombre1.Value = TextBoxNombre1.Text parNombre2.Value = TextBoxNombre2.Text parApellido1.Value = TextBoxApellido1.Text parApellido2.Value = TextBoxApellido2.Text parCedula.Value = TextBoxCedula.Text cmdInsertarClientes.Parameters.Add(parNombre1) cmdInsertarClientes.Parameters.Add(parNombre2) cmdInsertarClientes.Parameters.Add(parApellido1) cmdInsertarClientes.Parameters.Add(parApellido2) cmdInsertarClientes.Parameters.Add(parCedula) cmdInsertarClientes.Parameters.Add(parIdentidad)

' Ejecutar el objeto Comando cmdInsertarClientes.ExecuteNonQuery() 'asigamos a la etiqueta el numero que identifica al cliente en la tabla clientes LabelIdCliente.Text = parIdentidad.Value.ToString ButtonInsertDependientes.Enabled = True End Sub End Class

Llamando al formulario que nos permitir llenar los datos de los dependientes de clientes. La llamada del formulario ser como si llamramos a un cuadro de dialogo esto se hace para garantizar que el formulario se presente como un formulario Modal, la teora dice que un formulario es modal cuando no permite que se trabaje en otras pantallas cuando este se esta ejecutando. Es sntesis solo en la pantalla del formulario modal se puede ejecutar cualquier tipo de accin. Necesitamos pasar el valor autonumerico al formulario donde vamos a llenar los datos de los dependientes de clientes. Para hacer esto vamos a declarar una variable pblica en el formulario de clientes. Ver declaracin de clase del formulario:
Public Class FormClientes Protected configuracion As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("DatabaseConnection") Dim dbConnection As New SqlConnection(configuracion.ConnectionString) Public varIdCliente As Integer

Vemos que aparece una nueva declaracin, esta declaracin es la variable que va a contener el Id del cliente, la variable se llama varIdCliente se declara con alcance Public. Ahora veamos el diseo del formulario

Creando un reporte dinmico con Cristal Report. Lo primero que tendremos que hacer es crear un procedimiento almacenado, que nos permita obtener datos de la tabla clientes. La definicin de este procedimiento ser el siguiente: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE [dbo].[strclientes] @clid int AS BEGIN SELECT codigo,noreg,nombre,encargado,direccion, telefono,fax,e_mail,limcred FROM clientes WHERE codigo=@clid END Lo siguiente que tendremos que hacer es crear un dataset de datos para crear los campos de datos en el reporte de Cristal report. Veamos como hacerlo.

En el menu proyecto hagamos clic en agregar un nuevo item, una vez hecho esto se abrira una pantallla como la siguiente:

Seleccionemos el objeto Dataset. Una vez seleccionado el dataset, tendremos a nuestra disposicin una pantalla como la siguiente:

Para poder configurar el acceso a datos que provee el dataset lo siguiente ser hacer clic en el explorador de servidor, observemos las letras en color celeste. Una vez hecho clic en explorador de servidores aparecer en la parte izquierda. Una ventana que contiene las opciones para crear una conexin al servidor de bases de datos, esta conexin nos permitir seleccionar el elemento de la base de datos que servir como

fuente de datos para el reporte de cristal report. Lo siguiente ser hacer clic en conexin de datos(Data connections). Una vez hecho clic se abrir una pantalla que permite crear una conexin de datos. Lo siguiente ser crear un objeto DataSource, para ellos vamos al men Datos(Data), y seleccionemos la opcin agregar un nuevo DataSource. Se abrir una pantalla como la siguiente: Ac escogeremos el tipo de la fuente de datos. Hacemos clic en siguiente y podremos seleccionar la conexin de datos recin creada. El siguiente paso sera seleccionar los objetos de base de datos que utilizaremos para llenar el reporte como es un procedimiento almacenado, este objeto ser el que escogeremos. Ver la imagen siguiente:

Una vez hecho esto solo queda finalizar con la configuracin de nuestro DataSource. Para poder visualizar el Dataset Y el DataSource creados a travs de los asistentes. Vayamos al men datos y seleccionemos Mostrar DataSource. Aclararemos algo antes de continuar, utilizamos este mecanismo para poder crear un mtodo que nos permita obtener los campos que presentaremos en el reporte, pero si no fijamos esto hace que la conexin a la base de datos sea una conexin esttica el objetivo de esta seccin es explicar cmo hacer que el reporte sea dinmico hasta en la manera de conectarse por lo que vamos a llamar al reporte desde cdigo y le vamos a pasar el parmetro de conexin desde cdigo e inclusive le proveeremos el parmetro que utiliza el procedimiento almacenado para devolverle los datos que consume el reporte como cliente de la base de datos inventarios. Pero aun queda crear el reporte usando el Data Source que creamos con los asistentes, para agregar un reporte tendremos que hacer el mismo procedimiento que utilizamos para agregar el DataSet. Vayamos al men proyecto y agreguemos un objeto de Crystal Report. En la pantalla inicial que nos provee el asistente de Crystal Report,seleccionaremos reporte estndar. Ahora queda escoger los datos que se visualizaran en el reporte. Para ellos seleccionaremos el Data Set que se cre con el asistente.

El siguiente paso es seleccionar los campos a desplegar en el reporte.

Ahora podemos agrupar los datos si queremos ya que esto es opcional. Y tambin el paso siguiente el cual consiste en crear un subconjunto de registros, una vez hecho estos dos ltimos pasos solo queda seleccionar el estilo del reporte pero en este caso seleccionaremos el estilo estndar. Y hagamos clic en el botn finalizar y se habr finalizado el diseo del reporte. Ahora queda hacer la parte programtica en la cual vamos impregnarle el dinamismo al reporte. Como comentbamos con anterioridad y es bueno recordarlo el reporte se ha creado basndose en el uso de asistentes o wizard. Pero toca hacer el llamado a este reporte desde cdigo desde el llamado estableceremos la conexin y pasaremos el parmetro que utiliza el procedimiento almacenado que se encarga de suplir de datos al reporte. Puestos manos a la obra vamos a hacer la parte programtica. Ahora vamos a configurar la manera de pasar el parmetro al reporte, configuraremos un parmetro el cual ser el que se le pasara al procedimiento almacenado. Ilustraremos esto con una imagen veamos la pantalla siguiente:

Para abrir la pantalla de agregar parmetro hagamos clic con el botn derecho del mouse donde dice campos de parmetros (Parameter Fields). En la parte a la izquierda del diseador de parmetros. Establezcamos el nombre a paraidcliente y su tipo a Number. Una vez hecho estas dos cosas hagamos clic en aceptar (ok). El parmetro ya est configurado. Ahora tendremos que ir al formulario que va a llamar a este reporte. Y tendremos que colocar en l un control que se llama Crystal Report Viewer, este control lo encontraremos en la seccin de la caja de herramientas que tiene el nombre de Crystal Reports.

Y tambin tendremos que agregar algunas referencias las cuales son las referencias para Crystal Report. Estas referencias son las siguientes: using CrystalDecisions.CrystalReports.Engine; 18 19 using CrystalDecisions.Shared; 20 21 using CrystalDecisions.ReportSource; 22 23 namespace ReporteVentas

Anda mungkin juga menyukai