Programacin Aplicada I | SALAZAR CACHO, Iris Nohely
UNC MANUAL DE PROGRAMACIN APLICADA I Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 2 I. BASES DE DATOS Y VISUAL BASIC Visual Basic no es un administrador de Bases de Datos, slo utiliza un gestor de Bases de Datos, para nuestro caso ser, Microsoft SQL Server 2008; para permitir la visualizacin de una manera ms esttica de los datos, tambin para poder mostrar, o realizar algunos cambios en alguna base de datos. Es necesario tener conocimiento del concepto de algunas sentencias que utilizaremos en la segunda parte del curso Programacin Aplicada I: .1. Espacio de nombres System.Data.SqlClient: Es el proveedor de datos de .NET Framework para SQL Server. Un proveedor de datos de .NET Framework para SQL Server describe una coleccin de clases utilizada para tener acceso a una base de datos de SQL Server en el espacio administrado. .2. SqlConnection (Clase): Representa una conexin abierta con una base de datos de SQL Server. Esta clase no se puede heredar. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 3 .3. SqlDataAdapter (Clase): Representa un conjunto de comandos de datos y una conexin de base de datos que se utilizan para rellenar un DataSet y actualizar una base de datos de SQL Server. Esta clase no se puede heredar. SqlDataAdapter, se utiliza como un puente entre DataSet y SQL Server para recuperar y guardar datos. SqlDataAdapter proporciona este puente mediante la asignacin de Fill, que cambia los datos en DataSet para que coincidan con los datos del origen de datos. .4. SqlDataAdapter.Fill (Mtodo): Rellena un objeto DataSet o un objeto DataTable. Agrega filas a DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando los nombres de DataSet y DataTable. .5. DataSet (Clase): Representa una cach de memoria interna de datos. DataSet, que es una cach de memoria interna de datos recuperados de un origen de datos, representa un componente fundamental de la arquitectura de ADO.NET. DataSet est compuesto por una coleccin de objetos DataTable que se pueden relacionar entre ellos mediante objetos DataRelation. Sintaxis Sq|DataAcapterFi||(DataSet, Strin,) Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 4 .6. Ejemplo de conexiones a una Base de Datos: Dim conex As New SqlConnection("server=.;database = Northwind; trusted_connection=true") Conex: Nombre de la conexin a la base de datos. Server: Es el nombre del servidor; en este caso, la conexin es local, tambin podemos escribir (local), localhost; si la conexin no es local, se debe escribir el nombre propio de dicha conexin. Database: Indica el nombre de la base de datos a la cual se desea conectar. Trusted_connection: Permite conectarse a la base de datos con el mecanismo de autenticacin de Windows. "Data Source=. ; Initial Catalog = Northwind; Integrated Security= True" Data Source: Es el nombre del servidor; en este caso, la conexin es local; si la conexin no es local, se debe escribir el nombre propio de dicha conexin. Initial Catalog: Indica el nombre de la base de datos a la cual se desea conectar. Integrated Security: Permite conectarse a la base de datos con el mecanismo de autenticacin de Windows. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 5 PRCTICA I 1. VISUALIZAR LOS ESTUDIANTES QUE ESTN EN UNA BASE DE DATOS. Se tiene la informacin en una hoja de Excel y es necesario trasferir esos datos a SQL, para ello seguiremos los siguientes pasos: En SQL, creamos la nueva tabla en la base de datos Northwind (la base de datos es opcional, si se desea se puede crear una base de datos o crear la tabla en otras bases de datos existentes) y seleccionamos el tipo de dato adecuado para cada fila y clave primaria: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 6 Guardamos el registro de datos de Excel en formato con extensin csv (delimitado por comas): Obtendremos lo siguiente (para visualizar el archivo as, es necesario hacer un clic derecho sobre el archivo y escoger la opcin editar) Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 7 Para poder obtener slo los datos de los alumnos, debemos eliminar la primera fila que corresponde a los encabezados: Escribiremos el siguiente cdigo SQL Transact para poder migrar los datos a la tabla: Ahora, ya tenemos los datos en una tabla de una base de datos y podemos ejecutar sobre ellos cdigos SQL Transact: BULK INSERT ESTUDIANTES FROM 'F:\UNc\PAI\alumnos.csv' ruta del archivo with( FIELDTERMINATOR=',', Indica que al encontrar una coma ste termina e inicia otro. ROWTeRMINATOR='\n' ) select * from estudiantes Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 8 Luego de tener los datos ya en el gestor SQL, haremos el trabajo en visual, necesitaremos utilizar la herramienta DataGriediew y escribiremos el siguiente cdigo: Imports System.Data.SqlClient Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim conex As New SqlConnection("server=.;database = Northwind; trusted_connection=true") Dim datos As New SqlDataAdapter("select * from estudiantes", conex) Dim ds As New Data.DataSet datos.Fill(ds, "Alumnos") DGV1.DataSource = ds.Tables("alumnos") End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 9 2. VISUALIZAR LOS DATOS DE LOS ALUMNOS DESDE LA WEB: Crearemos un formulario web: Utilizaremos la herramienta GriedView: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 10 El cdigo en visual ser: Imports System.Data.SqlClient Public Class WebForm1 Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim conex As New SqlConnection("server=.;database = Northwind; trusted_connection=true") Dim datos As New SqlDataAdapter("select * from estudianTes", conex) Dim ds As New Data.DataSet datos.Fill(ds, "Alumnos") GridView1.DataSource = ds.Tables("Alumnos") GridView1.DataBind() End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 11 3. CREAR UN PROGRAMA QUE PERMITA VISUALIZAR LOS DATOS DE UN ESTUDIANTE CUYO CDIGO ANR SEA INGRESADO MEDIANTE UN LECTOR DE CDIGO DE BARRAS: Crearemos un procedimiento almacenado en SQL, para poder usar el programa las veces que deseemos y para facilitar el desarrollo de este ejercicio: Cdigo en visual: CREATE PROC BUSCAR_ALUMNO @ID CHAR(10) AS SELECT * FROM ESTUDIANTES WHERE IDESTUDIANTE =@ID Imports System.Data.SqlClient Public Class Form3 Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Chr(13) Then Dim conex2 As New SqlConnection("server=.; database=northwind; trusted_connection=true ") Dim traerdatos As New SqlDataAdapter("select * from estudiantes where idestudiante=@id ", conex2) traerdatos.SelectCommand.Parameters.Add("@id", SqlDbType.Char,10).Value = TextBox1.Text Dim contenedordatos As New Data.DataSet traerdatos.Fill(contenedordatos, "Alumnos") DataGridView1.DataSource = contenedordatos.Tables("Alumnos") End If End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 12 PRCTICA II TRABAJO DE CICLO La novena prctica consiste en crear un men con opciones que nos permitan visualizar distintas y numerosas consultas a la base de datos Northwind; as como tambin hacer algunas modificaciones a los datos de la misma: 1. REALIZAR UNA CONEXIN QUE SIRVA PARA TODOS LOS FORMULARIOS QUE SE IMPLEMENTARN Es necesario agregar un mdulo; para ello, sobre el proyecto clic derecho y luego elegir la opcin agregar; finalmente clic en la opcin mdulo: NOTA: Cuando el lector de cdigo de barras lee el cdigo simula un enter al finalizar; es por eso que en el cdigo en visual se program el cdigo bajo la condicin del enter. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 13 Se nos mostrar la siguiente ventana y tendremos que escribir un nombre para la conexin, la denominaremos GLOBALES: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 14 Finalmente, el cdigo de la conexin es: 2. CREAR UN MEN QUE NOS MUESTRE LAS SIGUIENTES OPCIONES: Mantenimiento Reportes Consultas Acerca de Module GLOBALES Public conex As New System.Data.SqlClient.SqlConnection("server=.;database=northwind;trusted_connection=true") End Module Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 15 3. VISUALIZAR EL NMERO DE PRODUCTOS POR CATEGORA: Cdigo SQL: Cdigo visual, para poder mostrar los datos: Cdigo visual para poder mostrar el formulario que contiene dichos datos: CREATE PROC QUERY1 AS SELECT CATEGORYNAME,COUNT(*) AS TOTAL FROM Categories AS C INNER JOIN Products AS P ON C.CategoryID =P.CategoryID GROUP BY CategoryName ORDER BY CategoryName Imports System.Data.SqlClient Public Class consulta01 Private Sub consulta01_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim datos As New SqlDataAdapter("QUERY1", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.Fill(ds, "QUERY1") dg.DataSource = ds.Tables("QUERY1") End Sub End Class Private Sub ProductosPorCategoriaToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ProductosPorCategoriaToolStripMenuItem.Click Dim Fm As New consulta01 Fm.MdiParent = Me Fm.Show() End Sub Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 16 4. REALIZAR UNA CONSULTA QUE PERMITA VER CDIGO DEL PRODUCTO, NOMBRE DEL PRODUCTO, PRECIO DEL PRODUCTO, STOCK, NOMBRE DEL PROVEEDOR Y CATEGORA DEL PRODUCTO, LAS CATEGORAS SE MOSTRARN EN UNA LISTA DESPLEGABLE: Haremos una conexin especial para la lista desplegable, seguiremos los siguientes pasos: a) Clic sobre el tringulo de la esquina superior derecha de la lista, luego clic en la opcin desplegable de Origen de Datos y se nos mostrar la siguiente ventana, elegiremos entonces la opcin Agregar origen de datos del proyecto: NOTA: El cdigo en visual, que nos permite mostrar los formularios que deseamos ver es similar, slo es necesario cambiar los nombres de los formularios. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 17 b) Aparecer la siguiente ventana y luego clic sobre el botn Siguiente c) En esta ventana, seleccionaremos Conjunto de Datos y luego clic en el botn Siguiente: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 18 d) Clic en el botn Nueva Conexin e) Se mostrar una ventana que solicita llenar algunos datos sobre el tipo de conexin y el nombre de la base de datos a la que se desea conectar, luego probaremos la conexin para evitar errores posteriores: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 19 f) Se nos presentar la siguiente ventana, en la cual, debemos elegir que objetos deseamos tener en el conjunto de datos: g) Finalmente, tendremos especial cuidado al seleccionar qu datos debemos seleccionar en las etiquetas: Si la etiqueta es Mostrar Miembro hace referencia a lo que se va a mostrar; pero si la etiqueta es Miembro de valor lo que contiene son los valores de los datos: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 20 Cdigo SQL: Cdigo en visual: create proc query2 @cate int as select ProductID ,ProductName ,UnitPrice ,UnitsInStock ,companyname,CategoryID from Products as p inner join Suppliers as s on p.SupplierID =s.SupplierID where CategoryID =@cate Imports System.Data.SqlClient Public Class Form3 Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged Dim datos As New SqlDataAdapter("query2", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@cate", SqlDbType.Int).Value = ListBox1.SelectedValue Dim ds As New Data.DataSet datos.Fill(ds, "tablas") DataGridView1.DataSource = ds.Tables("tablas") End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 21 5. MOSTRAR LOS SIGUIENTES DATOS DE LOS PRODUCTOS: NOMBRE, PRECIO, CATEGORA Y PROVEEDOR; SLO DE LOS PRODUCTOS QUE ESTN DENTRO DE UN RANGO DE PRECIOS: Cdigo SQL: Cdigo en visual: create proc query3 @menor int, @mayor int as select ProductName , UnitPrice, CategoryName ,companyname from Products as p inner join Categories as c on p.CategoryID =c.CategoryID inner join Suppliers as s on p.SupplierID =s.SupplierID where UnitPrice between @menor And @mayor Imports System.Data.SqlClient Public Class Form4 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim datos As New SqlDataAdapter("query3", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@menor", SqlDbType.Int).Value = TextBox1.Text datos.SelectCommand.Parameters.Add("@mayor", SqlDbType.Int).Value = TextBox2.Text Dim ds As New Data.DataSet datos.Fill(ds, "t") DataGridView1.DataSource = ds.Tables(0) End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 22 6. MOSTRAR NOMBRE, PRECIO, CATEGORA Y PROVEEDOR DE LOS PRODUCTOS QUE EMPIECEN CON UNA DETERMINADA LETRA: Cdigo SQL: create proc query4 @nom varchar(10) as select ProductName ,UnitPrice, CategoryID ,SupplierID from products where ProductName like @nom+'%' Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 23 Cdigo en Visual: Imports System.Data.SqlClient Public Class Form5 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim datos As New SqlDataAdapter("query4", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@nom", SqlDbType.NVarChar, 10).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "productitos") DataGridView1.DataSource = ds.Tables(0) End Sub Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 24 7. VISUALIZAR LOS PRODUCTOS QUE PERTENECEN A UN DETERMINADO PORVEEDOR: Cdigo SQL: Cdigo en Visual: create proc query5 @id int as select ProductName ,UnitPrice ,UnitsInStock ,s.SupplierID, s.CompanyName from Products as p inner join Suppliers as s on p.SupplierID =s .SupplierID where s.SupplierID = @id Imports System.Data.SqlClient Public Class Form6 Private Sub Form6_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'TODO: esta lnea de cdigo carga datos en la tabla 'PAIDataSet1.Suppliers' Puede moverla o quitarla segn sea necesario. Me.SuppliersTableAdapter1.Fill(Me.PAIDataSet1.Suppliers) End Sub Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged Dim datos As New SqlDataAdapter("query5", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@id", SqlDbType.Int).Value = ListBox1.SelectedValue Dim ds As New Data.DataSet datos.Fill(ds, "prod") DataGridView1.DataSource = ds.Tables(0) End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 25
Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I
S A L A Z A R C A C H O , I r i s N o h e l y Pgina 26 8. VER LOS DETALLES DE UNA ORDEN DE COMPRA: Cdigo SQL: Cdigo en visual: create proc query6 @oid as int as select od.OrderID,p.ProductId,ProductName ,p.UnitPrice ,Quantity from Orders as o inner join [Order Details] as od on o.OrderID =od.OrderID inner join Products as p on od.ProductID =p.ProductID where od.OrderID =@oid Imports System.Data.SqlClient Public Class Form7 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim datos As New SqlDataAdapter("query6", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@oid", SqlDbType.Int).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 27 9. PRODUCTOS CON STOCK Y PRODUCTOS SIN STOCK: Cdigo SQL: Cdigo en Visual: Productos con stock: create proc query8 as select ProductID ,ProductName ,UnitPrice ,UnitsInStock from Products where UnitsInStock > 0 Productos sin stock: create proc query8 as select ProductID ,ProductName ,UnitPrice ,UnitsInStock from Products where UnitsInStock = 0 Imports System.Data.SqlClient Public Class Form8 Private Sub RadioButton1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton1.CheckedChanged Dim datos As New SqlDataAdapter("query7", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub RadioButton2_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton2.CheckedChanged Dim datos As New SqlDataAdapter("query8", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub Form8_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 28 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 29 10. MOSTRAR LOS PRODUCTOS VIGENTES Y LOS DESCONTINUADOS: Cdigo SQL: Cdigo Visual: create proc query9 @value as bit as select ProductID , ProductName , UnitPrice ,Discontinued from Products where Discontinued=@value Public Class Form9 Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged Dim datos As New SqlDataAdapter("query9", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@value", SqlDbType.Bit).Value = CheckBox1.Checked Dim ds As New Data.DataSet datos.Fill(ds, "a") DataGridView1.DataSource = ds.Tables("a") End Sub End Class Imports System.Data.SqlClient Public Class Form9 Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged Dim valor As Integer If CheckBox1.Checked Then valor = 1 Else valor = 0 End If Dim datos As New SqlDataAdapter("query9", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@value", SqlDbType.Bit).Value = valor Dim ds As New Data.DataSet datos.Fill(ds, "a") DataGridView1.DataSource = ds.Tables("a") End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 30 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 31 PRCTICA III CREACIN DE LA CONEXIN: 1. EN UN LISTBOX O COMBOBOX, COLOCAR EL SIGUIENTE TEXTO (SON LOS TIPOS DE BUSQUEDA): Comienza con Termina con Contiene a No contiene a Exactamente igual a El proceso es seleccionar un tipo de bsqueda en la Lista, luego escribir un texto en el TextBox y al darle <ENTER> al TextBox, se debe filtrar el DatagridView por el nombre del producto, respetando el tipo de bsqueda seleccionado. Los datos que deben salir en el DatagridView son: ProductId ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname (Suppliers). a) DISEO: Module CONEXIN Public conex As New System.Data.SqlClient.SqlConnection("server=.;database=northwind;trusted_connection=true") End Module Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 32 b) CONSULTA SQL: create procedure definido @nombre as nvarchar(40), @tipo as int as if @tipo=0 SELECT ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname FROM Categories AS C INNER JOIN Products AS P ON C.CategoryID= P.CategoryID INNER JOIN Suppliers AS S ON P.SupplierID= S.SupplierID WHERE ProductName LIKE @NOMBRE+'%' else if @tipo=1 SELECT ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname FROM Categories AS C INNER JOIN Products AS P ON C.CategoryID= P.CategoryID INNER JOIN Suppliers AS S ON P.SupplierID= S.SupplierID WHERE ProductName LIKE '%'+@NOMBRE else if @tipo=2 SELECT ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname FROM Categories AS C INNER JOIN Products AS P ON C.CategoryID= P.CategoryID INNER JOIN Suppliers AS S ON P.SupplierID= S.SupplierID WHERE ProductName LIKE '%'+@NOMBRE + '%' else if @tipo=3 SELECT ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname FROM Categories AS C INNER JOIN Products AS P ON C.CategoryID= P.CategoryID INNER JOIN Suppliers AS S ON P.SupplierID= S.SupplierID WHERE ProductName NOT LIKE '%'+@NOMBRE+'%' else SELECT ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname FROM Categories AS C INNER JOIN Products AS P ON C.CategoryID= P.CategoryID INNER JOIN Suppliers AS S ON P.SupplierID= S.SupplierID WHERE ProductName LIKE @NOMBRE Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 33 c) CDIGO EN VISUAL: d) PANTALLAS: Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = ChrW(13) Then Dim datos As New SqlDataAdapter("definido", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@NOMBRE", SqlDbType.NVarChar, 40).Value = TextBox1.Text datos.SelectCommand.Parameters.Add("@tipo", SqlDbType.Int).Value = ListBox1.SelectedIndex Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 34 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 35 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 36 2. EN UN GRUPO DE RADIOBUTTON, COLOCAR LOS FILTROS COMO SE MUESTRA EN LA PANTALLA. El procedimiento es seleccionar un filtro, luego darle un click en el botn, para que aparezcan los datos de los Productos en el DataGridView. Los campos a mostrar en el DataGridView son: ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued. a) DISEO: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 37 b) CONSULTAS SQL: CREATE PROCEDURE CONSULTA6 AS SELECT ProductName, UnitPrice, UnitsinStock, C.CategoryID, Discontinued FROM PRODUCTS AS P INNER JOIN CATEGORIES AS C ON P.CategoryID = C.CategoryID WHERE UnitsInStock >0 CREATE PROCEDURE CONSULTA7 AS SELECT ProductName, UnitPrice, UnitsinStock, C.CategoryID, Discontinued FROM PRODUCTS AS P INNER JOIN CATEGORIES AS C ON P.CategoryID = C.CategoryID WHERE Discontinued = '0' CREATE PROCEDURE CONSULTA8 @CAT INT AS SELECT ProductName, UnitPrice, UnitsinStock, C.CategoryID, Discontinued FROM PRODUCTS AS P INNER JOIN CATEGORIES AS C ON P.CategoryID = C.CategoryID WHERE C.CategoryID =@CAT ALTER PROCEDURE CONSULTA9 AS SELECT ProductName, UnitPrice, UnitsinStock, C.CategoryID, Discontinued FROM PRODUCTS AS P INNER JOIN CATEGORIES AS C ON P.CategoryID = C.CategoryID Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 38 c) CDIGO EN VISUAL: Imports System.Data.SqlClient Public Class SEGUNDO Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click If RadioButton1.Checked Then Dim datos As New SqlDataAdapter("CONSULTA6", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) ElseIf RadioButton2.Checked Then Dim datos As New SqlDataAdapter("CONSULTA7", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) ElseIf RadioButton3.Checked Then Dim datos As New SqlDataAdapter("CONSULTA8", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@CAT", SqlDbType.Int).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) Else Dim datos As New SqlDataAdapter("CONSULTA9", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) End If End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 39 d) PANTALLAS: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 40 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 41 3. IMPLEMENTAR LA INTERFACE DEL EJERCICIO 2, ESTA VEZ SIN EL COMMANDBUTTON, LA BSQUEDA SE HAR AL SELECCIONAR EL RADIOBUTTON (EN EL CASO DEL FILTRO DE CATEGORA, SE HAR CON EL ENTER DEL TEXTBOX). a) DISEO: b) CONSULTAS SQL: CREATE PROCEDURE CONSULTA6 AS SELECT ProductName, UnitPrice, UnitsinStock, C.CategoryID, Discontinued FROM PRODUCTS AS P INNER JOIN CATEGORIES AS C ON P.CategoryID = C.CategoryID WHERE UnitsInStock >0 CREATE PROCEDURE CONSULTA7 AS SELECT ProductName, UnitPrice, UnitsinStock, C.CategoryID, Discontinued FROM PRODUCTS AS P INNER JOIN CATEGORIES AS C ON P.CategoryID = C.CategoryID WHERE Discontinued = '0' CREATE PROCEDURE CONSULTA8 @CAT INT AS SELECT ProductName, UnitPrice, UnitsinStock, C.CategoryID, Discontinued FROM PRODUCTS AS P INNER JOIN CATEGORIES AS C ON P.CategoryID = C.CategoryID WHERE C.CategoryID =@CAT ALTER PROCEDURE CONSULTA9 AS SELECT ProductName, UnitPrice, UnitsinStock, C.CategoryID, Discontinued FROM PRODUCTS AS P INNER JOIN CATEGORIES AS C ON P.CategoryID = C.CategoryID Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 42 c) CDIGO EN VISUAL: Imports System.Data.SqlClient Public Class TERCERO Private Sub RadioButton1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Checked Then Dim datos As New SqlDataAdapter("CONSULTA6", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) End If End Sub Private Sub RadioButton2_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton2.CheckedChanged If RadioButton2.Checked Then Dim datos As New SqlDataAdapter("CONSULTA7", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) End If End Sub Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = ChrW(13) Then If RadioButton3.Checked Then Dim datos As New SqlDataAdapter("CONSULTA8", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@CAT", SqlDbType.Int).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) End If End If End Sub Private Sub RadioButton4_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton4.CheckedChanged If RadioButton4.Checked Then Dim datos As New SqlDataAdapter("CONSULTA19", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) End If End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 43 d) PANTALLAS: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 44 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 45 4. COLOCAR UN OBJETO MONTHCALENDAR, UN DATAGRIDVIEW Y UN TEXTBOX (SER TEMPORAL, UNA VEZ SE IMPLEMENTE EL FORMULARIO, SE ELIMINAR) El GridView debe mostrar: OrderId, OrderDate, ProductName, UnitPrice, Quantity. Al seleccionar una fecha, automticamente se debe filtrar el DatGridView por el campo OrderDate, se debe configurar el MonthCalendar, para que la fecha inicie el 01/01/1996 y finalice el 31/12/1997 (fechas del campo OrderDate de la Tabla Orders). a) DISEO: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 46 b) CDIGO SQL: c) CDIGO VISUAL: CREATE PROCEDURE CONSULTA10 @FECHA DATETIME AS SELECT O.OrderId, OrderDate, ProductName, P.UnitPrice, Quantity FROM Orders AS O INNER JOIN [Order Details] AS OD ON O.OrderID = OD.OrderID INNER JOIN Products AS P ON OD.ProductID= P.ProductID WHERE O.OrderDate = @FECHA Imports System.Data.SqlClient Public Class CUARTO Private Sub MonthCalendar1_DateSelected(sender As Object, e As System.Windows.Forms.DateRangeEventArgs) Handles MonthCalendar1.DateSelected TextBox1.Text = CStr(MonthCalendar1.SelectionStart) End Sub Private Sub MonthCalendar1_DateChanged(sender As System.Object, e As System.Windows.Forms.DateRangeEventArgs) Handles MonthCalendar1.DateChanged Dim datos As New SqlDataAdapter("CONSULTA10", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@FECHA", SqlDbType.DateTimeOffset).Value = MonthCalendar1.SelectionStart Dim ds As New Data.DataSet datos.Fill(ds, "p") DataGridView1.DataSource = ds.Tables(0) End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 47 d) PANTALLAS: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 48 II. RELACIONES DE LAS TABLAS EN VISUAL: En la base de datos Northwind podemos observar que existen tablas relacionadas y que de algunas de ellas pasa su clave principal como clave fornea; esto permite que podamos realizar aplicaciones bajo el mismo concepto de relacin; en la siguiente prctica implementaremos ejercicios de este tipo; en muchos casos ser necesaria la implementacin de dos o ms procedimientos almacenados en la Base de Datos Northwind. PRCTICA IV 1. MOSTRAR CATEGORA, NOMBRE DE LA CATEGORA Y DESCRIPCIN DE LOS PRODUCTOS, A LA VEZ MOSTRAR TODOS LOS PRODUCTOS QUE PERTENECEN A CIERTA CATEGORA (SE ELEGIR MEDIANTE UN CLIC DE QU CATEGORA DESEAMOS VER LOS PRODUCTOS): Cdigo SQL: Mostrar todas las categoras: create procedure QUERY14 as select categoryid, categoryname, description from Categories Mostrar productos de una determinada categora: create procedure QUERY14i @cat int as select productid, productname, unitprice, c.categoryid from products as p inner join Categories as c on p.CategoryID = c.CategoryID where p.CategoryID = @cat Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 49 Cdigo en visual: Public Class Form14 Private Sub Form14_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim datos As New SqlDataAdapter("QUERY14", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.Fill(ds, "prod1") dgv_cab.DataSource = ds.Tables(0) End Sub Private Sub dgv_cab_CellEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_cab.CellEnter Dim datos As New SqlDataAdapter("QUERY14i", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@cat", SqlDbType.Int).Value = dgv_cab.Rows(e.RowIndex).Cells(0).Value datos.Fill(ds, "prod2") dgv_det.DataSource = ds.Tables(0) End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 50 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 51 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 52 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 53 2. MOSTRAR LAS RDENES REALIZADAS, LUEGO MOSTRAR LOS DETALLES DE CIERTA ORDEN (SE SELECCIONAR LA ORDEN PARA VER LOS DETALLES): Cdigo SQL: Mostrar todas las rdenes: CREATE PROCEDURE QUERY15 AS SELECT OrdERID, ORDERDATE, FREIGHT FROM Orders Mostrar detalles de una determinada orden: CREATE PROCEDURE QUERY15i @IDE INT AS SELECT OD.ORDERID, O.ORDERDATE, OD.PRODUCTID, P.PRODUCTNAME, P.UNITPRICE, Quantity FROM Orders AS O INNER JOIN [Order Details] AS OD ON O.OrderID = OD.OrderID INNER JOIN Products AS P ON OD.ProductID = P.ProductID WHERE O.OrderID = @IDE Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 54 Cdigo en Visual: Imports System.Data.SqlClient Public Class Form15 Private Sub Form15_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim datos As New SqlDataAdapter("QUERY15", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.Fill(ds, "prod1") dgv_cab.DataSource = ds.Tables(0) End Sub Private Sub dgv_cab_CellEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_cab.CellEnter Dim datos As New SqlDataAdapter("QUERY15i", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@IDE", SqlDbType.Int).Value = dgv_cab.Rows(e.RowIndex).Cells(0).Value datos.Fill(ds, "prod2") dgv_det.DataSource = ds.Tables(0) End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 55 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 56 3. MOSTRAR LA FOTO DE LOS EMPLEADOS, SE MOSTRAR LA RELACIN DE EMPLEADOS Y SE SELECCIONAR ALGUNO: Cdigo SQL: Cdigo en Visual: Mostrar la relacin de empleados: CREATE PROCEDURE QUERY16 AS SELECT EmployeeID , LastName , FirstName FROM Employees Mostrar un slo empleado, utilizamos un parmetro: CREATE PROCEDURE QUERY16i @ID INT AS SELECT LastName FROM Employees WHERE EMPLOYEEID = @ID Imports System.Data.SqlClient Public Class Form16 Private Sub Form16_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim datos As New SqlDataAdapter("QUERY16", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.Fill(ds, "QUERY16") dgv_cab.DataSource = ds.Tables(0) End Sub Private Sub dgv_cab_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_cab.CellContentClick Dim datos As New SqlDataAdapter("QUERY16i", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim index As Integer index = dgv_cab.Rows(e.RowIndex).Cells(0).Value datos.SelectCommand.Parameters.Add("@ID", SqlDbType.Int).Value = index datos.Fill(ds, "QUERY16i") PictureBox1.Image = Image.FromFile("C:\Documents and Settings\IRIS NOHELY\Escritorio\imag msica\n_n\" + CStr(index) + ".jpg") End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 57 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 58 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 59 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 60 4. MOSTRAR LAS RDENES REALIZADAS POR CIERTO EMPLEADO, SE PRESENTAR LA RELACIN DE EMPLEADOS: Cdigo SQL: Mostrar la relacin de empleados: CREATE PROCEDURE QUERY17 AS SELECT EmployeeID , LastName , FirstName FROM Employees Mostrar las rdenes realizadas por un empleado: CREATE PROC QUERY17i @IDE INT AS SELECT OrderID , OrderDate , E.EmployeeID FROM Employees AS E INNER JOIN Orders AS O ON E.EmployeeID = O.EmployeeID WHERE E.EmployeeID = @IDE Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 61 Cdigo en Visual: Imports System.Data.SqlClient Public Class Form17 Private Sub Form17_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim datos As New SqlDataAdapter("QUERY17", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.Fill(ds, "QUERY17") dgv_cab.DataSource = ds.Tables(0) End Sub Private Sub dgv_cab_CellEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_cab.CellEnter Dim datos As New SqlDataAdapter("QUERY17i", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@IDE", SqlDbType.Int).Value = dgv_cab.Rows(e.RowIndex).Cells(0).Value datos.Fill(ds, "QUERY17i") dgv_det.DataSource = ds.Tables(0) Label2.Text = dgv_cab.Rows(e.RowIndex).Cells(1).Value + " " + dgv_cab.Rows(e.RowIndex).Cells(2).Value End Sub End Class Nota: para poder ir a un nuevo datagried view a partir de uno debemos tener en cuenta la siguiente sentencia: Datagriedview1.Rows(valor).Cells(valor).Value En donde: Rows hace referencia a la fila. Cells hace referencia a la columna. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 62 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 63 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 64 5. MOSTRAR LA RELACIN DE EMPLEADOS, LAS RDENES QUE REALIZ UN DETERMINADO EMPLEADO Y LOS PRODUCTOS DE DICHA ORDEN: Cdigo SQL: Mostrar la relacin de empleados: CREATE PROCEDURE QUERY17 AS SELECT EmployeeID , LastName , FirstName FROM Employees Mostrar las rdenes realizadas por un empleado: CREATE PROC QUERY17i @IDE INT AS SELECT OrderID , OrderDate , E.EmployeeID FROM Employees AS E INNER JOIN Orders AS O ON E.EmployeeID = O.EmployeeID WHERE E.EmployeeID = @IDE Mostrar los productos y detalles de dicha orden: CREATE PROCEDURE QUERY17ii @iden int as select o.orderid, p.productid, p.productname, p.unitprice, quantity from orders as o inner join [Order Details] as od on o.orderid= od.orderid inner join products as p on od.productid = p.productid where od.orderid= @iden Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 65 Cdigo en Visual: Imports System.Data.SqlClient Public Class Form18 Private Sub Form18_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim datos As New SqlDataAdapter("QUERY17", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.Fill(ds, "QUERY17") dgv_cab.DataSource = ds.Tables(0) End Sub Private Sub dgv_cab_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_cab.CellContentClick Dim datos As New SqlDataAdapter("QUERY17i", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@IDE", SqlDbType.Int).Value = dgv_cab.Rows(e.RowIndex).Cells(0).Value datos.Fill(ds, "QUERY17i") dgv_det.DataSource = ds.Tables(0) Label2.Text = dgv_cab.Rows(e.RowIndex).Cells(1).Value + " " + dgv_cab.Rows(e.RowIndex).Cells(2).Value End Sub Private Sub dgv_det_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_det.CellContentClick Dim datos As New SqlDataAdapter("QUERY17ii", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@iden", SqlDbType.Int).Value = dgv_det.Rows(e.RowIndex).Cells(0).Value datos.Fill(ds, "QUERY17ii") DataGridView1.DataSource = ds.Tables(0) Label4.Text = dgv_det.Rows(e.RowIndex).Cells(0).Value End Sub Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 66 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 67 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 68 III. FORMULARIOS HEREDADOS Visual Studio 2010 nos permite crear formularios que hereden las caractersticas que puede poseer otro formulario; a este tipo de formularios se les denomina Formularios Heredados. Para crear este tipo de formularios debemos seguir los siguientes pasos: Crear el formulario plantilla con un diseo determinado: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 69 Clic derecho en el nombre del proyecto para poder agregar un nuevo elemento; en el explorador de soluciones: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 70 Aparecer la siguiente ventana; en ella debemos elegir la opcin Windows Form, en la opcin Elementos comunes: Tendremos las siguientes opciones a elegir; en este caso seleccionaremos Formulario Heredado: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 71 Aparecer la ventana Selector de Herencia; aqu debemos elegir de qu formulario deseamos heredar las caractersticas (para el ejemplo ser el formulario renombrado anteriormente como Plantilla): Finalmente, tenemos nuestro nuevo formulario Heredado: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 72 PRCTICA V Crear una tabla en la base de datos Northwind llamada Personas, la tabla debe contener los siguientes atributos y sus respectivos tipos de datos: ATRIBUTO TIPO DE DATO REFERENCIA Idperso (clave primaria) Char (8) Cdigo nomperso Varchar (30) Nombres apeperso Varchar (40) Apellidos email Varchar (50) Correo Electrnico genero Char (1) Gnero estadocivil Char (1) Estado civil fechanac datetime Fecha de Nacimiento 1. LLENAR DATOS EN LA TABLA PERSONAS, MEDIANTE UNA VENTANA HECHA EN VISUAL: Cdigo SQL: Stored Procedure: create procedure insertar @id char(10) , @NOMBRE VARCHAR(30) , @APELLIDOS VARCHAR(40) , @CORREO VARCHAR(50) , @GEN CHAR(1) , @ESTCIV CHAR(1), @NAC DATETIME as insert into personas VALUES (@id, @NOMBRE,@APELLIDOS, @CORREO, @GEN , @ESTCIV, @NAC) SELECT * FROM personas Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 73 Cdigo en Visual: Imports System.Data.SqlClient Public Class Form19 Sub LIMPIAR_INGRESO() ' SUBPROGRAMA QUE VA A LIMPIAR TDAS LAS CAJAS 'For Each objeto In Me.Controls ' If TypeOf objeto Is TextBox Then ' objeto.text = Space(0) ' End If 'Next TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" TextBox7.Text = "" TextBox1.Focus() End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim insert_per As New SqlCommand("insertar", conex) Dim respuesta As Integer ' si es 1 se ejecuta si es 2 no se ejecuta el insert insert_per.CommandType = CommandType.StoredProcedure insert_per.Parameters.Add("@id", SqlDbType.Char, 8).Value = TextBox1.Text insert_per.Parameters.Add("@N", SqlDbType.VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@A", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@C", SqlDbType.VarChar, 50).Value = TextBox4.Text insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = TextBox5.Text insert_per.Parameters.Add("@EC", SqlDbType.Char, 1).Value = TextBox6.Text insert_per.Parameters.Add("@FN", SqlDbType.DateTime).Value = TextBox7.Text conex.Open() respuesta = insert_per.ExecuteNonQuery ' devuelve el numero de filas o registros afectados. If respuesta = 1 Then MessageBox.Show("SE GRAB EL REGISTRO") LIMPIAR_INGRESO() Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 74 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 75 2. MODIFICAR EL MODO DE INGRESO DE LOS DATOS GNERO Y ESTADO CIVIL DEL EJERCICIO 1: En el caso de Gnero se deber ingresar mediante un clic en una opcin de un Radiobutton. Para Estado Civil se seleccionar de una lista desplegable la opcin que deseemos. Cdigo SQL: Stored Procedure: create procedure insertar @id char(10) , @NOMBRE VARCHAR(30) , @APELLIDOS VARCHAR(40) , @CORREO VARCHAR(50) , @GEN CHAR(1) , @ESTCIV CHAR(1), @NAC DATETIME as insert into personas VALUES (@id, @NOMBRE,@APELLIDOS, @CORREO, @GEN , @ESTCIV, @NAC) SELECT * FROM personas Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 76 Cdigo en Visual: Imports System.Data.SqlClient Public Class Form20 Sub LIMPIAR_INGRESO() ' SUBPROGRAMA QUE VA A LIMPIAR TDAS LAS CAJAS TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox7.Text = "" TextBox1.Focus() End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim insert_per As New SqlCommand("insertar", conex) Dim respuesta As Integer ' si es 1 se ejecuta si es 2 no se ejecuta el insert Dim genero As Char If RadioButton1.Checked Then genero = "F" Else genero = "M" End If Dim SC As Integer Dim ESTADO As Char SC = ListBox1.SelectedIndex Select Case SC Case 0 ESTADO = "S" Case 1 ESTADO = "C" Case 2 ESTADO = "V" Case 3 ESTADO = "D" End Select insert_per.CommandType = CommandType.StoredProcedure insert_per.Parameters.Add("@id", SqlDbType.Char, 8).Value = TextBox1.Text insert_per.Parameters.Add("@N", SqlDbType.VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@A", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@C", SqlDbType.VarChar, 50).Value = TextBox4.Text insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = genero insert_per.Parameters.Add("@EC", SqlDbType.Char, 1).Value = ESTADO insert_per.Parameters.Add("@FN", SqlDbType.DateTime).Value = TextBox7.Text conex.Open() respuesta = insert_per.ExecuteNonQuery If respuesta = 1 Then MessageBox.Show("SE GRAB EL REGISTRO") LIMPIAR_INGRESO() End If End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 77 3. BORRAR TODOS LOS REGISTRO DE LA TABLA PERSONAS PARA PODER MODIFICARLA, LA CLAVE PRINCIPAL IDPERSO, DEBER SER UN ENTERO AUTOINCREMENTABLE (SE INICIALIZA EN 1 Y EL INCREMENTO ES UNA UNIDAD). ATRIBUTO TIPO DE DATO REFERENCIA Idperso (clave primaria) int Cdigo nomperso Varchar (30) Nombres apeperso Varchar (40) Apellidos email Varchar (50) Correo Electrnico genero Char (1) Gnero estadocivil Char (1) Estado civil fechanac datetime Fecha de Nacimiento Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 78 NOTA: Si al querer modificar algn atributo de alguna tabla nos aparece un mensaje de error, debemos desactivar la opcin Impedir guardar cambios que requieran volver a crear tablas. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 79 Para solucionar el inconveniente, antes descrito; seguiremos los siguientes pasos: Clic en el men Herramientas, luego elegir la opcin Opciones: Aparecer la siguiente ventana: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 80 Elegir la opcin Designers y desactivar la opcin Impedir cambios que requieran volver a crear tablas: 4. INGRESAR REGISTROS EN LA NUEVA TABLA PERSONAS. Cdigo SQL: Stored Procedure INSERTAR modificado: alter procedure insertar @N VARCHAR(30) , @A VARCHAR(40) , @C VARCHAR(50) , @G CHAR(1) , @Ec CHAR(1), @FN DATETIME as insert into personas (nomperso, apeperso, email, genero, estadocivil, fechanac) VALUES (@N,@A, @C, @G , @EC, @FN) Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 81 Cdigo en Visual: Imports System.Data.SqlClient Public Class Form21 Sub LIMPIAR_INGRESO() TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox7.Text = "" End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim insert_per As New SqlCommand("insertar", conex) Dim respuesta As Integer Dim SC As Integer Dim ESTADO As Char Dim genero As Char If RadioButton1.Checked Then genero = "F" Else genero = "M" End If SC = ListBox1.SelectedIndex Select Case SC Case 0 ESTADO = "S" Case 1 ESTADO = "C" Case 2 ESTADO = "V" Case 3 ESTADO = "D" End Select insert_per.CommandType = CommandType.StoredProcedure insert_per.Parameters.Add("@N", SqlDbType.VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@A", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@C", SqlDbType.VarChar, 50).Value = TextBox4.Text insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = genero insert_per.Parameters.Add("@EC", SqlDbType.Char, 1).Value = ESTADO insert_per.Parameters.Add("@FN", SqlDbType.DateTime).Value = TextBox7.Text conex.Open() respuesta = insert_per.ExecuteNonQuery conex.Close() If respuesta = 1 Then MessageBox.Show("SE GRAB EL REGISTRO") LIMPIAR_INGRESO() End If End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 82 5. LLENAR REGISTROS DE LA TABLA PERSONAS Y MOSTRARLOS: Cdigo SQL: alter procedure insertar @N VARCHAR(30) , @A VARCHAR(40) , @C VARCHAR(50) , @G CHAR(1) , @Ec CHAR(1), @FN DATETIME as insert into personas (nomperso, apeperso, email, genero, estadocivil, fechanac) VALUES (@N,@A, @C, @G , @EC, @FN) Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 83 Cdigo en Visual: Imports System.Data.SqlClient ublic Class Form22 Sub cargar_datos() Dim datos As New SqlDataAdapter("select * from personas", conex) Dim ds As New Data.DataSet datos.Fill(ds, "prod1") DataGridView1.DataSource = ds.Tables(0) End Sub Sub LIMPIAR_INGRESO() ' SUBPROGRAMA QUE VA A LIMPIAR TDAS LAS CAJAS TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox7.Text = "" End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim insert_per As New SqlCommand("insertar", conex) Dim respuesta As Integer ' si es 1 se ejecuta si es 2 no se ejecuta el insert Dim SC As Integer Dim ESTADO As Char Dim genero As Char If RadioButton1.Checked Then genero = "F" Else genero = "M" End If SC = ListBox1.SelectedIndex Select Case SC Case 0 ESTADO = "S" Case 1 ESTADO = "C" Case 2 ESTADO = "V" Case 3 ESTADO = "D" End Select insert_per.CommandType = CommandType.StoredProcedure insert_per.Parameters.Add("@N", SqlDbType.VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@A", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@C", SqlDbType.VarChar, 50).Value = TextBox4.Text insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = genero insert_per.Parameters.Add("@EC", SqlDbType.Char, 1).Value = ESTADO insert_per.Parameters.Add("@FN", SqlDbType.DateTime).Value = TextBox7.Text conex.Open() respuesta = insert_per.ExecuteNonQuery ' devuelve el numero de filas o registros afectados. conex.Close() If respuesta = 1 Then MessageBox.Show("SE GRAB EL REGISTRO") LIMPIAR_INGRESO() cargar_datos() End If End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 84 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 85 6. CREAR LAS SIGUIENTES TABLAS: LIBROS AUTOR EDITORIAL *Llenar con datos las tablas AUTOR y EDITORIAL. ATRIBUTO TIPO DE DATO REFERENCIA IdLibro int Cdigo Titulo Varchar (30) Ttulo del Libro IdEditorial int Cdigo de la Editorial Edicion Char (10) Nmero de Edicin Ao_Publicacion datetime Ao de Publicacin IdAutor int Cdigo del Autor ATRIBUTO TIPO DE DATO REFERENCIA IdAutor int Cdigo Nombre Varchar (50) Nombre del Autor Fecha_Nac datetime Fecha de Nacimiento Pais Char (10) Pas de Origen ATRIBUTO TIPO DE DATO REFERENCIA IdEditorial int Cdigo Nombre Varchar (50) Nombre de la Editorial Pais VarChar (20) Pas en donde funciona la Editorial Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 86 CREAR UN FORMULARIO QUE PERMITA REGISTRAR LIBROS, SE MOSTRAR LOS AUTORES Y LAS EDITORIALES EN LISTAS DESPLEGABLES DE LAS QUE SE OBTENDR EL CDIGO DE AUTOR Y EDITORIAL RESPECTIVAMENTE: Cdigo SQL: Cdigo en Visual: CREATE PROCEDURE libro @t VARCHAR(30,@edit int,@ed CHAR(10),@ap char (10), @idau int as insert into libros (titulo, IDEDITORIAL, edicion, ao_publicacion, IDAUTOR) VALUES (@t,@edit, @ed, @ap , @idau) Imports System.Data.SqlClient Public Class Form23 Sub LIMPIAR_INGRESO() End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim insert_per As New SqlCommand("libro", conex) Dim respuesta As Integer ' si es 1 se ejecuta si es 2 no se ejecuta el insert insert_per.CommandType = CommandType.StoredProcedure insert_per.Parameters.Add("@t", SqlDbType.VarChar, 30).Value = TextBox1.Text insert_per.Parameters.Add("@ed", SqlDbType.Char, 10).Value = TextBox3.Text insert_per.Parameters.Add("@ap", SqlDbType.Char, 10).Value = TextBox4.Text insert_per.Parameters.Add("@edit", SqlDbType.Int).Value = ListBox1.SelectedValue insert_per.Parameters.Add("@idau", SqlDbType.Int).Value = ListBox2.SelectedValue conex.Open() respuesta = insert_per.ExecuteNonQuery conex.Close() If respuesta = 1 Then MessageBox.Show("SE REGISTR") LIMPIAR_INGRESO() End If End Sub Private Sub Form23_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: esta lnea de cdigo carga datos en la tabla 'PAIDataSet5.EDITORIAL' Puede moverla o quitarla segn sea necesario. Me.EDITORIALTableAdapter.Fill(Me.PAIDataSet5.EDITORIAL) 'TODO: esta lnea de cdigo carga datos en la tabla 'PAIDataSet4.AUTOR' Puede moverla o quitarla segn sea necesario. Me.AUTORTableAdapter.Fill(Me.PAIDataSet4.AUTOR) End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 87 CONFIGURAMOS LA CONEXIN PARA LA LISTA DESPLEGABLE DE AUTORES: Clic en el tringulo desplegable de la esquina superior derecha del listbox, aparecer la siguiente ventana: Clic en la opcin Agregar origen de datos del proyecto: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 88 Clic en el botn Siguiente: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 89 Clic en el botn Nueva conexin: Probamos la conexin: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 90 Se mostrar la siguiente pantalla: Luego cargarn los datos y seleccionaremos slo los que vamos a utilizar, en este caso es la tabla AUTOR y de ella slo necesitaremos los atributos IdAutor y Nombre, luego clic en finalizar: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 91 Similar procedimiento se sigue para la conexin del listbox de Editoriales, con la salvedad que se elige los datos de la tabla Editoriales. Finalmente, las pantallas del nuevo programa: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 92 PRCTICA VI 1. MOSTRAR EN UN FORMULARIO INFORMACIN DE LAS CATEGORAS DE LA BASE DE DATOS NORTHWIND; SE PERMITIR AGREGAR OTRAS CATEGORAS; MS NO ELIMINARLAS. Creamos el origen de datos, esta ventana la podemos encontrar cerca de la ventana herramientas o al presionar las siguiente combinacin Mayus+Alt+D: Nota: Un Origen de datos se crea para todo el proyecto. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 93 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 94 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 95 Diseamos el Formulario; para ello debemos seguir los siguientes pasos: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 96 Luego arrastramos la lista Categoras hacia el formulario; se mostrar lo siguiente: LOS NOMBRES DE LA CAJA DE TEXTO VARIAN DE ACUERDO AL TIPO DE DATO QUE EN SU EJECUCIN CONTENDR: LA CAJA DE TEXTO QUE CORRESPONDE AL CDIGO DE CATEGORA TIENE POR NOMBRE CategoryIdTextBox. LA CAJA DE TEXTO QUE CORRESPONDE AL NOMBRE DE CATEGORA TIENE POR NOMBRE CategoryNameTextBox. LA CAJA DE TEXTO QUE CORRESPONDE A LA DESCRIPCON TIENE POR NOMBRE DescriptionTextBox. La caja de texto que corresponde al Cdigo de la Categora ser modificada, pues es clave principal y nosotros no podemos modificarla; es entero autoincrementable. Modificamos la propiedad READ ONLY, por defecto el valor de esta propiedad es false, la cambiamos a true. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 97 Para agregar una nueva categora debemos hacer clic en el siguiente botn: Escribiremos los datos que nos solicitan, y para guardar dicha informacin debemos hacer clic en el botn: Entonces tendremos una nueva categora: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 98 2. MOSTRAR TODOS LOS PRODUCTOS DE UNA CATEGORA: Agregaremos un nuevo origen de datos; similar al ejercicio 1; para el presente ejemplo elegiremos la tabla categoras. El cdigo visual que utilizaremos es el siguiente: Imports System.Data.SqlClient Public Class Form26 Sub cargar_datos() Dim datos As New SqlDataAdapter("select productname, unitprice, unitsinstock, categoryid from products where categoryid=@cate", conex) datos.SelectCommand.Parameters.Add("@cate", SqlDbType.Int).Value = CInt(CategoryIDTextBox.Text) Dim ds As New Data.DataSet datos.Fill(ds, "detalle") DataGridView1.DataSource = ds.Tables("detalle") End Sub Private Sub CategoriesBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Me.Validate() Me.CategoriesBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.NorthwindDataSet11) End Sub Private Sub CategoriesBindingNavigatorSaveItem_Click_1(sender As System.Object, e As System.EventArgs) Me.Validate() Me.CategoriesBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.NorthwindDataSet11) End Sub Private Sub Form26_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.CategoriesTableAdapter.Fill(Me.NorthwindDataSet11.Categories) cargar_datos() End Sub Private Sub BindingNavigatorMoveNextItem_Click(sender As System.Object, e As System.EventArgs) Handles BindingNavigatorMoveNextItem.Click, BindingNavigatorMoveLastItem.Click, BindingNavigatorMovePreviousItem.Click, BindingNavigatorMoveFirstItem.Click cargar_datos() End Sub Private Sub CategoryIDTextBox_TextChanged(sender As System.Object, e As System.EventArgs) Handles CategoryIDTextBox.TextChanged cargar_datos() End Sub Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 99 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 100 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 101 3. MOSTRAR LOS DETALLES DE UN PRODUCTO INGRESADO (CDIGO DEL PRODUCTO) POR TECLADO (NO UTILIZAR STORED PROCEDURE): Cdigo Visual: Imports System.Data.SqlClient Public Class Form27 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim comando As New SqlCommand("select productname, unitprice, unitsinstock, categoryid from products where productid= @id", conex) comando.Parameters.Add("@id", SqlDbType.Int).Value = CInt(TextBox1.Text) Dim registro As SqlDataReader conex.Open() registro = comando.ExecuteReader() ' se utiliza cuando es una consulta el executereader trae una variable y la alamcena en registro registro.Read() If registro.HasRows = True Then ' utilizado para contar el nmero de filas (registros) existentes TextBox2.Text = registro.Item(0) ' referencia al primer campo que se desea mostrar (productname) TextBox3.Text = registro.Item(1) ' referencia al segundo campo que se desea mostrar (unitprice) TextBox4.Text = registro.Item(2) ' referencia al tercer campo que se desea mostrar (unitsinstock) TextBox5.Text = registro.Item(3) ' referencia al cuarto campo que se desea mostrar (categoryid) Else MessageBox.Show("NO EXISTE ESTE PRODUCTO!") End If registro.Close() conex.Close() End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 102 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 103 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 104 4. MOSTRAR EN UN MENSAJE EL NOMBRE DEL PRODUCTO, PRECIO Y STOCK DE LOS PRODUCTOS DE UN DETERMINADO PROVEEDOR (NO USAR STORED PROCEDURE, EL CDIGO DEL PROVEEDOR SER INGRESADO POR TECLADO): Cdigo Visual: Imports System.Data.SqlClient Public Class Form28 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim comando As New SqlCommand("select productname, unitprice, unitsinstock from products where supplierid= @id", conex) comando.Parameters.Add("@id", SqlDbType.Int).Value = CInt(TextBox1.Text) Dim registro As SqlDataReader conex.Open() registro = comando.ExecuteReader() Do While registro.Read() MessageBox.Show(registro.Item(0) + " - " + CStr(registro.Item(1)) + " - " + CStr(registro.Item(2))) Loop registro.Close() conex.Close() End Sub Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 105 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 106 5. MOSTRAR LOS PRODUCTOS DE UN PROVEEDOR EN UNA LISTA; EL CDIGO DEL PROVEEDOR SER INGRESADO POR TECLADO (NO UTILIZAR STORED PROCEDURE): Cdigo Visual: Imports System.Data.SqlClient Public Class Form29 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim comando As New SqlCommand("select productname, unitprice, unitsinstock from products where supplierid= @id", conex) comando.Parameters.Add("@id", SqlDbType.Int).Value = CInt(TextBox1.Text) Dim registro As SqlDataReader conex.Open() registro = comando.ExecuteReader() Do While registro.Read() ListBox1.Items.Add(registro.Item(0) + " - " + CStr(registro.Item(1)) + " - " + CStr(registro.Item(2))) Loop registro.Close() conex.Close() End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 107 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 108 6. CREAR UN FORMULARIO QUE PERMITA INGRESAR UN USUARIO Y SU CLAVE: Para resolver este ejercicio necesitamos un formulario especial, denominado Formulario de Inicio de Sesin. Para obtener este formulario debemos seguir los siguientes pasos: Clic derecho sobre el nombre del proyecto, en el Explorador de Soluciones, para poder agregar un nuevo formulario: Nos aparece la siguiente ventana; elegimos la opcin Windows Form, se muestran las siguientes opciones: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 109 Elegimos la opcin Formulario de Inicio de Sesin: Cdigo Visual: Imports System.Data.SqlClient Public Class LoginForm30 Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Dim QUERY As New SqlCommand("SELECT COUNT(*) FROM USUARIO WHERE IDUSUARIO= @U AND PASSWORD = @P", conex) QUERY.Parameters.Add("@U", SqlDbType.VarChar, 20).Value = UsernameTextBox.Text QUERY.Parameters.Add("@P", SqlDbType.VarChar, 20).Value = PasswordTextBox.Text conex.Open() Dim VALOR As Integer VALOR = QUERY.ExecuteScalar ' ES UN SLO VALOR conex.Close() If VALOR = 1 Then Form1.Show() Me.Hide() Else MessageBox.Show("Usuario y/o Clave incorrectas") UsernameTextBox.Text = " " PasswordTextBox.Text = " " UsernameTextBox.Focus() End If End Sub Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click Me.Close() End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 110 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 111 7. PERMITIR CAMBIAR DE CLAVE AL USUARIO EN OTRO FORMULARIO: Cdigo Visual: Imports System.Data.SqlClient Public Class Form31 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click If TextBox3.Text = TextBox4.Text Then Dim comando As New SqlCommand("update usuario set password = @NUEVAC where IDusuario = @USER and password=@CA", conex) comando.Parameters.Add("@NUEVAC", SqlDbType.VarChar, 20).Value = TextBox3.Text comando.Parameters.Add("@USER", SqlDbType.VarChar, 20).Value = TextBox1.Text comando.Parameters.Add("@CA", SqlDbType.VarChar, 20).Value = TextBox2.Text conex.Open() comando.ExecuteNonQuery() conex.Close() End If End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 112 IV. REPORTING SERVICES: Visual Studio nos permite crear reportes con datos tomados de una base de datos. Los reportes son consultas que deben ser plasmadas en un documento para su lectura, comprensin e interpretacin. Para agregar un informe, en Visual Studio 2010 debemos seguir los siguientes pasos: Clic derecho sobre el nombre del proyecto (Explorador de Soluciones) y agregar un nuevo elemento: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 113 Clic en la opcin Reporting y elegir Informe: Finalmente la ventana para desarrollar le informe est creada: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 114 Una vez creado el informe; debemos crear su origen de datos; es decir de dnde deseamos obtener la informacin: Clic en la pestaa Nuevo y elegir Nuevo Origen de Datos: Se mostrar la ventana Propiedades del Conjunto de Datos, clic en el botn Nuevo: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 115 Aparece la ventana Asistente para la Configuracin de Datos, clic en Siguiente:
Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 116 Clic en el botn Nueva Conexin Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 117 En esta ventana escribimos el nombre del servidos y la base de datos a la que deseamos conectarnos: Probamos la conexin: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 118 La siguiente ventana demuestra que est cargando los datos para poder escoger el correcto: Elegimos el procedimiento almacenado correcto: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 119 Podemos observar el entorno de dearrollo de un Informe; aqu podemos usar algunas herramientas para mostrar la informacin: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 120 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 121 Debemos crear un nuevo formulario, en este incluiremos el reporte, mediante la herramienta Reporte Viewer Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 122 La vista del informe: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 123 Podemos exportar el informe a Excel, PDF o Word: Elegimos la ruta e, donde deseamos guardar el informe: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 124 Ahora podemos visualizar el informe desde Ms. Word: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 125 PRCTICA VII 1. MOSTRAR LAS RDENES REALIZADAS POR UN EMPLEADO: Cdigo SQL: Cdigo en Visual: create procedure sp1 @id int as select e.employeeid, orderid, orderdate, customerid from Employees as e inner join Orders as o on e.EmployeeID = o.EmployeeID where e.EmployeeID = @id Imports System.Data.SqlClient Public Class Form1 Private Sub EmployeesBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles EmployeesBindingNavigatorSaveItem.Click Me.Validate() Me.EmployeesBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.NorthwindDataSet) End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.EmployeesTableAdapter.Fill(Me.NorthwindDataSet.Employees) End Sub Private Sub TabPage2_Click(sender As System.Object, e As System.EventArgs) Handles TabPage2.Click End Sub Private Sub EmployeeIDTextBox_TextChanged(sender As System.Object, e As System.EventArgs) Handles EmployeeIDTextBox.TextChanged Dim datos As New SqlDataAdapter("sp1", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@id", SqlDbType.Int).Value = EmployeeIDTextBox.Text datos.Fill(ds, "s") DataGridView1.DataSource = ds.Tables(0) End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 126 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 127 2. MOSTRAR EL TOTAL DE RDENES REALIZADAS POR UN EMPLEADO: Cdigo SQL: Cdigo Visual: create procedure sp2 @y int as select distinct companyname, YEAR(orderdate) as ao, COUNT(*) as total from Customers as c inner join orders as o on c.CustomerID = o.CustomerID group by CompanyName , YEAR(OrderDate) having year(orderdate)=@y Public Class Form2 Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.sp2TableAdapter.Fill(Me.PAIDataSet.sp2, 1996) Me.ReportViewer1.RefreshReport() End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Me.sp2TableAdapter.Fill(Me.PAIDataSet.sp2, ComboBox1.SelectedValue) Me.ReportViewer1.RefreshReport() End Sub Private Sub ReportViewer1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReportViewer1.Load End Sub Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged Me.sp2TableAdapter.Fill(Me.PAIDataSet.sp2, ComboBox1.SelectedValue) Me.ReportViewer1.RefreshReport() End Sub Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 128 Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 129 CREAR UN SISTEMA DE CONTROL DE ASISTENCIA PARA LA XII- SEMANA SISTMICA 1. FORMULARIOS: MANTENIMIENTO DE INSTITUCIONES EDUCATIVAS: MANTENIMIENTO DE CONFERENCIAS: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 130 INGRESAR UN NUEVO PARTICIPANTE: CDIGO SQL: create procedure insertar @id char(10) , @ap VARCHAR(25) , @am VARCHAR(25) , @n VARCHAR(25) , @e CHAR(45) , @s CHAR(1), @ii int as insert into PARTICIPANTES VALUES (@id, @ap ,@am, @n, @e , @s, @ii) Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 131 Cdigo Visual: Imports System.Data.SqlClient Public Class NUEVOS_PARTICIPANTES Private Sub NUEVOS_PARTICIPANTES_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.INSTITUCIONESTableAdapter.Fill(Me.SEMANASISTEMICADataSet2.INSTITUCIONES) End Sub Sub LIMPIAR_INGRESO() TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox1.Focus() End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim datos As New SqlCommand("insertar", conex) Dim respuesta As Integer Dim genero As Integer If RadioButton1.Checked Then genero = 1 Else genero = 2 End If datos.CommandType = CommandType.StoredProcedure datos.Parameters.Add("@id", SqlDbType.Char, 10).Value = TextBox1.Text datos.Parameters.Add("@ap", SqlDbType.VarChar, 25).Value = TextBox2.Text datos.Parameters.Add("@am", SqlDbType.VarChar, 25).Value = TextBox3.Text datos.Parameters.Add("@n", SqlDbType.VarChar, 25).Value = TextBox4.Text datos.Parameters.Add("@e", SqlDbType.Char, 45).Value = TextBox5.Text datos.Parameters.Add("@s", SqlDbType.Char, 1).Value = genero datos.Parameters.Add("@ii", SqlDbType.Int).Value = ComboBox1.SelectedValue conex.Open() respuesta = datos.ExecuteNonQuery If respuesta = 1 Then MessageBox.Show("SE GRAB EL REGISTRO") LIMPIAR_INGRESO() End If Dim dat As New SqlDataAdapter("ver", conex) Dim ds As New Data.DataSet dat.SelectCommand.CommandType = CommandType.StoredProcedure dat.Fill(ds, "ver") DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub LinkLabel1_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked Buscar_Participantes.Show() End Sub Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 132 BUSCAR UN PARTICIPANTE: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 133 Cdigo SQL: Cdigo en Visual: Imports System.Data.SqlClient Public Class Buscar_Participantes Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If RadioButton1.Checked Then Dim datos As New SqlCommand("cod", conex) datos.CommandType = CommandType.StoredProcedure Dim dat As New SqlDataAdapter("cod", conex) Dim ds As New Data.DataSet dat.SelectCommand.CommandType = CommandType.StoredProcedure dat.SelectCommand.Parameters.Add("@id", SqlDbType.VarChar, 20).Value = TextBox1.Text dat.Fill(ds, "T") DataGridView1.DataSource = ds.Tables(0) Else Dim datos As New SqlCommand("apepaternito", conex) datos.CommandType = CommandType.StoredProcedure Dim dat As New SqlDataAdapter("apepaternito", conex) Dim ds As New Data.DataSet dat.SelectCommand.CommandType = CommandType.StoredProcedure dat.SelectCommand.Parameters.Add("@a", SqlDbType.VarChar, 25).Value = TextBox1.Text dat.Fill(ds, "T") DataGridView1.DataSource = ds.Tables(0) End If End Sub Bsqueda por cdigo: create procedure cod @id varchar(20) as select * from PARTICIPANTES where IdParticipante like @id+'%' Bsqueda por apellido: create procedure apepaternito @a varchar(25) as select * from PARTICIPANTES where apepat like @a+'%' Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 134 REGISTRAR ASISTENTES: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 135 Cdigo SQL: Stored procedure para registrar un asistente: create procedure reg @f datetime , @idp VARCHAR(10) , @idc int as insert into ASISTENCIA VALUES (@f, @idp ,@idc) Stored procedure para buscar a un participante y registrarlo: create procedure rr @text varchar (25) as select IdParticipante,ApePat,ApeMat,Nombres from PARTICIPANTES where ApePat like @text Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 136 Cdigo en Visual: Imports System.Data.SqlClient Public Class Asistencia Private Sub Asistencia_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.CONFERENCIASTableAdapter.Fill(Me.SEMANASISTEMICADataSet3.CONFERENCIAS) End Sub Sub registrar() Dim insert_per As New SqlCommand("reg", conex) Dim respuesta As Integer insert_per.CommandType = CommandType.StoredProcedure insert_per.Parameters.Add("@f", SqlDbType.DateTime).Value = DateTime.Now insert_per.Parameters.Add("@idp", SqlDbType.VarChar, 10).Value = TextBox1.Text insert_per.Parameters.Add("@idc", SqlDbType.Int).Value = ComboBox1.SelectedValue conex.Open() respuesta = insert_per.ExecuteNonQuery conex.Close() If respuesta = 1 Then MessageBox.Show("SE GRAB EL REGISTRO") End If Dim datos As New SqlDataAdapter("v", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@i", SqlDbType.Int).Value = ComboBox1.SelectedValue datos.Fill(ds, "i") DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = ChrW(13) Then registrar() End If End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Label4.Text = CStr(ComboBox1.Text) End Sub Private Sub TextBox2_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox2.TextChanged Dim datos As New SqlDataAdapter("rr", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@text", SqlDbType.VarChar, 25).Value = TextBox2.Text datos.Fill(ds, "i") DataGridView2.DataSource = ds.Tables(0) End Sub Private Sub DataGridView2_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView2.CellContentClick TextBox1.Text = DataGridView2.Rows(e.RowIndex).Cells(0).Value End Sub End Class Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 137 REPORTE DE ALUMNOS PARTICIPANTES, ORDENADOS ALFABTICAMENTE: Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 138 Cdigo SQL: REPORTE DE CONFERENCIAS DICTADAS: Cdigo SQL: alter procedure asist as select IdParticipante, ApePat+' '+ApeMat+' '+Nombres as Nombre, Email,IdInsti from PARTICIPANTES order by ApePat+ApeMat+Nombres create proc conf as select * from CONFERENCIAS order by NombreConfe Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIN APLICADA I S A L A Z A R C A C H O , I r i s N o h e l y Pgina 139 REPORTE DE ASISTENTES POR CONFERENCIA: Cdigo SQL: CREATE PROCEDURE PARTCONF @IDC INT AS SELECT P.IdParticipante,ApePat+' '+ApeMat+' '+Nombres as Nombre FROM PARTICIPANTES AS P INNER JOIN ASISTENCIA AS A ON P.IdParticipante = A.IdParticipante INNER JOIN CONFERENCIAS AS C ON A.IdConfe = C.IdConfe where C.IdConfe = @IDC