SlideShare una empresa de Scribd logo
20/12/2011




UNC          MANUAL DE PROGRAMACIÓN APLICADA I




  Programación Aplicada I   |   SALAZAR CACHO, Iris Nohely
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
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
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
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
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
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 estudiantes




SALAZAR CACHO, Iris Nohely                                                                      Página 7
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 Class




SALAZAR CACHO, Iris Nohely                                                              Página 8
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
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 Class




SALAZAR CACHO, Iris Nohely                                                                  Página 10
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 Class




SALAZAR CACHO, Iris Nohely                                                                          Página 11
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
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
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 de




SALAZAR CACHO, Iris Nohely                                                                          Página 14
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 Sub




SALAZAR CACHO, Iris Nohely                                                                         Página 15
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
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
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
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
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 Class




SALAZAR CACHO, Iris Nohely                                                             Página 20
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 Class




SALAZAR CACHO, Iris Nohely                                                                           Página 21
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
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 Sub




SALAZAR CACHO, Iris Nohely                                                         Página 23
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 Class




SALAZAR CACHO, Iris Nohely                                                              Página 24
Universidad Nacional de Cajamarca       MANUAL DE PROGRAMACIÓN APLICADA I




                                    




SALAZAR CACHO, Iris Nohely                                                  Página 25
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 Class




SALAZAR CACHO, Iris Nohely                                                                   Página 26
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 Class




SALAZAR CACHO, Iris Nohely                                                              Página 27
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 28
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 Class




SALAZAR CACHO, Iris Nohely                                                                            Página 29
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 30
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
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 @NOMBRE




SALAZAR CACHO, Iris Nohely                                               Página 32
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
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 34
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 35
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
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.CategoryID




SALAZAR CACHO, Iris Nohely                                              Página 37
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 Class




SALAZAR CACHO, Iris Nohely                                                          Página 38
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




              d) PANTALLAS:




SALAZAR CACHO, Iris Nohely                                              Página 39
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 40
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.CategoryID




SALAZAR CACHO, Iris Nohely                                                           Página 41
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 Class




SALAZAR CACHO, Iris Nohely                                                                                  Página 42
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




                  d) PANTALLAS:




SALAZAR CACHO, Iris Nohely                                              Página 43
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 44
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
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 Class




SALAZAR CACHO, Iris Nohely                                                         Página 46
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




              d) PANTALLAS:




SALAZAR CACHO, Iris Nohely                                              Página 47
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 = @cat




SALAZAR CACHO, Iris Nohely                                                                Página 48
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 Class




SALAZAR CACHO, Iris Nohely                                                                  Página 49
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 50
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 51
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 52
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 = @IDE




SALAZAR CACHO, Iris Nohely                                                 Página 53
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 Class




SALAZAR CACHO, Iris Nohely                                                                   Página 54
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 55
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 Class




SALAZAR CACHO, Iris Nohely                                                                   Página 56
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 57
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 58
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 59
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 = @IDE




SALAZAR CACHO, Iris Nohely                                               Página 60
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
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 62
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 63
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= @iden




SALAZAR CACHO, Iris Nohely                                                  Página 64
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 Sub




SALAZAR CACHO, Iris Nohely                                                   Página 65
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 66
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 67
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
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
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
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
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 personas




SALAZAR CACHO, Iris Nohely                                                               Página 72
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
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 74
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 personas




SALAZAR CACHO, Iris Nohely                                                                Página 75
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 Class




SALAZAR CACHO, Iris Nohely                                                                              Página 76
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 Nacimiento




SALAZAR CACHO, Iris Nohely                                                           Página 77
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
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
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
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 Class




SALAZAR CACHO, Iris Nohely                                                                         Página 81
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
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 Class




SALAZAR CACHO, Iris Nohely                                                                                   Página 83
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 84
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
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 Class




SALAZAR CACHO, Iris Nohely                                                                                   Página 86
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
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



                              Clic en el botón “Siguiente”:




SALAZAR CACHO, Iris Nohely                                              Página 88
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
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
Universidad Nacional de Cajamarca     MANUAL DE PROGRAMACIÓN APLICADA I



           Similar procedimiento se sigue para la conexión del listbox de “Editoriales”, con la
           salvedad que se elige los datos de la tabla “Editoriales”.

           Finalmente, las pantallas del nuevo programa:




