Visual 2010 sql server 2008

14,475 views
14,170 views

Published on

Published in: Education
3 Comments
9 Likes
Statistics
Notes
No Downloads
Views
Total views
14,475
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
2,132
Comments
3
Likes
9
Embeds 0
No embeds

No notes for slide

Visual 2010 sql server 2008

  1. 1. 20/12/2011UNC MANUAL DE PROGRAMACIÓN APLICADA I Programación Aplicada I | SALAZAR CACHO, Iris Nohely
  2. 2. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I I. BASES DE DATOS Y VISUAL BASIC Visual Basic no es un administrador de Bases de Datos, sólo utiliza un gestor de Bases de Datos, para nuestro caso será, Microsoft SQL Server 2008; para permitir la visualización de una manera más estética de los datos, también 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 Programación 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 colección de clases utilizada para tener acceso a una base de datos de SQL Server en el espacio administrado. .2. SqlConnection (Clase): Representa una conexión abierta con una base de datos de SQL Server. Esta clase no se puede heredar.SALAZAR CACHO, Iris Nohely Página 2
  3. 3. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I .3. SqlDataAdapter (Clase): Representa un conjunto de comandos de datos y una conexión 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 asignación de Fill, que cambia los datos en DataSet para que coincidan con los datos del origen de datos. .4. SqlDataAdapter.Fill (Método): 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. Sintaxis: SqlDataAdapter.Fill(DataSet, String) .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 colección de objetos DataTable que se pueden relacionar entre ellos mediante objetos DataRelation.SALAZAR CACHO, Iris Nohely Página 3
  4. 4. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I .6. Ejemplo de conexiones a una Base de Datos: Dim conex As New SqlConnection("server=.;database = Northwind; trusted_connection=true") Conex: Nombre de la conexión a la base de datos. Server: Es el nombre del servidor; en este caso, la conexión es local, también podemos escribir (local), localhost; si la conexión no es local, se debe escribir el nombre propio de dicha conexión. 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 autenticación de Windows. "Data Source=. ; Initial Catalog = Northwind; Integrated Security= True" Data Source: Es el nombre del servidor; en este caso, la conexión es local; si la conexión no es local, se debe escribir el nombre propio de dicha conexión. 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 autenticación de Windows.SALAZAR CACHO, Iris Nohely Página 4
  5. 5. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I PRÁCTICA I 1. VISUALIZAR LOS ESTUDIANTES QUE ESTÁN EN UNA BASE DE DATOS. Se tiene la información 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:SALAZAR CACHO, Iris Nohely Página 5
  6. 6. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Guardamos el registro de datos de Excel en formato con extensión csv (delimitado por comas):  Obtendremos lo siguiente (para visualizar el archivo así, es necesario hacer un clic derecho sobre el archivo y escoger la opción editar)SALAZAR CACHO, Iris Nohely Página 6
  7. 7. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Para poder obtener sólo los datos de los alumnos, debemos eliminar la primera fila que corresponde a los encabezados:  Escribiremos el siguiente código SQL Transact para poder migrar los datos a la tabla: BULK INSERT ESTUDIANTES FROM F:UNcPAIalumnos.csv  ruta del archivo with( FIELDTERMINATOR=,,  Indica que al encontrar una coma éste termina e inicia otro. ROWTeRMINATOR=n )  Ahora, ya tenemos los datos en una tabla de una base de datos y podemos ejecutar sobre ellos códigos SQL Transact: select * from estudiantesSALAZAR CACHO, Iris Nohely Página 7
  8. 8. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Luego de tener los datos ya en el gestor SQL, haremos el trabajo en visual, necesitaremos utilizar la herramienta DataGriediew y escribiremos el siguiente código: 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 ClassSALAZAR CACHO, Iris Nohely Página 8
  9. 9. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 2. VISUALIZAR LOS DATOS DE LOS ALUMNOS DESDE LA WEB:  Crearemos un formulario web:  Utilizaremos la herramienta GriedView:SALAZAR CACHO, Iris Nohely Página 9
  10. 10. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  El código 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 ClassSALAZAR CACHO, Iris Nohely Página 10
  11. 11. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 3. CREAR UN PROGRAMA QUE PERMITA VISUALIZAR LOS DATOS DE UN ESTUDIANTE CUYO CÓDIGO ANR SEA INGRESADO MEDIANTE UN LECTOR DE CÓDIGO 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: CREATE PROC BUSCAR_ALUMNO @ID CHAR(10) AS SELECT * FROM ESTUDIANTES WHERE IDESTUDIANTE =@ID  Código en visual: 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 ClassSALAZAR CACHO, Iris Nohely Página 11
  12. 12. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I NOTA: Cuando el lector de código de barras lee el código simula un enter al finalizar; es por eso que en el código en visual se programó el código bajo la condición del enter. PRÁCTICA II – TRABAJO DE CICLO La novena práctica consiste en crear un menú con opciones que nos permitan visualizar distintas y numerosas consultas a la base de datos Northwind; así como también hacer algunas modificaciones a los datos de la misma: 1. REALIZAR UNA CONEXIÓN QUE SIRVA PARA TODOS LOS FORMULARIOS QUE SE IMPLEMENTARÁN  Es necesario agregar un módulo; para ello, sobre el proyecto clic derecho y luego elegir la opción agregar; finalmente clic en la opción módulo:SALAZAR CACHO, Iris Nohely Página 12
  13. 13. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Se nos mostrará la siguiente ventana y tendremos que escribir un nombre para la conexión, la denominaremos “GLOBALES”:SALAZAR CACHO, Iris Nohely Página 13
  14. 14. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Finalmente, el código de la conexión es: Module GLOBALES Public conex As New System.Data.SqlClient.SqlConnection("server=.;database=northwind;trusted_connection=true") End Module 2. CREAR UN MENÚ QUE NOS MUESTRE LAS SIGUIENTES OPCIONES:  Mantenimiento  Reportes  Consultas  Acerca deSALAZAR CACHO, Iris Nohely Página 14
  15. 15. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 3. VISUALIZAR EL NÚMERO DE PRODUCTOS POR CATEGORÍA:  Código SQL: 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  Código visual, para poder mostrar los datos: 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  Código visual para poder mostrar el formulario que contiene dichos datos: 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 SubSALAZAR CACHO, Iris Nohely Página 15
  16. 16. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I NOTA: El código en visual, que nos permite mostrar los formularios que deseamos ver es similar, sólo es necesario cambiar los nombres de los formularios. 4. REALIZAR UNA CONSULTA QUE PERMITA VER CÓDIGO DEL PRODUCTO, NOMBRE DEL PRODUCTO, PRECIO DEL PRODUCTO, STOCK, NOMBRE DEL PROVEEDOR Y CATEGORÍA DEL PRODUCTO, LAS CATEGORÍAS SE MOSTRARÁN EN UNA LISTA DESPLEGABLE:  Haremos una conexión especial para la lista desplegable, seguiremos los siguientes pasos: a) Clic sobre el triángulo de la esquina superior derecha de la lista, luego clic en la opción desplegable de “Origen de Datos” y se nos mostrará la siguiente ventana, elegiremos entonces la opción “Agregar origen de datos del proyecto”:SALAZAR CACHO, Iris Nohely Página 16
  17. 17. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I b) Aparecerá la siguiente ventana y luego clic sobre el botón “Siguiente” c) En esta ventana, seleccionaremos “Conjunto de Datos” y luego clic en el botón “Siguiente”:SALAZAR CACHO, Iris Nohely Página 17
  18. 18. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I d) Clic en el botón “Nueva Conexión” e) Se mostrará una ventana que solicita llenar algunos datos sobre el tipo de conexión y el nombre de la base de datos a la que se desea conectar, luego probaremos la conexión para evitar errores posteriores:SALAZAR CACHO, Iris Nohely Página 18
  19. 19. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 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:SALAZAR CACHO, Iris Nohely Página 19
  20. 20. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código SQL: 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  Código en visual: 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 ClassSALAZAR CACHO, Iris Nohely Página 20
  21. 21. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 5. MOSTRAR LOS SIGUIENTES DATOS DE LOS PRODUCTOS: NOMBRE, PRECIO, CATEGORÍA Y PROVEEDOR; SÓLO DE LOS PRODUCTOS QUE ESTÉN DENTRO DE UN RANGO DE PRECIOS:  Código SQL: 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  Código en visual: 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 ClassSALAZAR CACHO, Iris Nohely Página 21
  22. 22. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 6. MOSTRAR NOMBRE, PRECIO, CATEGORÍA Y PROVEEDOR DE LOS PRODUCTOS QUE EMPIECEN CON UNA DETERMINADA LETRA:  Código SQL: create proc query4 @nom varchar(10) as select ProductName ,UnitPrice, CategoryID ,SupplierID from products where ProductName like @nom+%SALAZAR CACHO, Iris Nohely Página 22
  23. 23. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código 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 SubSALAZAR CACHO, Iris Nohely Página 23
  24. 24. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 7. VISUALIZAR LOS PRODUCTOS QUE PERTENECEN A UN DETERMINADO PORVEEDOR:  Código SQL: 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  Código en Visual: Imports System.Data.SqlClient Public Class Form6 Private Sub Form6_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load TODO: esta línea de código carga datos en la tabla PAIDataSet1.Suppliers Puede moverla o quitarla según 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 ClassSALAZAR CACHO, Iris Nohely Página 24
  25. 25. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 25
  26. 26. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 8. VER LOS DETALLES DE UNA ORDEN DE COMPRA:  Código SQL: 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  Código en visual: 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 ClassSALAZAR CACHO, Iris Nohely Página 26
  27. 27. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 9. PRODUCTOS CON STOCK Y PRODUCTOS SIN STOCK:  Código SQL: 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  Código en Visual: 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 ClassSALAZAR CACHO, Iris Nohely Página 27
  28. 28. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 28
  29. 29. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 10. MOSTRAR LOS PRODUCTOS VIGENTES Y LOS DESCONTINUADOS:  Código SQL: create proc query9 @value as bit as select ProductID , ProductName , UnitPrice ,Discontinued from Products where Discontinued=@value  Código Visual: 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 ClassSALAZAR CACHO, Iris Nohely Página 29
  30. 30. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 30
  31. 31. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I PRÁCTICA III CREACIÓN DE LA CONEXIÓN: Module CONEXIÓN Public conex As New System.Data.SqlClient.SqlConnection("server=.;database=northwind;trusted_connection=true") End Module 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 búsqueda 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 búsqueda seleccionado. Los datos que deben salir en el DatagridView son: ProductId ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname (Suppliers). a) DISEÑO:SALAZAR CACHO, Iris Nohely Página 31
  32. 32. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 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 @NOMBRESALAZAR CACHO, Iris Nohely Página 32
  33. 33. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I c) CÓDIGO EN VISUAL: 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) d) PANTALLAS:SALAZAR CACHO, Iris Nohely Página 33
  34. 34. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 34
  35. 35. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 35
  36. 36. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 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 botón, 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) DISEÑO:SALAZAR CACHO, Iris Nohely Página 36
  37. 37. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 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.CategoryIDSALAZAR CACHO, Iris Nohely Página 37
  38. 38. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I c) CÓDIGO 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 ClassSALAZAR CACHO, Iris Nohely Página 38
  39. 39. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I d) PANTALLAS:SALAZAR CACHO, Iris Nohely Página 39
  40. 40. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 40
  41. 41. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 3. IMPLEMENTAR LA INTERFACE DEL EJERCICIO 2, ESTA VEZ SIN EL COMMANDBUTTON, LA BÚSQUEDA SE HARÁ AL SELECCIONAR EL RADIOBUTTON (EN EL CASO DEL FILTRO DE CATEGORÍA, SE HARÁ CON EL ENTER DEL TEXTBOX). a) DISEÑO: 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.CategoryIDSALAZAR CACHO, Iris Nohely Página 41
  42. 42. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I c) CÓDIGO 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 ClassSALAZAR CACHO, Iris Nohely Página 42
  43. 43. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I d) PANTALLAS:SALAZAR CACHO, Iris Nohely Página 43
  44. 44. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 44
  45. 45. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 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, automáticamente 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) DISEÑO:SALAZAR CACHO, Iris Nohely Página 45
  46. 46. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I b) CÓDIGO SQL: 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 c) CÓDIGO VISUAL: 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 ClassSALAZAR CACHO, Iris Nohely Página 46
  47. 47. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I d) PANTALLAS:SALAZAR CACHO, Iris Nohely Página 47
  48. 48. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 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 foránea; esto permite que podamos realizar aplicaciones bajo el mismo concepto de relación; en la siguiente práctica implementaremos ejercicios de este tipo; en muchos casos será necesaria la implementación de dos o más procedimientos almacenados en la Base de Datos Northwind. PRÁCTICA IV 1. MOSTRAR CATEGORÍA, NOMBRE DE LA CATEGORÍA Y DESCRIPCIÓN DE LOS PRODUCTOS, A LA VEZ MOSTRAR TODOS LOS PRODUCTOS QUE PERTENECEN A CIERTA CATEGORÍA (SE ELEGIRÁ MEDIANTE UN CLIC DE QUÉ CATEGORÍA DESEAMOS VER LOS PRODUCTOS):  Código SQL: Mostrar todas las categorías: create procedure QUERY14 as select categoryid, categoryname, description from Categories Mostrar productos de una determinada categoría: 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 = @catSALAZAR CACHO, Iris Nohely Página 48
  49. 49. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código 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 ClassSALAZAR CACHO, Iris Nohely Página 49
  50. 50. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 50
  51. 51. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 51
  52. 52. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 52
  53. 53. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 2. MOSTRAR LAS ÓRDENES REALIZADAS, LUEGO MOSTRAR LOS DETALLES DE CIERTA ORDEN (SE SELECCIONARÁ LA ORDEN PARA VER LOS DETALLES):  Código 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 = @IDESALAZAR CACHO, Iris Nohely Página 53
  54. 54. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código 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 ClassSALAZAR CACHO, Iris Nohely Página 54
  55. 55. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 55
  56. 56. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 3. MOSTRAR LA FOTO DE LOS EMPLEADOS, SE MOSTRARÁ LA RELACIÓN DE EMPLEADOS Y SE SELECCIONARÁ ALGUNO:  Código SQL: Mostrar la relación de empleados: CREATE PROCEDURE QUERY16 AS SELECT EmployeeID , LastName , FirstName FROM Employees Mostrar un sólo empleado, utilizamos un parámetro: CREATE PROCEDURE QUERY16i @ID INT AS SELECT LastName FROM Employees WHERE EMPLOYEEID = @ID  Código en Visual: 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 SettingsIRIS NOHELYEscritorioimag músican_n" + CStr(index) + ".jpg") End Sub End ClassSALAZAR CACHO, Iris Nohely Página 56
  57. 57. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 57
  58. 58. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 58
  59. 59. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 59
  60. 60. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 4. MOSTRAR LAS ÓRDENES REALIZADAS POR CIERTO EMPLEADO, SE PRESENTARÁ LA RELACIÓN DE EMPLEADOS:  Código SQL: Mostrar la relación 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 = @IDESALAZAR CACHO, Iris Nohely Página 60
  61. 61. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código 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.SALAZAR CACHO, Iris Nohely Página 61
  62. 62. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 62
  63. 63. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 63
  64. 64. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 5. MOSTRAR LA RELACIÓN DE EMPLEADOS, LAS ÓRDENES QUE REALIZÓ UN DETERMINADO EMPLEADO Y LOS PRODUCTOS DE DICHA ORDEN:  Código SQL: Mostrar la relación 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= @idenSALAZAR CACHO, Iris Nohely Página 64
  65. 65. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código 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 SubSALAZAR CACHO, Iris Nohely Página 65
  66. 66. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 66
  67. 67. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 67
  68. 68. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I III. FORMULARIOS – HEREDADOS Visual Studio 2010 nos permite crear formularios que hereden las características 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 diseño determinado:SALAZAR CACHO, Iris Nohely Página 68
  69. 69. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Clic derecho en el nombre del proyecto para poder agregar un nuevo elemento; en el explorador de soluciones:SALAZAR CACHO, Iris Nohely Página 69
  70. 70. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Aparecerá la siguiente ventana; en ella debemos elegir la opción Windows Form, en la opción “Elementos comunes”:  Tendremos las siguientes opciones a elegir; en este caso seleccionaremos “Formulario Heredado:”SALAZAR CACHO, Iris Nohely Página 70
  71. 71. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Aparecerá la ventana “Selector de Herencia”; aquí debemos elegir de qué formulario deseamos heredar las características (para el ejemplo será el formulario renombrado anteriormente como “Plantilla”):  Finalmente, tenemos nuestro nuevo formulario Heredado:SALAZAR CACHO, Iris Nohely Página 71
  72. 72. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I PRÁCTICA 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) Código nomperso Varchar (30) Nombres apeperso Varchar (40) Apellidos email Varchar (50) Correo Electrónico genero Char (1) Género estadocivil Char (1) Estado civil fechanac datetime Fecha de Nacimiento 1. LLENAR DATOS EN LA TABLA PERSONAS, MEDIANTE UNA VENTANA HECHA EN VISUAL:  Código 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 personasSALAZAR CACHO, Iris Nohely Página 72
  73. 73. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código 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()SALAZAR CACHO, Iris Nohely Página 73
  74. 74. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 74
  75. 75. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 2. MODIFICAR EL MODO DE INGRESO DE LOS DATOS “GÉNERO” Y “ESTADO CIVIL” DEL EJERCICIO 1: En el caso de “Género” se deberá ingresar mediante un clic en una opción de un Radiobutton. Para “Estado Civil” se seleccionará de una lista desplegable la opción que deseemos.  Código 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 personasSALAZAR CACHO, Iris Nohely Página 75
  76. 76. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código 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 ClassSALAZAR CACHO, Iris Nohely Página 76
  77. 77. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 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 Código nomperso Varchar (30) Nombres apeperso Varchar (40) Apellidos email Varchar (50) Correo Electrónico genero Char (1) Género estadocivil Char (1) Estado civil fechanac datetime Fecha de NacimientoSALAZAR CACHO, Iris Nohely Página 77
  78. 78. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I NOTA: Si al querer modificar algún atributo de alguna tabla nos aparece un mensaje de error, debemos desactivar la opción “Impedir guardar cambios que requieran volver a crear tablas”.SALAZAR CACHO, Iris Nohely Página 78
  79. 79. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Para solucionar el inconveniente, antes descrito; seguiremos los siguientes pasos:  Clic en el menú “Herramientas”, luego elegir la opción “Opciones”:  Aparecerá la siguiente ventana:SALAZAR CACHO, Iris Nohely Página 79
  80. 80. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Elegir la opción “Designers” y desactivar la opción “Impedir cambios que requieran volver a crear tablas”: 4. INGRESAR REGISTROS EN LA NUEVA TABLA “PERSONAS”.  Código 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)SALAZAR CACHO, Iris Nohely Página 80
  81. 81. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código 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 ClassSALAZAR CACHO, Iris Nohely Página 81
  82. 82. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 5. LLENAR REGISTROS DE LA TABLA PERSONAS Y MOSTRARLOS:  Código 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)SALAZAR CACHO, Iris Nohely Página 82
  83. 83. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Código 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 ClassSALAZAR CACHO, Iris Nohely Página 83
  84. 84. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA ISALAZAR CACHO, Iris Nohely Página 84
  85. 85. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 6. CREAR LAS SIGUIENTES TABLAS: “LIBROS” ATRIBUTO TIPO DE DATO REFERENCIA IdLibro int Código Titulo Varchar (30) Título del Libro IdEditorial int Código de la Editorial Edicion Char (10) Número de Edición Año_Publicacion datetime Año de Publicación IdAutor int Código del Autor “AUTOR” ATRIBUTO TIPO DE DATO REFERENCIA IdAutor int Código Nombre Varchar (50) Nombre del Autor Fecha_Nac datetime Fecha de Nacimiento Pais Char (10) País de Origen “EDITORIAL” ATRIBUTO TIPO DE DATO REFERENCIA IdEditorial int Código Nombre Varchar (50) Nombre de la Editorial Pais VarChar (20) País en donde funciona la Editorial *Llenar con datos las tablas “AUTOR” y “EDITORIAL”.SALAZAR CACHO, Iris Nohely Página 85
  86. 86. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I CREAR UN FORMULARIO QUE PERMITA REGISTRAR LIBROS, SE MOSTRARÁ LOS AUTORES Y LAS EDITORIALES EN LISTAS DESPLEGABLES DE LAS QUE SE OBTENDRÁ EL CÓDIGO DE AUTOR Y EDITORIAL RESPECTIVAMENTE:  Código SQL: CREATE PROCEDURE libro @t VARCHAR(30,@edit int,@ed CHAR(10),@ap char (10), @idau int as insert into libros (titulo, IDEDITORIAL, edicion, año_publicacion, IDAUTOR) VALUES (@t,@edit, @ed, @ap , @idau)  Código en Visual: 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 línea de código carga datos en la tabla PAIDataSet5.EDITORIAL Puede moverla o quitarla según sea necesario. Me.EDITORIALTableAdapter.Fill(Me.PAIDataSet5.EDITORIAL) TODO: esta línea de código carga datos en la tabla PAIDataSet4.AUTOR Puede moverla o quitarla según sea necesario. Me.AUTORTableAdapter.Fill(Me.PAIDataSet4.AUTOR) End Sub End ClassSALAZAR CACHO, Iris Nohely Página 86
  87. 87. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  CONFIGURAMOS LA CONEXIÓN PARA LA LISTA DESPLEGABLE DE AUTORES: Clic en el triángulo desplegable de la esquina superior derecha del listbox, aparecerá la siguiente ventana: Clic en la opción “Agregar origen de datos del proyecto”:SALAZAR CACHO, Iris Nohely Página 87
  88. 88. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Clic en el botón “Siguiente”:SALAZAR CACHO, Iris Nohely Página 88
  89. 89. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Clic en el botón “Nueva conexión”: Probamos la conexión:SALAZAR CACHO, Iris Nohely Página 89
  90. 90. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Se mostrará la siguiente pantalla: Luego cargarán los datos y seleccionaremos sólo los que vamos a utilizar, en este caso es la tabla “AUTOR” y de ella sólo necesitaremos los atributos “IdAutor y Nombre”, luego clic en finalizar:SALAZAR CACHO, Iris Nohely Página 90

×