SALAZAR CACHO, Iris Nohely                                                                Página 91
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



                                           PRÁCTICA VI

              1. MOSTRAR EN UN FORMULARIO INFORMACIÓN DE LAS CATEGORÍAS DE LA
                 BASE DE DATOS NORTHWIND; SE PERMITIRÁ AGREGAR OTRAS
                 CATEGORÍAS; MÁS NO ELIMINARLAS.

                     Creamos el origen de datos, esta ventana la podemos encontrar cerca
                      de la ventana herramientas o al presionar las siguiente combinación
                      Mayus+Alt+D:




                                      Nota: Un Origen de
                                      datos se crea para
                                      todo el proyecto.




SALAZAR CACHO, Iris Nohely                                                          Página 92
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 93
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 94
Universidad Nacional de Cajamarca    MANUAL DE PROGRAMACIÓN APLICADA I




               Diseñamos el Formulario; para ello debemos seguir los siguientes pasos:




SALAZAR CACHO, Iris Nohely                                                                Página 95
Universidad Nacional de Cajamarca     MANUAL DE PROGRAMACIÓN APLICADA I



               Luego arrastramos la lista “Categorías” hacia el formulario; se mostrará lo
                  siguiente:




               LOS NOMBRES DE LA CAJA DE TEXTO VARIAN DE ACUERDO AL TIPO DE DATO QUE
                EN SU EJECUCIÓN CONTENDRÁ:

                          LA CAJA DE TEXTO QUE CORRESPONDE AL CÓDIGO DE CATEGORÍA
                           TIENE POR NOMBRE “CategoryIdTextBox”.

                          LA CAJA DE TEXTO QUE CORRESPONDE AL NOMBRE DE CATEGORÍA
                           TIENE POR NOMBRE “CategoryNameTextBox”.

                          LA CAJA DE TEXTO QUE CORRESPONDE A LA DESCRIPCOÓN TIENE
                           POR NOMBRE “DescriptionTextBox”.



               La caja de texto que corresponde al Código de la Categoría 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”.




SALAZAR CACHO, Iris Nohely                                                               Página 96
Universidad Nacional de Cajamarca    MANUAL DE PROGRAMACIÓN APLICADA I




               Para agregar una nueva categoría debemos hacer clic en el siguiente botón:




               Escribiremos los datos que nos solicitan, y para guardar dicha información
                debemos hacer clic en el botón:




               Entonces tendremos una nueva categoría:




SALAZAR CACHO, Iris Nohely                                                              Página 97
Universidad Nacional de Cajamarca          MANUAL DE PROGRAMACIÓN APLICADA I




               2. MOSTRAR TODOS LOS PRODUCTOS DE UNA CATEGORÍA:

                                     Agregaremos un nuevo origen de datos; similar al ejercicio
                                      1; para el presente ejemplo elegiremos la tabla categorías.

                                     El código 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




SALAZAR CACHO, Iris Nohely                                                                            Página 98
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 99
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 100
Universidad Nacional de Cajamarca            MANUAL DE PROGRAMACIÓN APLICADA I




              3. MOSTRAR LOS DETALLES DE UN PRODUCTO INGRESADO (CÓDIGO DEL PRODUCTO)
                 POR TECLADO (NO UTILIZAR STORED PROCEDURE):



                           Código 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 número 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




SALAZAR CACHO, Iris Nohely                                                                              Página 101
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 102
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 103
Universidad Nacional de Cajamarca    MANUAL DE PROGRAMACIÓN APLICADA I




              4. MOSTRAR EN UN MENSAJE EL NOMBRE DEL PRODUCTO, PRECIO Y STOCK
                 DE LOS PRODUCTOS DE UN DETERMINADO PROVEEDOR (NO USAR STORED
                 PROCEDURE, EL CÓDIGO DEL PROVEEDOR SERÁ INGRESADO POR
                 TECLADO):

                      Código 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




SALAZAR CACHO, Iris Nohely                                                            Página 104
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 105
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




              5. MOSTRAR LOS PRODUCTOS DE UN PROVEEDOR EN UNA LISTA; EL CÓDIGO
                 DEL PROVEEDOR SERÁ INGRESADO POR TECLADO (NO UTILIZAR STORED
                 PROCEDURE):

                      Código 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




SALAZAR CACHO, Iris Nohely                                                      Página 106
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 107
Universidad Nacional de Cajamarca     MANUAL DE PROGRAMACIÓN APLICADA I



              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 Sesión”.

                  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 opción “Windows Form”, se
                       muestran las siguientes opciones:




SALAZAR CACHO, Iris Nohely                                                               Página 108
Universidad Nacional de Cajamarca             MANUAL DE PROGRAMACIÓN APLICADA I



                        Elegimos la opción “Formulario de Inicio de Sesión”:




                        Código 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 SÓLO 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




SALAZAR CACHO, Iris Nohely                                                                             Página 109
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 110
Universidad Nacional de Cajamarca      MANUAL DE PROGRAMACIÓN APLICADA I




              7. PERMITIR CAMBIAR DE CLAVE AL USUARIO EN OTRO FORMULARIO:

                      Código 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




SALAZAR CACHO, Iris Nohely                                                             Página 111
Universidad Nacional de Cajamarca    MANUAL DE PROGRAMACIÓN APLICADA I




              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, comprensión e interpretación.


                     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:




SALAZAR CACHO, Iris Nohely                                                        Página 112
Universidad Nacional de Cajamarca      MANUAL DE PROGRAMACIÓN APLICADA I



                      Clic en la opción “Reporting” y elegir “Informe”:




                      Finalmente la ventana para desarrollar le informe está creada:




SALAZAR CACHO, Iris Nohely                                                              Página 113
Universidad Nacional de Cajamarca    MANUAL DE PROGRAMACIÓN APLICADA I



                      Una vez creado el informe; debemos crear su origen de datos; es
                       decir de dónde deseamos obtener la información:




                       Clic en la pestaña “Nuevo” y elegir “Nuevo Origen de Datos”:




                       Se mostrará la ventana “Propiedades del Conjunto de Datos”, clic
                        en el botón “Nuevo”:




SALAZAR CACHO, Iris Nohely                                                               Página 114
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



                       Aparece la ventana “Asistente para la Configuración de Datos”, clic
                        en “Siguiente”:




                                    




SALAZAR CACHO, Iris Nohely                                                            Página 115
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



                       Clic en el botón “Nueva Conexión”




SALAZAR CACHO, Iris Nohely                                              Página 116
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



                       En esta ventana escribimos el nombre del servidos y la base de
                         datos a la que deseamos conectarnos:




                       Probamos la conexión:




SALAZAR CACHO, Iris Nohely                                                               Página 117
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



                       La siguiente ventana demuestra que está cargando los datos para
                        poder escoger el correcto:




                       Elegimos el procedimiento almacenado correcto:




SALAZAR CACHO, Iris Nohely                                                          Página 118
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



                       Podemos observar el entorno de dearrollo de un Informe; aquí
                        podemos usar algunas herramientas para mostrar la información:




SALAZAR CACHO, Iris Nohely                                                       Página 119
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 120
Universidad Nacional de Cajamarca     MANUAL DE PROGRAMACIÓN APLICADA I




                         Debemos crear un nuevo formulario, en este incluiremos el reporte,
                          mediante la herramienta “Reporte Viewer”




SALAZAR CACHO, Iris Nohely                                                                     Página 121
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




                       La vista del informe:




SALAZAR CACHO, Iris Nohely                                              Página 122
Universidad Nacional de Cajamarca      MANUAL DE PROGRAMACIÓN APLICADA I




                        Podemos exportar el informe a Excel, PDF o Word:




               Elegimos la ruta e, donde deseamos guardar el informe:




SALAZAR CACHO, Iris Nohely                                                  Página 123
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



               Ahora podemos visualizar el informe desde Ms. Word:




SALAZAR CACHO, Iris Nohely                                              Página 124
Universidad Nacional de Cajamarca      MANUAL DE PROGRAMACIÓN APLICADA I




                                                  PRÁCTICA VII

              1. MOSTRAR LAS ÓRDENES REALIZADAS POR UN EMPLEADO:

                      Código SQL:

                         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




                      Código en Visual:



             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




SALAZAR CACHO, Iris Nohely                                                                  Página 125
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 126
Universidad Nacional de Cajamarca    MANUAL DE PROGRAMACIÓN APLICADA I




              2. MOSTRAR EL TOTAL DE ÓRDENES REALIZADAS POR UN EMPLEADO:

                      Código SQL:



                     create procedure sp2
                     @y int
                     as
                     select distinct companyname, YEAR(orderdate) as año,
                     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




                      Código Visual:



                       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




SALAZAR CACHO, Iris Nohely                                                                 Página 127
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




SALAZAR CACHO, Iris Nohely                                              Página 128
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



                CREAR UN SISTEMA DE CONTROL DE ASISTENCIA PARA LA XII-
                                 SEMANA SISTÉMICA
              1. FORMULARIOS:

                  MANTENIMIENTO DE INSTITUCIONES EDUCATIVAS:




                 MANTENIMIENTO DE CONFERENCIAS:




SALAZAR CACHO, Iris Nohely                                               Página 129
Universidad Nacional de Cajamarca    MANUAL DE PROGRAMACIÓN APLICADA I



                 INGRESAR UN NUEVO PARTICIPANTE:




                       CÓDIGO 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)




SALAZAR CACHO, Iris Nohely                                               Página 130
Universidad Nacional de Cajamarca           MANUAL DE PROGRAMACIÓN APLICADA I



           Código 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




SALAZAR CACHO, Iris Nohely                                                                             Página 131
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



           BUSCAR UN PARTICIPANTE:




SALAZAR CACHO, Iris Nohely                                              Página 132
Universidad Nacional de Cajamarca          MANUAL DE PROGRAMACIÓN APLICADA I



            Código SQL:

                                Búsqueda por código:
                                create procedure cod
                                @id varchar(20)
                                as
                                select *
                                from PARTICIPANTES
                                where IdParticipante like   @id+'%'




                            Búsqueda por apellido:
                            create procedure apepaternito
                            @a varchar(25)
                            as
                            select *
                            from PARTICIPANTES
                            where apepat like @a+'%'



            Código 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




SALAZAR CACHO, Iris Nohely                                                                     Página 133
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



           REGISTRAR ASISTENTES:




SALAZAR CACHO, Iris Nohely                                              Página 134
Universidad Nacional de Cajamarca     MANUAL DE PROGRAMACIÓN APLICADA I




           Código 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




SALAZAR CACHO, Iris Nohely                                                Página 135
Universidad Nacional de Cajamarca          MANUAL DE PROGRAMACIÓN APLICADA I



           Código 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




SALAZAR CACHO, Iris Nohely                                                                             Página 136
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




           REPORTE DE ALUMNOS PARTICIPANTES, ORDENADOS ALFABÉTICAMENTE:




SALAZAR CACHO, Iris Nohely                                                Página 137
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I




           Código SQL:


                     alter procedure asist
                     as
                     select IdParticipante, ApePat+' '+ApeMat+'
                     '+Nombres as Nombre, Email,IdInsti
                     from PARTICIPANTES
                     order by ApePat+ApeMat+Nombres




           REPORTE DE CONFERENCIAS DICTADAS:




           Código SQL:



                              create proc conf
                              as
                              select *
                              from CONFERENCIAS
                              order by NombreConfe




SALAZAR CACHO, Iris Nohely                                              Página 138
Universidad Nacional de Cajamarca   MANUAL DE PROGRAMACIÓN APLICADA I



           REPORTE DE ASISTENTES POR CONFERENCIA:




           Código 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




SALAZAR CACHO, Iris Nohely                                                  Página 139

Más contenido relacionado

PDF
TUTORIAL DE ADO.NET MUY BUENO
PDF
desarrollo en 3 capas VB
PPT
Acceso A Datos Y Ado.Net
PDF
manual visual basic 02
PPT
8. Acceso A Datos Con Microsoft Ado.Net
PPS
ADO .NET
PPT
visual basic .net
PDF
Manual acceso a datos vb.net
TUTORIAL DE ADO.NET MUY BUENO
desarrollo en 3 capas VB
Acceso A Datos Y Ado.Net
manual visual basic 02
8. Acceso A Datos Con Microsoft Ado.Net
ADO .NET
visual basic .net
Manual acceso a datos vb.net

La actualidad más candente (20)

PPT
Ado.net 2012
PPTX
Objeto ado.net
PPTX
Ado.net
PDF
Guia no1 ado.net
PPTX
ConexióN De Base De Datos
PPS
SQL Visual Basic 6.0
DOCX
Bases de datos desde Visual Basic 6.0
PPTX
Modoconexion
PPT
Ado.Net
PPT
Active x data object ado.net
PPTX
12-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
PDF
Bases de datos desde visual basic 6.0
PPTX
11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
PPTX
Programación de Base de Datos - Unidad 4 Representacion de la info
PPTX
13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERT
PDF
Vb net bd_2005_02
PPTX
Informe programacion leomar salas
Ado.net 2012
Objeto ado.net
Ado.net
Guia no1 ado.net
ConexióN De Base De Datos
SQL Visual Basic 6.0
Bases de datos desde Visual Basic 6.0
Modoconexion
Ado.Net
Active x data object ado.net
12-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
Bases de datos desde visual basic 6.0
11-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
Programación de Base de Datos - Unidad 4 Representacion de la info
13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERT
Vb net bd_2005_02
Informe programacion leomar salas
Publicidad

Destacado (20)

PPTX
Proyectos de Base de Datos con Visual Studio 2013
PDF
Manual Visual Basic .NET SQL Server paso a paso
DOCX
Programacion en n capas
DOCX
CONEXION VISUAL STUDIO.NET - SQL SERVER
PDF
Manual visual studio 2010
PDF
SISTEMA DE FACTURACION (Ejemplo desarrollado)
PPTX
S ti ci_v1_201302
PPTX
ConexióN De Una Base De Datos De Sql Con C#
PDF
Entity Framework ó Linq SQL - Visual Studio 2012
PPTX
Practica de visual basic sistema de facturación
PPTX
MS Visual Studio 2010 y MS SQL 2008 R2
PDF
Pasos Para Conectar Una Base De Datos En Visual Basic
PPTX
Pasos Para Crear un Formulario Con Base de Datos En Visual Basic
PDF
revista base de datos y visual studio
PPTX
Entorno de desarrollo integrado de Visual Basic .NET
PDF
Sistema para el control de ventas e inventarios
DOC
Operadores del lenguaje
PPTX
ADO.NET
PPT
Desarrollo web
Proyectos de Base de Datos con Visual Studio 2013
Manual Visual Basic .NET SQL Server paso a paso
Programacion en n capas
CONEXION VISUAL STUDIO.NET - SQL SERVER
Manual visual studio 2010
SISTEMA DE FACTURACION (Ejemplo desarrollado)
S ti ci_v1_201302
ConexióN De Una Base De Datos De Sql Con C#
Entity Framework ó Linq SQL - Visual Studio 2012
Practica de visual basic sistema de facturación
MS Visual Studio 2010 y MS SQL 2008 R2
Pasos Para Conectar Una Base De Datos En Visual Basic
Pasos Para Crear un Formulario Con Base de Datos En Visual Basic
revista base de datos y visual studio
Entorno de desarrollo integrado de Visual Basic .NET
Sistema para el control de ventas e inventarios
Operadores del lenguaje
ADO.NET
Desarrollo web
Publicidad

Similar a Visual 2010 sql server 2008 (20)

PPTX
Espacio de nombres system.data.sql client
DOCX
Conexión desde una aplicación en java a un bd en mysql
PDF
Persistencia de datos
PPTX
PPTX
Java con base de datos
PDF
Utilizaciòn de base de datos externas en arcgis.
DOCX
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
PPTX
PPTX
Java con base de datos
PPTX
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
PPTX
Java con base de datos
PPTX
Java con Base de Datos
PDF
Acceso a datos con ado.net en visual basic
PDF
Acceso a datos con ado.net en visual basic
PPTX
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
PPT
ADO .net
PPTX
Java con base de datos
PPTX
Diapositivas de ado.net
Espacio de nombres system.data.sql client
Conexión desde una aplicación en java a un bd en mysql
Persistencia de datos
Java con base de datos
Utilizaciòn de base de datos externas en arcgis.
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Java con base de datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Java con base de datos
Java con Base de Datos
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basic
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
ADO .net
Java con base de datos
Diapositivas de ado.net

Más de Alex Vasquez (14)

PDF
S6 inicial-5-dia-1
PDF
GNS3 instalación, configuración, ipv4, ipv6
PDF
Introduccion a la gestion de proyectos
PDF
Liderazgo en proyectos
PDF
Pmi y sus certificaciones
PDF
Distribución de video con vlc
PDF
Gns3 practica
PDF
Manual sqlserver2008 final
DOCX
Multiplicador y divisor
DOCX
Conversión Entre Sistemas de Numeración
DOCX
Mapas de Karnaugh
DOCX
Codigo Binario
DOCX
Interpretadores de Datos Digitales
DOCX
Elementos Eléctricos y Electrónicos
S6 inicial-5-dia-1
GNS3 instalación, configuración, ipv4, ipv6
Introduccion a la gestion de proyectos
Liderazgo en proyectos
Pmi y sus certificaciones
Distribución de video con vlc
Gns3 practica
Manual sqlserver2008 final
Multiplicador y divisor
Conversión Entre Sistemas de Numeración
Mapas de Karnaugh
Codigo Binario
Interpretadores de Datos Digitales
Elementos Eléctricos y Electrónicos

Último (20)

PDF
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Metodologías Activas con herramientas IAG
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
Tarea De El Colegio Coding For Kids 1 y 2
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
Lección 6 Escuela Sab. A través del mar rojo.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
ciencias-1.pdf libro cuarto basico niños
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
biología es un libro sobre casi todo el tema de biología
Metodologías Activas con herramientas IAG
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Tomo 1 de biologia gratis ultra plusenmas

Visual 2010 sql server 2008

  • 1. 20/12/2011 UNC MANUAL DE PROGRAMACIÓN APLICADA I Programación Aplicada I | SALAZAR CACHO, Iris Nohely
  • 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. 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. 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. 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. 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. 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 estudiantes SALAZAR CACHO, Iris Nohely Página 7
  • 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 Class SALAZAR CACHO, Iris Nohely Página 8
  • 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. 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 Class SALAZAR CACHO, Iris Nohely Página 10
  • 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 Class SALAZAR CACHO, Iris Nohely Página 11
  • 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. 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. 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 de SALAZAR CACHO, Iris Nohely Página 14
  • 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 Sub SALAZAR CACHO, Iris Nohely Página 15
  • 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. 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. 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. 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. 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 Class SALAZAR CACHO, Iris Nohely Página 20
  • 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 Class SALAZAR CACHO, Iris Nohely Página 21
  • 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. 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 Sub SALAZAR CACHO, Iris Nohely Página 23
  • 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 Class SALAZAR CACHO, Iris Nohely Página 24
  • 25. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  SALAZAR CACHO, Iris Nohely Página 25
  • 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 Class SALAZAR CACHO, Iris Nohely Página 26
  • 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 Class SALAZAR CACHO, Iris Nohely Página 27
  • 28. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 28
  • 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 Class SALAZAR CACHO, Iris Nohely Página 29
  • 30. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 30
  • 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. 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 @NOMBRE SALAZAR CACHO, Iris Nohely Página 32
  • 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. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 34
  • 35. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 35
  • 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. 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.CategoryID SALAZAR CACHO, Iris Nohely Página 37
  • 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 Class SALAZAR CACHO, Iris Nohely Página 38
  • 39. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I d) PANTALLAS: SALAZAR CACHO, Iris Nohely Página 39
  • 40. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 40
  • 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.CategoryID SALAZAR CACHO, Iris Nohely Página 41
  • 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 Class SALAZAR CACHO, Iris Nohely Página 42
  • 43. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I d) PANTALLAS: SALAZAR CACHO, Iris Nohely Página 43
  • 44. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 44
  • 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. 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 Class SALAZAR CACHO, Iris Nohely Página 46
  • 47. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I d) PANTALLAS: SALAZAR CACHO, Iris Nohely Página 47
  • 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 = @cat SALAZAR CACHO, Iris Nohely Página 48
  • 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 Class SALAZAR CACHO, Iris Nohely Página 49
  • 50. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 50
  • 51. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 51
  • 52. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 52
  • 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 = @IDE SALAZAR CACHO, Iris Nohely Página 53
  • 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 Class SALAZAR CACHO, Iris Nohely Página 54
  • 55. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 55
  • 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 Class SALAZAR CACHO, Iris Nohely Página 56
  • 57. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 57
  • 58. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 58
  • 59. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 59
  • 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 = @IDE SALAZAR CACHO, Iris Nohely Página 60
  • 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. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 62
  • 63. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 63
  • 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= @iden SALAZAR CACHO, Iris Nohely Página 64
  • 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 Sub SALAZAR CACHO, Iris Nohely Página 65
  • 66. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 66
  • 67. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 67
  • 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. 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. 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. 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. 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 personas SALAZAR CACHO, Iris Nohely Página 72
  • 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. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 74
  • 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 personas SALAZAR CACHO, Iris Nohely Página 75
  • 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 Class SALAZAR CACHO, Iris Nohely Página 76
  • 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 Nacimiento SALAZAR CACHO, Iris Nohely Página 77
  • 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. 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. 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. 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 Class SALAZAR CACHO, Iris Nohely Página 81
  • 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. 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 Class SALAZAR CACHO, Iris Nohely Página 83
  • 84. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 84
  • 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. 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 Class SALAZAR CACHO, Iris Nohely Página 86
  • 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. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Clic en el botón “Siguiente”: SALAZAR CACHO, Iris Nohely Página 88
  • 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. 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
  • 91. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Similar procedimiento se sigue para la conexión del listbox de “Editoriales”, con la salvedad que se elige los datos de la tabla “Editoriales”. Finalmente, las pantallas del nuevo programa: SALAZAR CACHO, Iris Nohely Página 91
  • 92. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I PRÁCTICA VI 1. MOSTRAR EN UN FORMULARIO INFORMACIÓN DE LAS CATEGORÍAS DE LA BASE DE DATOS NORTHWIND; SE PERMITIRÁ AGREGAR OTRAS CATEGORÍAS; MÁS NO ELIMINARLAS.  Creamos el origen de datos, esta ventana la podemos encontrar cerca de la ventana herramientas o al presionar las siguiente combinación Mayus+Alt+D: Nota: Un Origen de datos se crea para todo el proyecto. SALAZAR CACHO, Iris Nohely Página 92
  • 93. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 93
  • 94. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 94
  • 95. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Diseñamos el Formulario; para ello debemos seguir los siguientes pasos: SALAZAR CACHO, Iris Nohely Página 95
  • 96. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Luego arrastramos la lista “Categorías” hacia el formulario; se mostrará lo siguiente:  LOS NOMBRES DE LA CAJA DE TEXTO VARIAN DE ACUERDO AL TIPO DE DATO QUE EN SU EJECUCIÓN CONTENDRÁ:  LA CAJA DE TEXTO QUE CORRESPONDE AL CÓDIGO DE CATEGORÍA TIENE POR NOMBRE “CategoryIdTextBox”.  LA CAJA DE TEXTO QUE CORRESPONDE AL NOMBRE DE CATEGORÍA TIENE POR NOMBRE “CategoryNameTextBox”.  LA CAJA DE TEXTO QUE CORRESPONDE A LA DESCRIPCOÓN TIENE POR NOMBRE “DescriptionTextBox”.  La caja de texto que corresponde al Código de la Categoría 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”. SALAZAR CACHO, Iris Nohely Página 96
  • 97. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Para agregar una nueva categoría debemos hacer clic en el siguiente botón:  Escribiremos los datos que nos solicitan, y para guardar dicha información debemos hacer clic en el botón:  Entonces tendremos una nueva categoría: SALAZAR CACHO, Iris Nohely Página 97
  • 98. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 2. MOSTRAR TODOS LOS PRODUCTOS DE UNA CATEGORÍA:  Agregaremos un nuevo origen de datos; similar al ejercicio 1; para el presente ejemplo elegiremos la tabla categorías.  El código 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 SALAZAR CACHO, Iris Nohely Página 98
  • 99. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 99
  • 100. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 100
  • 101. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 3. MOSTRAR LOS DETALLES DE UN PRODUCTO INGRESADO (CÓDIGO DEL PRODUCTO) POR TECLADO (NO UTILIZAR STORED PROCEDURE):  Código 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 número 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 SALAZAR CACHO, Iris Nohely Página 101
  • 102. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 102
  • 103. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 103
  • 104. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 4. MOSTRAR EN UN MENSAJE EL NOMBRE DEL PRODUCTO, PRECIO Y STOCK DE LOS PRODUCTOS DE UN DETERMINADO PROVEEDOR (NO USAR STORED PROCEDURE, EL CÓDIGO DEL PROVEEDOR SERÁ INGRESADO POR TECLADO):  Código 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 SALAZAR CACHO, Iris Nohely Página 104
  • 105. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 105
  • 106. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 5. MOSTRAR LOS PRODUCTOS DE UN PROVEEDOR EN UNA LISTA; EL CÓDIGO DEL PROVEEDOR SERÁ INGRESADO POR TECLADO (NO UTILIZAR STORED PROCEDURE):  Código 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 SALAZAR CACHO, Iris Nohely Página 106
  • 107. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 107
  • 108. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 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 Sesión”. 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 opción “Windows Form”, se muestran las siguientes opciones: SALAZAR CACHO, Iris Nohely Página 108
  • 109. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Elegimos la opción “Formulario de Inicio de Sesión”:  Código 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 SÓLO 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 SALAZAR CACHO, Iris Nohely Página 109
  • 110. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 110
  • 111. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 7. PERMITIR CAMBIAR DE CLAVE AL USUARIO EN OTRO FORMULARIO:  Código 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 SALAZAR CACHO, Iris Nohely Página 111
  • 112. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 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, comprensión e interpretación. 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: SALAZAR CACHO, Iris Nohely Página 112
  • 113. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Clic en la opción “Reporting” y elegir “Informe”:  Finalmente la ventana para desarrollar le informe está creada: SALAZAR CACHO, Iris Nohely Página 113
  • 114. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Una vez creado el informe; debemos crear su origen de datos; es decir de dónde deseamos obtener la información:  Clic en la pestaña “Nuevo” y elegir “Nuevo Origen de Datos”:  Se mostrará la ventana “Propiedades del Conjunto de Datos”, clic en el botón “Nuevo”: SALAZAR CACHO, Iris Nohely Página 114
  • 115. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Aparece la ventana “Asistente para la Configuración de Datos”, clic en “Siguiente”:   SALAZAR CACHO, Iris Nohely Página 115
  • 116. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Clic en el botón “Nueva Conexión” SALAZAR CACHO, Iris Nohely Página 116
  • 117. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  En esta ventana escribimos el nombre del servidos y la base de datos a la que deseamos conectarnos:  Probamos la conexión: SALAZAR CACHO, Iris Nohely Página 117
  • 118. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  La siguiente ventana demuestra que está cargando los datos para poder escoger el correcto:  Elegimos el procedimiento almacenado correcto: SALAZAR CACHO, Iris Nohely Página 118
  • 119. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Podemos observar el entorno de dearrollo de un Informe; aquí podemos usar algunas herramientas para mostrar la información: SALAZAR CACHO, Iris Nohely Página 119
  • 120. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 120
  • 121. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Debemos crear un nuevo formulario, en este incluiremos el reporte, mediante la herramienta “Reporte Viewer” SALAZAR CACHO, Iris Nohely Página 121
  • 122. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  La vista del informe: SALAZAR CACHO, Iris Nohely Página 122
  • 123. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Podemos exportar el informe a Excel, PDF o Word:  Elegimos la ruta e, donde deseamos guardar el informe: SALAZAR CACHO, Iris Nohely Página 123
  • 124. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I  Ahora podemos visualizar el informe desde Ms. Word: SALAZAR CACHO, Iris Nohely Página 124
  • 125. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I PRÁCTICA VII 1. MOSTRAR LAS ÓRDENES REALIZADAS POR UN EMPLEADO:  Código SQL: 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  Código en Visual: 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 SALAZAR CACHO, Iris Nohely Página 125
  • 126. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 126
  • 127. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I 2. MOSTRAR EL TOTAL DE ÓRDENES REALIZADAS POR UN EMPLEADO:  Código SQL: create procedure sp2 @y int as select distinct companyname, YEAR(orderdate) as año, 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  Código Visual: 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 SALAZAR CACHO, Iris Nohely Página 127
  • 128. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I SALAZAR CACHO, Iris Nohely Página 128
  • 129. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I CREAR UN SISTEMA DE CONTROL DE ASISTENCIA PARA LA XII- SEMANA SISTÉMICA 1. FORMULARIOS: MANTENIMIENTO DE INSTITUCIONES EDUCATIVAS: MANTENIMIENTO DE CONFERENCIAS: SALAZAR CACHO, Iris Nohely Página 129
  • 130. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I INGRESAR UN NUEVO PARTICIPANTE: CÓDIGO 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) SALAZAR CACHO, Iris Nohely Página 130
  • 131. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Código 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 SALAZAR CACHO, Iris Nohely Página 131
  • 132. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I BUSCAR UN PARTICIPANTE: SALAZAR CACHO, Iris Nohely Página 132
  • 133. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Código SQL: Búsqueda por código: create procedure cod @id varchar(20) as select * from PARTICIPANTES where IdParticipante like @id+'%' Búsqueda por apellido: create procedure apepaternito @a varchar(25) as select * from PARTICIPANTES where apepat like @a+'%' Código 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 SALAZAR CACHO, Iris Nohely Página 133
  • 134. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I REGISTRAR ASISTENTES: SALAZAR CACHO, Iris Nohely Página 134
  • 135. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Código 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 SALAZAR CACHO, Iris Nohely Página 135
  • 136. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Código 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 SALAZAR CACHO, Iris Nohely Página 136
  • 137. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I REPORTE DE ALUMNOS PARTICIPANTES, ORDENADOS ALFABÉTICAMENTE: SALAZAR CACHO, Iris Nohely Página 137
  • 138. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I Código SQL: alter procedure asist as select IdParticipante, ApePat+' '+ApeMat+' '+Nombres as Nombre, Email,IdInsti from PARTICIPANTES order by ApePat+ApeMat+Nombres REPORTE DE CONFERENCIAS DICTADAS: Código SQL: create proc conf as select * from CONFERENCIAS order by NombreConfe SALAZAR CACHO, Iris Nohely Página 138
  • 139. Universidad Nacional de Cajamarca MANUAL DE PROGRAMACIÓN APLICADA I REPORTE DE ASISTENTES POR CONFERENCIA: Código 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 SALAZAR CACHO, Iris Nohely Página 139