Manual Visual 1

July 30, 2018 | Author: Albert Smith Leiva Izquierdo | Category: Sql, Microsoft Sql Server, Information Retrieval, Digital Technology, Digital & Social Media
Share Embed Donate


Short Description

Download Manual Visual 1 ...

Description

Universidad Nacional de Cajamarca Facultad de Ingeniería Escuela Académico Profesional de Ingeniería de Sistemas CURSO

:

PROGRAMACIÓN APLICADA I

TEMA

:

MANUAL SEGUNDA PARTE

INTEGRANTES:

LEIVA IZQUIERDO, Albert

DOCENTE :

Ing. CALOS APARACIO

CICLO

:

VI

ALUMNO: ALBERT SMITH LEIVA

 Manejo de MENUS TOOL STRIP BOX: Permite la creación de una barra de Menús con imágenes Form2.MdiParent .MdiParent = Me LLAMADA DE UN FORMULARIO A OTRO O TRO : Form2 Form2.Show() Form2 .Show()

Configuración de la colección de Imágenes para el Tool Strip

2

ALUMNO: ALBERT SMITH LEIVA

El tool Strip quedaría de la siguiente forma:

Para crear image list y ToolStrip B ottom:

Public Class Form1 Private Sub ToolStripButton1_Click(sender As System.Object System. Object, , e As System.EventArgs System.EventArgs) ) End Sub Private Sub Form1_Load(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles MyBase .Load MyBase.Load ToolStrip1.ImageList ToolStrip1.ImageList = ImageList1 ToolStripButton1.ImageIndex = 0 ToolStripButton2.ImageIndex = 1 ToolStripButton3.ImageIndex = 2 ToolStripButton4.ImageIndex = 3

End Sub End Class

3

ALUMNO: ALBERT SMITH LEIVA

Menú con Tool Strip, con iconos programados para abrir nuevos formularios:

ToolTip: Ayudas que aparecen cuando pasamos el cursor del mouse por un d eterminado botón.

4

ALUMNO: ALBERT SMITH LEIVA

Public Class Form2 Private Sub Form2_Load(sender As System.Object System. Object, , e As System.EventArgs System.EventArgs) ) Handles MyBase MyBase.Load .Load Try PictureBox1.Image = Image Image.FromFile( .FromFile("D:\Software\Proyecto "D:\Software\Proyecto Ejercicios con menu\Proyecto Ejercicios con menu\bin\Debug\Ccomp.bmp" ) Catch ex As Exception MessageBox.Show( MessageBox .Show("ex.message" "ex.message" ) End Try Try PictureBox2.Image = Image Image.FromFile( .FromFile("D:\Software\Proyecto "D:\Software\Proyecto Ejercicios con menu\Proyecto Ejercicios con menu\bin\Debug\programador1.jpg" ) Catch ex As Exception MessageBox.Show( MessageBox .Show("ex.message" "ex.message" ) End Try PictureBox2.Image = Image Image.FromFile( .FromFile("D:\Software\Proyecto "D:\Software\Proyecto Ejercicios con menu\Proyecto Ejercicios con menu\bin\Debug\programador1.jpg" ) RichTextBox1.LoadFile( "D:\Software\Proyecto Ejercicios con menu\Proyecto Ejercicios Ejercicio s con menu\bin\Debu menu\bin\Debug\Ccomputi g\Ccomputing.rtf" ng.rtf") ) Endpáginas Sub web dentro de una aplicación, para estos e utiliza la herramienta Web Browser: Para alojar End Class

5

ALUMNO: ALBERT SMITH LEIVA Navegamos en una página web a partir de una aplicación:

Public Class Form3 Private Sub Form3_Load(sender As System.Object System. Object, , e As System.EventArgs System.EventArgs) ) Handles MyBase MyBase.Load .Load WebBrowser1.Navigate( "http://www.google.com.pe/" ) End Sub End Class

Public Class Form3 Private Sub Form3_Load(sender As System.Object System. Object, , e As System.EventArgs System.EventArgs) ) Handles MyBase MyBase.Load .Load WebBrowser1.Navigate( "http://www.google.com.pe/" ) End Sub Private Sub WebBrowser1_DocumentCompleted(sender As System.Object System. Object, , e As System.Windows.Forms. WebBrowserDocumentCompletedEventArgs ) Handles WebBrowser1.DocumentCompleted End Sub ‘PARA AGREGAR UNA PAGINA MANUAL

Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click WebBrowser1.Navigate(TextBox1.Text) End Sub End Class

6

ALUMNO: ALBERT SMITH LEIVA Ejercicio con base de datos

Código: Imports System.Data.SqlClient Public Class Form6 Private Sub RadioButton2_CheckedChanged(sender As System.Object System.Object, , e As System.EventArgs System. EventArgs) ) Handles RadioButton2.CheckedChanged Dim datos As New SqlDataAdapter ("compra" "compra", , conex) datos.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure datos.SelectCommand.Parameters.Add( "@com" "@com", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = 0 Dim ds As New Data.DataSet Data.DataSet datos.Fill(ds, "Alumnoss" "Alumnoss") ) DataGridView1.DataSource = ds.Tables(0)

End Sub Private Sub RadioButton1_CheckedChanged(sender As System.Object System.Object, , e As System.EventArgs System. EventArgs) ) Handles RadioButton1.CheckedChanged End Sub End Class

7

ALUMNO: ALBERT SMITH LEIVA

CREANDO UN Modulo

Module Module1 Public conex As New System.Data.SqlClient. SqlConnection ("server=.;database = semana_sistemica;trusted_connection=true" ) End Module

8

ALUMNO: ALBERT SMITH LEIVA

LLENAR UNA BASE DE DATOS A PARTIR DE UN EXCEL  Para eso tenemos que guardar el archivo Excel como CSV (delimitado (delimitado por comas)

9

ALUMNO: ALBERT SMITH LEIVA

Para poder llevar los datos del archivo .csv a Sqlserver, haremos el siguiente código: bulk insert dbo dbo. .Estudiantesnew from 'C:\Users\Ing. Sistemas\Desktop\alumnos.csv' with ( fieldterminator = ',' ',', , rowterminator = '\n'

Y para conectarlo a Visual Studio se utiliza: Imports System.Data.SqlClient

Para conectarnos al formulario: Imports System.Data.SqlClient Public Class WebForm1 Inherits System.Web.UI. Page Protected Sub Page_Load(ByVal Page_Load( ByVal sender As Object Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles Me Me.Load .Load Dim conex As New SqlConnection ("server = localhost;database = Northwind; trusted_connection = true") true" ) 'puede ser ip, (local),nombre de BD, nombre servidor Dim datos As New SqlDataAdapter ("select*from Estudiantesnew", Estudiantesnew", conex) Dim ds As New Data.DataSet Data.DataSet datos.Fill(ds, "Alumnos" "Alumnos") ) "

10

"

ALUMNO: ALBERT SMITH LEIVA

Y para conectarlo a Visual Studio UNA BASE DE DATOS se utiliza: 







 

Imports System.Data.SqlClient: System.Data.SqlClient: Establece la librería para la conexión de Visual

Studio con SqlServer, esto garantiza el manejo de datos provenientes de SQL server en Visual Studio. server = localhost;database = Northwind; trusted_connection = true": Cadena de conexión al Servidor, este sirve para establecer la conexión con la base de datos con la que se va a trabajar. SqlDataAdapter (clase): 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; y Update, que cambia los datos en el origen de datos para que coincidan con los datos en DataSet utilizando las instrucciones de Transact-SQL en el origen de datos adecuado. DataSet (clase): 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. También se puede imponer la integridad de los datos de DataSet mediante los objetos UniqueConstraint y ForeignKeyConstraint. Para obtener información más detallada sobre el trabajo con objetos DataSet Fill: Rellena un objeto DataSet o un objeto DataTable. Data source = origen de datos de data set

Para poder visualizar los datos traídos por el dataset se utiliza, DataGridView:

DATAGRIDVIEW: Proporciona una tabla personalizable para mostrar datos. La clase

DataGridView permite personalizar celdas, filas, columnas y bordes Puede utilizar un control DataGridView para mostrar datos con o sin un origen de datos subyacente. Sin 11

ALUMNO: ALBERT SMITH LEIVA

especificar un origen de datos, puede crear las columnas y filas que contendrán los datos y agregarlas directamente a DataGridView.

Páginas Web en Visual  En una Aplicación web: Imports System.Data.SqlClient Public Class WebForm1 Inherits System.Web.UI. Page Protected Sub Page_Load(ByVal Page_Load(ByVal sender As Object Object,, ByVal e As System.EventArgs System. EventArgs)) Handles Me Me.Load .Load Dim conex As New SqlConnection SqlConnection(("server=.;databa "server=.;database=northwind; se=northwind; trusted_connect trusted_connection=true" ion=true")) 'puedes usar en server = localhost, . , o ip Dim datos As New SqlDataAdapter SqlDataAdapter(("select * from estudiantes", estudiantes" , conex) Dim ds As New Data.DataSet Data.DataSet datos.Fill(ds, "Alumnos" "Alumnos")) GridView1.DataSource GridView1.DataSource = ds.Tables("Alumnos" ds.Tables("Alumnos")) GridView1.DataBind() End Sub End Class

En un GridView:

12

ALUMNO: ALBERT SMITH LEIVA

13

ALUMNO: ALBERT SMITH LEIVA

14

ALUMNO: ALBERT SMITH LEIVA

15

ALUMNO: ALBERT SMITH LEIVA

EJERCICIOS

Código en visual para el buton1

Imports System.Data.SqlClient Public Class Form4

Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System. EventArgs) ) Handles Button1.Click Dim datos As New SqlDataAdapter ("busca_alum_cod" , conex) datos.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure datos.SelectCommand.Parameters.Add( "@p" "@p", , SqlDbType SqlDbType.VarChar, .VarChar, 10).Value = TextBox1.Text Dim ds As New Data.DataSet Data.DataSet datos.Fill(ds, "por_nombre" ) DataGridView1.DataSource = ds.Tables( "por_nombre" "por_nombre") ) End Sub End Class

16

ALUMNO: ALBERT SMITH LEIVA

Código en visual para el evento keypress para que funcione solo con el enter:

17

ALUMNO: ALBERT SMITH LEIVA Imports System.Data.SqlClient Public Class Form4

Private Sub TextBox1_KeyPress(sender As Object Object, , e As System.Windows.Forms. KeyPressEventArgs ) Handles TextBox1.KeyPress If e.KeyChar = Chr(13) Then Dim datos As New SqlDataAdapter ("busca_alum_cod" , conex) datos.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure datos.SelectCommand.Parameters.Add( "@p" "@p", , SqlDbType SqlDbType.VarChar, .VarChar, 10).Value = TextBox1.Text Dim ds As New Data.DataSet Data.DataSet datos.Fill(ds, "por_nombre" "por_nombre") ) DataGridView1.DataSource = ds.Tables( "por_nombre" ) End If End Sub End Class

BUSCAR ALUMNO POR SEXO

Imports System.Data.SqlClient

18

ALUMNO: ALBERT SMITH LEIVA Public Class Form3 Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click If RadioButton1.Checked Then Dim datos As New SqlDataAdapter ("select * from estudiantes where sexo=1" , conex) Dim ds As New Data.DataSet Data.DataSet datos.Fill(ds, "alumnos" "alumnos") ) DG.DataSource = ds.Tables(0) ElseIf RadioButton2.Checked Then Dim datos As New SqlDataAdapter ("select * from estudiantes where sexo=2" , conex) Dim ds As New Data.DataSet Data.DataSet datos.Fill(ds, "alumnos" "alumnos") ) dg.DataSource = ds.Tables(0) End If End Sub

End Class

CONSULTAS A BASES DE DATOS (USANDO SQL SERVER 2008 AND VISUAL STUDIO 2010)

MdiParent: Habilita un formulario para que actué como padre de otro, esto equivale a

decir que este habilitado para poder llamarlo (abrirlo o activarlo) en el momento conveniente. Para poder utilizar esta propiedad, el código será: Dim FRM As New Form2 FRM.MdiParent = Me FRM.Show()

ToolStripMenú: Permite la creación de menús con imágenes y texto, para hacer más

fácil el enlace de un formulario a otro.

1) Comenzaremos creando, un Formulario, con un Menú Menú gráfico de tal manera que cada uno de estos nos permita el acceso a: Mantenimiento, Consultas, Reportes

19

ALUMNO: ALBERT SMITH LEIVA

Por ejemplo para acceder a la primera consulta del menú, el código será: Public Class Form1 Private Sub NumeroDeProductosPorCategoriaToolStripMenuItem_Click(sender System.Object System.Object, , e As System.EventArgs System. EventArgs) ) Handles NumeroDeProductosPorCategoriaToolStripMenuItem.Click Form2.MdiParent Form2 .MdiParent = Me Form2.Show() Form2 .Show() End Sub End Class

As

2) La primera consulta será, indicar el número de Productos por Categoría: 

 

20

DATA.SELECTCOMMAND.COMMANDTYPE = COMMANDTYPE.STOREDPROCEDURE: COMMANDTYPE .STOREDPROCEDURE: Línea de Código utilizada para

indicar el tipo de commando Sql que se va a implementar. Sea este una consulta, o un procedimiento almacenado. data.SelectCommand.Parameters.Add( "@aaaa" "@aaaa",, SqlDbType SqlDbType.Int).Value .Int).Value = : Comando utilizado para agregar parámetros (si los hubiera) a una búsqueda. DataGridView1.DataSource DataGridView1.DataSource = ds.Tables("QUERY7"): ds.Tables("QUERY7"): Indica en datagriew o vista se mostrarán los datos de la consulta SQL realizada.

ALUMNO: ALBERT SMITH LEIVA

El código en Visual Studio será: Imports System.Data.SqlClient Public Class Form2 Private Sub Form2_Load(sender As Object Object, , e As System.EventArgs System.EventArgs) ) Handles Me Me.Load .Load Dim data As New SqlDataAdapter ("quary" "quary", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.Fill(ds, "QUERY1" "QUERY1") ) DataGridView1.DataSource = ds.Tables( "QUERY1" "QUERY1") ) End Sub End Class

Consulta: create proc quary as select c.CategoryName CategoryName, ,SUM SUM( (p.CategoryID CategoryID) )as total from Products p join Categories c on c.CategoryID CategoryID= =p.CategoryID group by c.CategoryName

21

ALUMNO: ALBERT SMITH LEIVA

3) La siguiente consulta será mostrar un listín de productos por cada categoría, indicando el nombre de esta: Imports System.Data.SqlClient Public Class Form3 Private Sub Form3_Load(sender As System.Object System. Object, , e As System.EventArgs System.EventArgs) ) Handles MyBase MyBase.Load .Load 'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet.Categories' Puede moverla o quitarla según sea necesario. Me.CategoriesTableAdapter.Fill( Me .CategoriesTableAdapter.Fill( Me Me.NorthwindDataSet.Categories) .NorthwindDataSet.Categories) End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles ComboBox1.SelectedIndexChanged Dim data As New SqlDataAdapter ("catego_id" , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType .StoredProcedure data.SelectCommand.Parameters.Add( "@c" "@c", , SqlDbType SqlDbType.Int).Value .Int).Value = ComboBox1.SelectedValue data.Fill(ds, "QUERY2" "QUERY2") ) DataGridView1.DataSource = ds.Tables( "QUERY2" "QUERY2") ) End Sub End Class

22

ALUMNO: ALBERT SMITH LEIVA

Procedimiento: create proc catego_id @c int as select p.ProductID ProductID, ,p.ProductName ProductName, ,p.UnitPrice UnitPrice, ,s.CompanyName CompanyName, ,c.CategoryID from Products p join Categories c on c.CategoryID CategoryID= =p.CategoryID join Suppliers s on s.SupplierID SupplierID= =p.SupplierID where c.CategoryID CategoryID= =@c

4) Consultar Productos dentro del del rango de precio precio indicado en el formulario: Imports System.Data.SqlClient Public Class Consulta03 Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click Dim data As New SqlDataAdapter SqlDataAdapter( ("QUERY3" "QUERY3", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add("@PMAYOR" data.SelectCommand.Parameters.Add( "@PMAYOR", , SqlDbType SqlDbType.Int).Value .Int).Value = TextBox1.Text data.SelectCommand.Parameters.Add("@PMENOR" data.SelectCommand.Parameters.Add( "@PMENOR", , SqlDbType SqlDbType.Int).Value .Int).Value = TextBox2.Text data.Fill(ds, "QUERY3" "QUERY3") ) DataGridView1.DataSource = ds.Tables("QUERY3" ds.Tables("QUERY3") ) End Sub End Class

5)

23

Busca productos que tengan coincidencia al empezar.

ALUMNO: ALBERT SMITH LEIVA

CREATE PROC QUERY4 @T VARCHAR VARCHAR( (4) AS SELECT ProductName , UnitPrice UnitPrice, ,CategoryID ,SupplierID FROM Products WHERE ProductName LIKE @T @T+ +'%'

Imports System.Data.SqlClient Public Class Consulta04 Private Sub TextBox1_KeyPress(sender As Object Object, , e As System.Windows.Forms. System.Windows.Forms.KeyPressEventArgs KeyPressEventArgs) ) Handles TextBox1.KeyPress Dim data As New SqlDataAdapter SqlDataAdapter( ("QUERY4" "QUERY4", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@T" "@T", , SqlDbType SqlDbType.VarChar).Value .VarChar).Value = TextBox1.Text data.Fill(ds, "QUERY4" "QUERY4") ) DataGridView1.DataSource = ds.Tables("QUERY4" ds.Tables("QUERY4") ) End Sub End Class

24

ALUMNO: ALBERT SMITH LEIVA

6) Información del producto, buscando buscando por su pertenencia al proveedor.

CREATE PROC QUERY5 @SID AS INT AS SELECT ProductName ,UnitPrice UnitPrice, ,UnitsInStock , S.SupplierID , S.CompanyName FROM Products P INNER JOIN Suppliers S ON P.SupplierID = S.SupplierID WHERE @SID = S.SupplierID

Imports System.Data.SqlClient Public Class Consulta05 Private Sub Consulta05_Load(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles MyBase .Load MyBase.Load 'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet1.Suppliers' Puede moverla o quitarla según sea necesario. Me.SuppliersTableAdapter.Fill( Me .SuppliersTableAdapter.Fill( Me Me.NorthwindDataSet1.Suppliers) .NorthwindDataSet1.Suppliers) End Sub Private Sub ListBox1_SelectedIndexChanged(sender As System.Object System. Object, , e As System.EventArgs System. EventArgs) ) Handles ListBox1.SelectedIndexChanged Dim data As New SqlDataAdapter ("QUERY5" "QUERY5", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@SID" "@SID", , SqlDbType SqlDbType.Int).Value .Int).Value = ListBox1.SelectedValue data.Fill(ds, "QUERY5" "QUERY5") ) DataGridView1.DataSource = ds.Tables("QUERY5" ds.Tables( "QUERY5") ) End Sub End Class

25

ALUMNO: ALBERT SMITH LEIVA

7)

Búsqueda de clientes por el Order Order ID de las Órdenes de Compras en las que aparece.

CREATE PROC QUERY6 @OID AS INT AS SELECT O.OrderID OrderID, ,Products Products. .ProductID ProductID, , Products Products. .ProductName ProductName, , Products Products. .ProductID FROM Orders O INNER JOIN [Order Details] OD ON O.OrderID OrderID= =OD OD. .OrderID INNER JOIN Products ON Products Products. .ProductID = OD OD. .ProductID WHERE O.OrderID = @OID

26

ALUMNO: ALBERT SMITH LEIVA

8)

Consulta de productos con o sin stock:

CREATE PROC QUERY7 AS SELECT ProductID ProductID, ,ProductName ,UnitPrice UnitPrice, ,UnitsInStock FROM Products WHERE UnitsInStock != !=0 0

CREATE PROC QUERY8 AS SELECT ProductID ProductID, ,ProductName ,UnitPrice UnitPrice, ,UnitsInStock FROM Products WHERE UnitsInStock = 0

Imports System.Data.SqlClient Public Class Consulta07 Private Sub RadioButton1_CheckedChanged(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles RadioButton1.CheckedChanged Dim data As New SqlDataAdapter SqlDataAdapter( ("QUERY7" "QUERY7", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.Fill(ds, "QUERY7" "QUERY7") ) DataGridView1.DataSource = ds.Tables("QUERY7" ds.Tables("QUERY7") ) End Sub

+

27

ALUMNO: ALBERT SMITH LEIVA 9)

Consulta de Productos Descontinuados con Check Box

CREATE PROC QUERY9 @D AS BIT AS SELECT ProductName ,UnitPrice UnitPrice, ,UnitsInStock , CategoryID , Discontinued FROM Products where Discontinued = @D

Imports System.Data.SqlClient Public Class Consulta08 Private Sub CheckBox1_CheckedChanged(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles CheckBox1.CheckedChanged Dim data As New SqlDataAdapter ("QUERY9" "QUERY9", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@D" "@D", , SqlDbType SqlDbType.Bit).Value .Bit).Value = CheckBox1.Checked data.Fill(ds, "QUERY9" "QUERY9") ) DataGridView1.DataSource = ds.Tables("QUERY9" ds.Tables( "QUERY9") ) End Sub

28

ALUMNO: ALBERT SMITH LEIVA

10) Consulta de productos por nombre. Imports System.Data.SqlClient Public Class Form1 Private Sub TextBox1_KeyPress1( ByVal sender As Object Object, , ByVal e As System.Windows.Forms. KeyPressEventArgs ) Handles TextBox1.KeyPress If (e.KeyChar = ChrW(13)) Then If (ListBox1.SelectedIndex = 0) Then Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER11" "EJER11", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@P" "@P", , SqlDbType SqlDbType.VarChar).Value .VarChar).Value = TextBox1.Text data.Fill(ds, "EJER11" "EJER11") ) DataGridView1.DataSource = ds.Tables("EJER11" ds.Tables( "EJER11") ) ElseIf (ListBox1.SelectedIndex = 1) Then Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER12" "EJER12", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@P1" "@P1", , SqlDbType SqlDbType.VarChar).Value .VarChar).Value = TextBox1.Text data.Fill(ds, "EJER12" "EJER12") ) DataGridView1.DataSource = ds.Tables("EJER12" ds.Tables( "EJER12") ) ElseIf (ListBox1.SelectedIndex = 2) Then Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER13" "EJER13", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@P2" "@P2", , SqlDbType SqlDbType.VarChar).Value .VarChar).Value = TextBox1.Text data.Fill(ds, "EJER13" "EJER13") ) DataGridView1.DataSource = ds.Tables("EJER13" ds.Tables( "EJER13") ) ElseIf (ListBox1.SelectedIndex = 3) Then Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER14" "EJER14", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@P4" "@P4", , SqlDbType SqlDbType.VarChar).Value .VarChar).Value = TextBox1.Text data.Fill(ds, "EJER14" "EJER14") ) DataGridView1.DataSource = ds.Tables("EJER14" ds.Tables( "EJER14") ) ElseIf (ListBox1.SelectedIndex = 4) Then Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER15" "EJER15", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@P5" "@P5", , SqlDbType SqlDbType.VarChar).Value .VarChar).Value = TextBox1.Text data.Fill(ds, "EJER15" "EJER15") ) DataGridView1.DataSource = ds.Tables("EJER15" ds.Tables( "EJER15") ) End If End If End Sub

29

ALUMNO: ALBERT SMITH LEIVA

30

ALUMNO: ALBERT SMITH LEIVA

31

ALUMNO: ALBERT SMITH LEIVA

11) Hacer un diseño que permita Ver productos con Stock, Vigentes, clasificados por categorías a través de un group box, pa ra categoría el usuario la indica y filtra los productos por esta categoría. Además añadir un radio button que muestre todos los productos.

Imports System.Data.SqlClient Public Class Form2

Private Sub Button1_Click( ByVal sender As System.Object System. Object, , ByVal e As System.EventArgs System. EventArgs) ) Handles Button1.Click If (RadioButton1.Checked = True True) ) Then Dim data As New SqlDataAdapter ("EJER21" "EJER21", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.Fill(ds, "EJER21" "EJER21") ) DataGridView1.DataSource = ds.Tables("EJER21" ds.Tables( "EJER21") ) ElseIf (RadioButton2.Checked = True True) ) Then Dim data As New SqlDataAdapter ("EJER22" "EJER22", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@D" "@D", , SqlDbType SqlDbType.Bit).Value .Bit).Value = RadioButton1.Checked data.Fill(ds, "EJER22" "EJER22") ) DataGridView1.DataSource = ds.Tables("EJER22" ds.Tables( "EJER22") ) ElseIf (RadioButton3.Checked = True True) ) Then Dim data As New SqlDataAdapter ("EJER23" "EJER23", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@CID" "@CID", , SqlDbType SqlDbType.Int).Value .Int).Value = TextBox1.Text data.Fill(ds, "EJER23" "EJER23") ) DataGridView1.DataSource = ds.Tables("EJER23" ds.Tables( "EJER23") ) ElseIf (RadioButton4.Checked = True True) ) Then Dim data As New SqlDataAdapter ("EJER24" "EJER24", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.Fill(ds, "EJER24" "EJER24") ) DataGridView1.DataSource = ds.Tables("EJER24" ds.Tables( "EJER24") ) End If End Sub End Class

32

ALUMNO: ALBERT SMITH LEIVA

33

ALUMNO: ALBERT SMITH LEIVA

34

ALUMNO: ALBERT SMITH LEIVA

12) Modificar el ejercicio anterior, quitando el botón y haciendo que la consulta por categorías se realice solo con un enter. Imports System.Data.SqlClient Public Class Form3 Private Sub RadioButton1_CheckedChanged( RadioButton1_CheckedChanged(ByVal ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged, RadioButton4.CheckedChanged If (RadioButton1.Checked = True True) ) Then Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER21" "EJER21", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.Fill(ds, "EJER21" "EJER21") ) DataGridView1.DataSource = ds.Tables("EJER21" ds.Tables("EJER21") ) ElseIf (RadioButton2.Checked = True True) ) Then Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER22" "EJER22", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add("@D" data.SelectCommand.Parameters.Add( "@D", , SqlDbType SqlDbType.Bit).Value .Bit).Value = RadioButton1.Checked data.Fill(ds, "EJER22" "EJER22") ) DataGridView1.DataSource = ds.Tables("EJER22" ds.Tables("EJER22") ) ElseIf (RadioButton4.Checked = True True) ) Then Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER24" "EJER24", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.Fill(ds, "EJER24" "EJER24") ) DataGridView1.DataSource = ds.Tables("EJER24" ds.Tables("EJER24") ) End If End Sub Private Sub TextBox1_KeyPress( TextBox1_KeyPress(ByVal ByVal sender As Object Object, , ByVal e As System.Windows.Forms. System.Windows.Forms.KeyPressEventArgs KeyPressEventArgs) ) Handles TextBox1.KeyPress If (e.KeyChar = ChrW(13)) Then If (RadioButton3.Checked = True True) ) Then Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER23" "EJER23", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@CID" "@CID", , SqlDbType SqlDbType.Int).Value .Int).Value = TextBox1.Text data.Fill(ds, "EJER23" "EJER23") ) DataGridView1.DataSource = ds.Tables("EJER23" ds.Tables("EJER23") ) End If End If End Sub End Class

35

ALUMNO: ALBERT SMITH LEIVA

36

ALUMNO: ALBERT SMITH LEIVA

37

ALUMNO: ALBERT SMITH LEIVA 13) MonthCalendar: Objeto Calendario, permite obtener fechas de acuerdo a los meses y años elegidos. A. Mostrar las órdenes de ventas de una determinada fecha, obteniendo estas de un MonthCalendar.

ALTER PROC [dbo] [dbo]. .[EJER31] @mda as datetime AS SELECT O.OrderID OrderID, , OrderDate OrderDate, , ProductName , P.UnitPrice UnitPrice, , Quantity FROM Orders O INNER JOIN [Order Details] OD ON O.OrderID = OD OD. .OrderID INNER JOIN Products P ON OD OD. .ProductID = P.ProductID WHERE OrderDate = @mda

Imports System.Data.SqlClient Public Class Consulta12 Private Sub MonthCalendar1_DateChanged( MonthCalendar1_DateChanged(ByVal ByVal sender As System.Object System.Object, , ByVal e As System.Windows.Forms. DateRangeEventArgs) System.Windows.Forms.DateRangeEventArgs ) Handles MonthCalendar1.DateChanged Dim data As New SqlDataAdapter SqlDataAdapter( ("EJER31" "EJER31", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.SelectCommand.Parameters.Add( "@mda" "@mda", , SqlDbType SqlDbType.DateTime).Value .DateTime).Value = MonthCalendar1.SelectionStart data.Fill(ds, "EJER31" "EJER31") ) DataGridView1.DataSource = ds.Tables("EJER31" ds.Tables("EJER31") ) End Sub End Class

38

ALUMNO: ALBERT SMITH LEIVA

INGRESANDO INFORMACIÓN DESDE VISUAL STUDIO 01. Creamos un Store Procedure en SQL, para poder ingresar registros, en este caso era a una tabla Personas: El código SqlTransac es: CREATE PROC INSERTAR_PERSONA @ID CHAR CHAR( (8), @N VARCHAR (30), 30), @APE VARCHAR (40), 40), @EM VARCHAR VARCHAR( (50), 50), @G CHAR (1), @EC CHAR (1), @FN DATETIME AS INSERT INTO Personas VALUES( VALUES (@ID @ID, ,@N @N, , @APE @APE, ,@EM @EM, , @G @G, , @EC @EC, ,@FN @FN) )

En visual Studio creamos un formulario:

*FILL (conexión): Ejecuta la conexión entre Visual Studio y Sql Server, envía a Sql Adapter a recoger determinada información.

39

ALUMNO: ALBERT SMITH LEIVA

El código en Visual Studio es: Imports System.Data.SqlClient Public Class Form19 Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click Dim insert_per As New SqlCommand SqlCommand( ("INSERTAR_PERSONA" , conex) insert_per.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure insert_per.Parameters.Add( "@id" "@id", , SqlDbType SqlDbType.Char, .Char, 8).Value = TextBox1.Text insert_per.Parameters.Add( "@N" "@N", , SqlDbType SqlDbType.VarChar, .VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add( "@APE" "@APE", , SqlDbType SqlDbType.VarChar, .VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add( "@EM" "@EM", , SqlDbType SqlDbType.VarChar, .VarChar, 50).Value = TextBox4.Text insert_per.Parameters.Add( "G" "G", , SqlDbType SqlDbType.Char, .Char, 1).Value = TextBox5.Text insert_per.Parameters.Add( "@EC" "@EC", , SqlDbType SqlDbType.Char, .Char, 1).Value = TextBox6.Text insert_per.Parameters.Add( "@FN" "@FN", , SqlDbType SqlDbType.DateTime).Value .DateTime).Value = TextBox7.Text conex.Open() resp = insert_per.ExecuteNonQuery End Sub End Class

02. Ahora en la falla con el sexo:

40

ALUMNO: ALBERT SMITH LEIVA

El código será: Imports System.Data.SqlClient Public Class Form19 Sub limpiar_ingreso() TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox6.Text = "" TextBox7.Text = "" TextBox1.Focus() End Sub Private Sub Button1_Click(sender As System.Object System.Object, , e As System. EventArgs ) Handles Button1.Click Dim resp As Integer Dim insert_per As New SqlCommand ("INSERTAR_PERSONA" , conex) insert_per.CommandType = CommandType .StoredProcedure insert_per.Parameters.Add( "@ID" "@ID", , SqlDbType .Char, 8).Value = TextBox1.Text insert_per.Parameters.Add( "@N" "@N", , SqlDbType .VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add( "@APE" "@APE", , SqlDbType .VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add( "@EM" "@EM", , SqlDbType .VarChar, 50).Value = TextBox4.Text If (RadioButton1.Checked = True True) ) Then insert_per.Parameters.Add( "@G" "@G", , SqlDbType .Char, 1).Value = "M" ElseIf (RadioButton2.Checked = True True) ) Then insert_per.Parameters.Add( "@G" "@G", , SqlDbType .Char, 1).Value = "F" End If insert_per.Parameters.Add( "@EC" "@EC", , SqlDbType .Char, 1).Value = TextBox6.Text insert_per.Parameters.Add( "@FN" "@FN", , SqlDbType .DateTime).Value = TextBox7.Text If (resp = 1) Then MessageBox .Show("Se .Show( "Se grabo el registro" ) limpiar_ingreso() End If conex.Open() resp = insert_per.ExecuteNonQuery End Sub End Class

03. Con fecha con MastextBox y con Estado Civil en ListBox:

41

ALUMNO: ALBERT SMITH LEIVA

El código será: Imports System.Data.SqlClient Public Class Form19 Sub limpiar_ingreso() TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox1.Focus() End Sub Private Sub Button1_Click(sender As System.Object System.Object, , e As System. EventArgs ) Handles Button1.Click Dim resp As Integer Dim insert_per As New SqlCommand ("INSERTAR_PERSONA" , conex) insert_per.CommandType = CommandType .StoredProcedure insert_per.Parameters.Add( "@ID" "@ID", , SqlDbType .Char, 8).Value = TextBox1.Text insert_per.Parameters.Add( "@N" "@N", , SqlDbType .VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add( "@APE" "@APE", , SqlDbType .VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add( "@EM" "@EM", , SqlDbType .VarChar, 50).Value = TextBox4.Text If (RadioButton1.Checked = True True) ) Then insert_per.Parameters.Add( "@G" "@G", , SqlDbType .Char, 1).Value = "M" ElseIf (RadioButton2.Checked = True True) ) Then insert_per.Parameters.Add( "@G" "@G", , SqlDbType .Char, 1).Value = "F" End If insert_per.Parameters.Add( "@EC" "@EC", , SqlDbType .Char, 1).Value = LTrim(ListBox1.SelectedItem) insert_per.Parameters.Add( "@FN" "@FN", , SqlDbType .DateTime).Value = MaskedTextBox1.Text If (resp = 1) Then MessageBox .Show("Se .Show( "Se grabo el registro" ) limpiar_ingreso() End If conex.Open() resp = insert_per.ExecuteNonQuery End Sub End Class

04.

Ahora con ID con identificador numérico que aumenta de uno en uno, se altera el procedure:

ALTER PROC INSERTAR_PERSONA @N VARCHAR (30), 30), @APE VARCHAR (40), 40), @EM VARCHAR VARCHAR( (50), 50), @G CHAR (1), @EC CHAR (1), @FN DATETIME AS INSERT INTO Personas (nomperso nomperso, ,apeperso apeperso, ,email email, ,genero genero, ,estadocivil estadocivil, ,fechanac fechanac) ) VALUES( VALUES (@N @N, , @APE @APE, ,@EM @EM, , @G @G, , @EC @EC, ,@FN @FN) )

42

ALUMNO: ALBERT SMITH LEIVA

Luego Modificamos el Código y pantalla en Visual Studio:

Imports System.Data.SqlClient Public Class Form20 Sub limpiar_ingreso() TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox2.Focus() End Sub Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click Dim resp As Integer Dim insert_per As New SqlCommand SqlCommand( ("INSERTAR_PERSONA" "INSERTAR_PERSONA", , conex) insert_per.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure insert_per.Parameters.Add("@N" insert_per.Parameters.Add( "@N", , SqlDbType SqlDbType.VarChar, .VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@APE" insert_per.Parameters.Add( "@APE", , SqlDbType SqlDbType.VarChar, .VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@EM" insert_per.Parameters.Add( "@EM", , SqlDbType SqlDbType.VarChar, .VarChar, 50).Value = TextBox4.Text If (RadioButton1.Checked = True True) ) Then insert_per.Parameters.Add("@G" insert_per.Parameters.Add( "@G", , SqlDbType SqlDbType.Char, .Char, 1).Value = "M" ElseIf (RadioButton2.Checked = True True) ) Then insert_per.Parameters.Add("@G" insert_per.Parameters.Add( "@G", , SqlDbType SqlDbType.Char, .Char, 1).Value = "F" End If insert_per.Parameters.Add( "@EC", insert_per.Parameters.Add("@EC" , SqlDbType SqlDbType.Char, .Char, 1).Value = LTrim(ListBox1.SelectedItem) insert_per.Parameters.Add("@FN" insert_per.Parameters.Add( "@FN", , SqlDbType SqlDbType.DateTime).Value .DateTime).Value = MaskedTextBox1.Text If (resp = 1) Then MessageBox.Show( MessageBox .Show("Se "Se grabo el registro") registro") limpiar_ingreso() End If conex.Open() resp = insert_per.ExecuteNonQuery End Sub End Class

43

ALUMNO: ALBERT SMITH LEIVA

05.Con actualizaciones constantes en un Datagriew:

EL código SQl para el Datagriew será: create proc CONSULTAPERSONAS AS SELECT * FROM Personas

Imports System.Data.SqlClient Public Class Form21 Sub limpiar_ingreso() TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox2.Focus() End Sub Sub Cargardatos() Dim data As New SqlDataAdapter SqlDataAdapter( ("CONSULTAPERSONAS" "CONSULTAPERSONAS", , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure data.Fill(ds, "CONSULTAPERSONA" "CONSULTAPERSONA") ) DataGridView1.DataSource = ds.Tables("CONSULTAPERSONA" ds.Tables("CONSULTAPERSONA") ) End Sub Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click Dim resp As Integer Dim insert_per As New SqlCommand SqlCommand( ("INSERTAR_PERSONA" "INSERTAR_PERSONA", , conex) insert_per.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure insert_per.Parameters.Add("@N" insert_per.Parameters.Add( "@N", , SqlDbType SqlDbType.VarChar, .VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@APE" insert_per.Parameters.Add( "@APE", , SqlDbType SqlDbType.VarChar, .VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@EM" insert_per.Parameters.Add( "@EM", , SqlDbType SqlDbType.VarChar, .VarChar, 50).Value = TextBox4.Text If (RadioButton1.Checked = True True) ) Then insert_per.Parameters.Add("@G" insert_per.Parameters.Add( "@G", , SqlDbType SqlDbType.Char, .Char, 1).Value = "M" ElseIf (RadioButton2.Checked = True True) ) Then insert_per.Parameters.Add("@G" insert_per.Parameters.Add( "@G", , SqlDbType SqlDbType.Char, .Char, 1).Value = "F" End If insert_per.Parameters.Add( "@EC", insert_per.Parameters.Add("@EC" , SqlDbType SqlDbType.Char, .Char, 1).Value = LTrim(ListBox1.SelectedItem) insert_per.Parameters.Add("@FN" insert_per.Parameters.Add( "@FN", , SqlDbType SqlDbType.DateTime).Value .DateTime).Value = MaskedTextBox1.Text If (resp = 1) Then MessageBox.Show( MessageBox .Show("Se "Se grabo el registro") registro") limpiar_ingreso() End If conex.Open() resp = insert_per.ExecuteNonQuery Cargardatos() End Sub

44

ALUMNO: ALBERT SMITH LEIVA

MaskeTextBox: Es un control TextBox mejorado que admite una sintaxis declarativa para

aceptar o rechazar los datos proporcionados por el usuario. Con la propiedad Mask puede especificar la entrada siguiente sin escribir ninguna lógica de validación personalizada en su aplicación ExecuteNonQuery: Ejecuta una instrucción de Transact-SQL en la conexión y devuelve

el número de filas afectadas. Se puede utilizar ExecuteNonQuery para realizar operaciones de catálogo (por ejemplo, consultar la estructura de una base de datos o crear objetos de base de datos como tablas) o para cambiar los datos de una base de datos sin utilizar DataSet ejecutando instrucciones UPDATE, INSERT o DELETE. 

A.

“.Open(): Abre la conexión (en esta cas o es Conex).

Crear un formulario con dos DataGridView, el primero debe contener CategoryID, CategoryName, Description , y al dar click en las celdas que contengan el CategoryID, se active el siguiente Datagriew que contendrá ProductID,ProductName,UnitPrice, C.CategoryID Primero creamos las consultas SQL para cada Datagriew: 



create proc categorua as select CategoryID CategoryID, ,CategoryName CategoryName, ,Description from Categories create proc po @c int as select p.ProductID ProductID, ,p.ProductName ProductName, ,p.UnitPrice UnitPrice, ,c.CategoryID from Products p join Categories c on c.CategoryID CategoryID= =p.CategoryID where c.CategoryID=@c

45

ALUMNO: ALBERT SMITH LEIVA

Vista en visual:

La programación en visual Studio Será: 

Evento DataGridView1_CellEnter: Se produce cuando la celda actual cambia en el control DataGridView o cuando el control recibe el foco de entrada.

Public Class Form1 Private Sub Form1_Load(ByVal Form1_Load(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles MyBase MyBase.Load .Load Dim datos As New SqlDataAdapter ("prod1" "prod1", , CONEX) Dim ds As New Data.DataSet Data.DataSet datos.SelectCommand.CommandType = CommandType .StoredProcedure datos.Fill(ds, "prod1" "prod1") ) DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub DataGridView1_CellEnter( ByVal sender As Object Object, , ByVal e As System.Windows.Forms.DataGridViewCellEventArgs System.Windows.Forms. DataGridViewCellEventArgs ) Handles DataGridView1.CellEnter Dim datos As New SqlDataAdapter ("prod2" "prod2", , CONEX) Dim ds As New Data.DataSet Data.DataSet datos.SelectCommand.CommandType = CommandType .StoredProcedure datos.SelectCommand.Parameters.Add( "@cat" "@cat", , SqlDbType .Int).Value = DataGridView1.Rows(e.RowIn DataGridView1.Rows(e.RowIndex).Cells(0) dex).Cells(0).Value .Value 'Indica valor de filas y columnas seleccionada en el dtgv datos.Fill(ds, "prod2" "prod2") ) DataGridView2.DataSource = ds.Tables(0) End Sub

46

ALUMNO: ALBERT SMITH LEIVA

O puede ser asi: La programación en visual Studio Será: Imports System.Data.SqlClient Public Class Form1 Private Sub Form1_Load(sender As Object Object, , e As System.EventArgs System. EventArgs) ) Handles Me.Load Me .Load Dim data As New SqlDataAdapter ("categorua" , conex) Dim ds As New Data.DataSet Data.DataSet data.SelectCommand.CommandType = CommandType .StoredProcedure data.Fill(ds, "CONSULTAPERSONA" ) DataGridView1.DataSource = ds.Tables( "CONSULTAPERSONA" ) End Sub Private Sub DataGridView1_CellEnter(sender As Object Object, , e As System.Windows.Forms. DataGridViewCellEventArgs ) Handles DataGridView1.CellEnter End Sub Private Sub DataGridView1_CellMouseClick(sender As Object Object, , e As System.Windows.Forms. DataGridViewCellMouseEventArgs ) Handles DataGridView1.CellMouseClick Dim insert_per As New SqlDataAdapter ("po" "po", , conex) Dim ds As New Data.DataSet Data.DataSet insert_per.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure insert_per.SelectCommand.Parameters.Add( "@c" "@c", , SqlDbType SqlDbType.Int).Value .Int).Value = DataGridView1.Rows(e.RowIndex).Cells(0).Value insert_per.Fill(ds, "CONSULTAPERSONA" "CONSULTAPERSONA") ) DataGridView2.DataSource = ds.Tables( "CONSULTAPERSONA" )

B. Teniendo en un DataGridView los siguientes campo OrderID, OrderDate, Freight mostrar en otro DataGridView lo siguientes datos od.orderid, o.orderdate, p.productname, p.UnitPrice, quantity, Filtrados por el OrderID, al que se le de click en el primer DataGridView

create proc query15 as select OrderID, OrderID ,OrderDate OrderDate, ,F reight from Orders

47

create proc query16 @oid int as select od od. .orderid orderid, , o.orderdate orderdate, , p.productname productname, , p.UnitPrice UnitPrice, , quantity from Products p inner join [Order Details] od on p.ProductID =od od. .ProductID inner join Orders o on o.OrderID = od. od .OrderID where o.OrderID = @oid

ALUMNO: ALBERT SMITH LEIVA

La programación en visual Studio será: Imports System.Data.SqlClient Public Class Form2 Private Sub Form2_Load( ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs ) Handles MyBase.Load MyBase .Load Dim datos As New SqlDataAdapter ("query15" , CONEX) Dim ds As New Data.DataSet Data.DataSet datos.SelectCommand.CommandType = CommandType .StoredProcedure datos.Fill(ds, "query" "query") ) DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub DataGridView1_CellEnter( ByVal sender As Object Object, , ByVal e As System.Windows.Forms. DataGridViewCellEventArgs ) Handles DataGridView1.CellEnter Dim datos As New SqlDataAdapter ("query16" , CONEX) Dim ds As New Data.DataSet Data.DataSet datos.SelectCommand.CommandType = CommandType .StoredProcedure datos.SelectCommand.Parameters.Add( "@oid" "@oid", , SqlDbType SqlDbType.Int).Value .Int).Value = DataGridView1.Rows(e.RowIndex).Cells(0).Value 'Indica valor de filas y columnas seleccionada en el dtgv datos.Fill(ds, "query16" "query16") ) DataGridView2.DataSource = ds.Tables(0) End Sub End Class

48

ALUMNO: ALBERT SMITH LEIVA

Enlazando Datos Directamente en el DataGridView: Clic elegir Origen de Datos, luego clic en nuevo orígen de Datos, en el origen elegir Base de Datos, siguiente, en elegir un modelo de Base de Datos, escogemos Conjunto de Datos, siguiente Establecemos la Conexión, clic en Siguiente y luego escogemos que obejtos de la Base de Datos queremos extraer, pudiendo ser una tabla, una vista, un procedimiento almacenado o una función, click en finaliza y ya tenemos la vista de obejtos que hemos seleccionado, en el DataGridView

49

ALUMNO: ALBERT SMITH LEIVA

Agregaremos a esto un PictureBox, para poder visualizar las fotos de cada uno de los empleados:

Teniendo el diseño del Datagriew, la programación en el formulario, será:

Imports System.Data.SqlClient Public Class Form3 Private Sub Form3_Load( ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles MyBase .Load MyBase.Load 'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet.QUERY17' Puede moverla o quitarla según sea necesario. Me.QUERY17TableAdapter.Fill( Me .QUERY17TableAdapter.Fill( Me Me.NorthwindDataSet.QUERY17) .NorthwindDataSet.QUERY17) Dim datos As New SqlDataAdapter ("query17" "query17", , CONEX) Dim ds As New Data.DataSet Data.DataSet datos.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure datos.Fill(ds, "query17" ) DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub DataGridView1_CellEnter( ByVal sender As Object Object, , ByVal e As System.Windows.Forms. DataGridViewCellEventArgs ) Handles DataGridView1.CellEnter PictureBox1.Image = Image Image.FromFile( .FromFile( "C:\Users\PC\Desktop\fOTOS" + CStr(DataGridView1.Rows(e.RowIndex).Cells(0).Value) CStr (DataGridView1.Rows(e.RowIndex).Cells(0).Value) + ".jpg" ".jpg") ) End Sub End Class

50

ALUMNO: ALBERT SMITH LEIVA

C. create proc query18 as select EmployeeID EmployeeID, ,FirstName FirstName, ,LastName from Employees

create proc query181 @eid int as select OrderID OrderID, ,OrderDate OrderDate, ,e.EmployeeID from Employees e inner join Orders o on e.EmployeeID = o.EmployeeID where e.EmployeeID = @eid

create proc query182 @oid int as select o.OrderID OrderID, ,p.ProductID ProductID, , p.ProductName ProductName, , p.UnitPrice from Products p inner join [Order Details] od on p.ProductID = od od. .ProductID inner join Orders o on o.OrderID = od od. .OrderID where o.OrderID = @oid

51

ALUMNO: ALBERT SMITH LEIVA

52

ALUMNO: ALBERT SMITH LEIVA

MANTENIMIENTO CONSULTAS A TRAVÉS DE CUADRO DETALLES

53

ALUMNO: ALBERT SMITH LEIVA

54

ALUMNO: ALBERT SMITH LEIVA

Ejercicio 2)

55

ALUMNO: ALBERT SMITH LEIVA

Imports System.Data.SqlClient Public Class Form2 Private Sub CategoriesBindingNavigatorSaveItem_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles CategoriesBindingNavigatorSaveItem.Click Me.Validate() Me .Validate() Me.CategoriesBindingSource.EndEdit() Me .CategoriesBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll( Me .TableAdapterManager.UpdateAll(Me Me.NorthwindDataSet) .NorthwindDataSet) End Sub Private Sub Form2_Load(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles MyBase MyBase.Load .Load 'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet.Categories' Puede moverla o quitarla según sea necesario. Me.CategoriesTableAdapter.Fill( Me .CategoriesTableAdapter.Fill(Me Me.NorthwindDataSet.Categories) .NorthwindDataSet.Categories) End Sub Sub cargar_datos() Dim cone As New SqlConnection SqlConnection( ("server = .; database = northwind; trusted_connection = true") true") Dim datos As New SqlDataAdapter SqlDataAdapter( ("select productname, unitprice, unitsinstock, categoryid from products where categoryid=@cate", categoryid=@cate", cone) datos.SelectCommand.Parameters.Add("@cate" datos.SelectCommand.Parameters.Add( "@cate", , SqlDbType SqlDbType.Int).Value .Int).Value = CInt CInt(CategoryIDTextBox.Text) (CategoryIDTextBox.Text) Dim ds As New Data.DataSet Data.DataSet datos.Fill(ds, "detalle" "detalle") ) DataGridView1.DataSource = ds.Tables("detalle" ds.Tables("detalle") ) End Sub

Private Sub BindingNavigatorMoveNextItem_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles BindingNavigatorMoveNextItem.Click cargar_datos() End Sub Private Sub CategoryIDTextBox_TextChanged(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles CategoryIDTextBox.TextChanged cargar_datos() End Sub End Class

EJERCICIO

56

ALUMNO: ALBERT SMITH LEIVA

Imports System.Data.SqlClient Public Class Form3 Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click Dim conex As New SqlConnection SqlConnection( ("server = .; database = northwind; trusted_connection = true") true") Dim comando As New SqlCommand SqlCommand( ("select productname, unitprice, supplierid, unitsinstock from products where productid = @id", @id", conex) comando.Parameters.Add("@id" comando.Parameters.Add( "@id", , SqlDbType SqlDbType.Int).Value .Int).Value = CInt CInt(TextBox1.Text) (TextBox1.Text) Dim registro As SqlDataReader 'guarda un registro o varios registros conex.Open() registro = comando.ExecuteReader() 'Guarda los resutlados de la consulta SQL solo para lectura registro.Read() If registro.HasRows Then 'HasRows (evalua si existe el registro buscado) TextBox2.Text = registro.Item(0) TextBox3.Text = registro.Item(1) TextBox4.Text = registro.Item(2) TextBox5.Text = registro.Item(3) Else MessageBox.Show( MessageBox .Show("No "No existe este producto") producto") End If registro.Close() conex.Close() End Sub End Class

57

ALUMNO: ALBERT SMITH LEIVA

EJERCICIO BUSAND POR CODIGO DE CATEGORIA

Imports System.Data.SqlClient Public Class Form4 Private Sub Form4_Load(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles MyBase MyBase.Load .Load End Sub Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click Dim conex As New SqlConnection SqlConnection( ("server = .; database = northwind; trusted_connection = true") true") Dim comando As New SqlCommand SqlCommand( ("select productname, unitprice, supplierid, unitsinstock from products where supplierid = @id", @id", conex) comando.Parameters.Add("@id" comando.Parameters.Add( "@id", , SqlDbType SqlDbType.Int).Value .Int).Value = CInt CInt(TextBox1.Text) (TextBox1.Text) Dim registro As SqlDataReader 'guarda un registro o varios registros conex.Open() registro = comando.ExecuteReader() 'Guarda los resutlados de la consulta SQL solo para lectura Do While registro.Read() MessageBox.Show(registro.Item(0) MessageBox .Show(registro.Item(0) + " - " + CStr CStr(registro.Item(1)) (registro.Item(1)) + " - " + CStr CStr(registro.Item(2)) (registro.Item(2)) + " - " + CStr CStr(registro.Item(3))) (registro.Item(3))) Loop End Sub End Class

58

ALUMNO: ALBERT SMITH LEIVA Ahora con un list box

Imports System.Data.SqlClient Public Class Form4 Private Sub Form4_Load(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles MyBase MyBase.Load .Load End Sub Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click Dim conex As New SqlConnection SqlConnection( ("server = .; database = northwind; trusted_connection = true") true") Dim comando As New SqlCommand SqlCommand( ("select productname, unitprice, supplierid, unitsinstock from products where supplierid = @id", @id", conex) comando.Parameters.Add("@id" comando.Parameters.Add( "@id", , SqlDbType SqlDbType.Int).Value .Int).Value = CInt CInt(TextBox1.Text) (TextBox1.Text) Dim registro As SqlDataReader 'guarda un registro o varios registros conex.Open() registro = comando.ExecuteReader() 'Guarda los resutlados de la consulta SQL solo para lectura Do While registro.Read() 'MessageBox.Show(registro.Item(0) + " - " + CStr(registro.Item(1)) + " - " + CStr(registro.Item(2)) + " - " + CStr(registro.Item(3))) ListBox1.Items.Add(registro.Item(0)) ListBox1.Items.Add(registro.Item(1)) ListBox1.Items.Add(registro.Item(3)) Loop End Sub End Class

59

ALUMNO: ALBERT SMITH LEIVA

CREACIÓN DE UN FORMULARIO LOGIN

60

ALUMNO: ALBERT SMITH LEIVA

Debemos crear una tabla en la base de datos que se llame usuarios y crear los dos campos: Código para el acceso: Imports System.Data.SqlClient Public Class LoginForm1 ' TODO: inserte el código para realizar autenticación personalizada usando el nombre de usuario y la contraseña proporcionada ' (Consulte http://go.microsoft.com/fwlink/?LinkId=35339). ' El objeto principal personalizado se puede adjuntar al objeto principal del subproceso actual como se indica a continuación: ' My.User.CurrentPrincipal My.User.Curre ntPrincipal = CustomPrincip CustomPrincipal al ' donde CustomPrincipal es la implementación de IPrincipal utilizada para realizar la autenticación. ' Posteriormente, My.User devolverá la información de identidad encapsulada en el objeto CustomPrincipal ' como el nombre de usuario, nombre para mostrar, etc. Private Sub OK_Click(ByVal OK_Click( ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System. EventArgs) ) Handles OK.Click Dim valor As Integer Dim consulta As New SqlCommand SqlCommand( ("select count(*) from usuario where idusuario=@id and password=@pas" , conex) consulta.Parameters.Add( "@id" "@id", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = UsernameTextBox.Text consulta.Parameters.Add( "@pas" "@pas", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = PasswordTextBox.Text conex.Open() valor = consulta.ExecuteScalar() conex.Close() If valor = 1 Then Form6.Show() Form6 .Show() Me.Hide() Me .Hide() Else MessageBox.Show( MessageBox .Show("NO "NO existe Usuario o Contraseña esta mal" ) UsernameTextBox.Text = "" PasswordTextBox.Text = "" UsernameTextBox.Focus() End If End Sub Private Sub Cancel_Click( ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System. EventArgs) ) Handles Cancel.Click Me.Close() Me .Close() End Sub

61

ALUMNO: ALBERT SMITH LEIVA

Luego para actualizar el login creamos un formulario adicional con un linklabel al cual se le anexa.

62

ALUMNO: ALBERT SMITH LEIVA Imports System.Data.SqlClient Public Class LoginForm1 ' TODO: inserte el código para realizar autenticación personalizada usando el nombre de usuario y la contraseña proporcionada ' (Consulte http://go.microsoft.com/fwlink/?LinkId=35339). ' El objeto principal personalizado se puede adjuntar al objeto principal del subproceso actual como se indica a continuación: ' Private Sub OK_Click(ByVal OK_Click( ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System. EventArgs) ) Handles OK.Click Dim valor As Integer Dim consulta As New SqlCommand SqlCommand( ("select count(*) from usuario where idusuario=@id and password=@pas" , conex) consulta.Parameters.Add( "@id" "@id", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = UsernameTextBox.Text consulta.Parameters.Add( "@pas" "@pas", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = PasswordTextBox.Text conex.Open() valor = consulta.ExecuteScalar() conex.Close() If valor = 1 Then Form6.Show() Form6 .Show() Me.Hide() Me .Hide() Else MessageBox.Show( MessageBox .Show("NO "NO existe Usuario o Contraseña esta mal" ) UsernameTextBox.Text = "" PasswordTextBox.Text = "" UsernameTextBox.Focus() End If End Sub Private Sub Cancel_Click( ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System. EventArgs) ) Handles Cancel.Click Me.Close() Me .Close() End Sub Private Sub LinkLabel1_LinkClicked(sender As System.Object System.Object, , e As System.Windows.Forms. LinkLabelLinkClickedEventArgs ) Handles LinkLabel1.LinkClicked Form2.Show() Form2 .Show() End Sub End Class

63

ALUMNO: ALBERT SMITH LEIVA

El código en el formulario: Imports System.Data.SqlClient Public Class Form2 Private Sub Button1_Click(sender As System.Object System.Object, , e As System.EventArgs System.EventArgs) ) Handles Button1.Click Dim valor As Integer Dim consulta As New SqlCommand SqlCommand( ("select count(*) from usuario where idusuario=@id and password=@pas", password=@pas" , conex) consulta.Parameters.Add( "@id" "@id", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = TextBox1.Text consulta.Parameters.Add( "@pas" "@pas", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = TextBox2.Text conex.Open() valor = consulta.ExecuteScalar() conex.Close() If valor = 1 Then If TextBox3.Text = TextBox4.Text Then Dim d As Integer Dim nueva As New SqlCommand SqlCommand( ("update usuario set password=@pn where idusuario=@idn and password=@pa " , conex) nueva.Parameters.Add( "@pn" "@pn", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = TextBox3.Text nueva.Parameters.Add( "@idn" "@idn", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = TextBox1.Text nueva.Parameters.Add( "@pa" "@pa", , SqlDbType SqlDbType.VarChar, .VarChar, 20).Value = TextBox2.Text conex.Open() d = nueva.ExecuteNonQuery() nueva.ExecuteNonQuery() conex.Close() If d = 1 Then MsgBox("contraseña MsgBox( "contraseña actualizada") actualizada" ) Me.Close() Me .Close() Else MsgBox("no MsgBox( "no se actualizo") actualizo" ) End If Else MsgBox("nueva MsgBox( "nueva contraseña incorrecta" ) End If Else MessageBox.Show( MessageBox .Show("NO "NO existe Usuario o Contraseña esta mal" ) End If End Sub Private Sub TextBox1_TextChanged(sender As System.Object System. Object, , e As System.EventArgs System.EventArgs) ) Handles TextBox1.TextChanged End Sub End Class

64

ALUMNO: ALBERT SMITH LEIVA

REPORTES El reporte es aquel documento que se utilizará cuando se quiera informar o dar noticia acerca de una determinada cuestión . Para ello se agrega un la herramienta ReportViewer1:

Se realiza de la siguiente manera:

65

ALUMNO: ALBERT SMITH LEIVA

66

ALUMNO: ALBERT SMITH LEIVA

1) Mostrar en un detalle el Employee ID, Last Name, y el First Name de los empleado y anexa un Ddatagridview de tal manera que pueda visualizarle su ID, las órdenes de compra a las que está ligado, la fecha de la orden y el código del cliente Establecemos el diseño de la consulta que se va a realizar:

67

ALUMNO: ALBERT SMITH LEIVA

Los comandos en SQL serán:  ALTER PROCEDURE ORDENXEMPLE1 @EID INT AS SELECT E.EmployeeID EmployeeID, , O.OrderID OrderID, ,OrderDate OrderDate, ,C.CustomerID FROM Employees E INNER JOIN Orders O ON O.EmployeeID = E.EmployeeID INNER JOIN Customers C ON C.CustomerID = O.CustomerID WHERE E.EmployeeID = @EID ORDER BY E.EmployeeID

La codificación será: Imports System.Data.SqlClient Public Class Form1 Private Sub EmployeesBindingNavigatorSaveItem_Click( ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs ) Handles EmployeesBindingNavigatorSaveItem.Click Me.Validate() Me .Validate() Me.EmployeesBindingSource.EndEdit() Me .EmployeesBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll( Me .TableAdapterManager.UpdateAll( Me Me.NorthwindDataSet) .NorthwindDataSet) End Sub Private Sub Form1_Load(ByVal Form1_Load(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs ) Handles MyBase .Load MyBase.Load 'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet.Employees' Puede moverla o quitarla según sea necesario. Me.EmployeesTableAdapter.Fill( Me .EmployeesTableAdapter.Fill( Me Me.NorthwindDataSet.Employees) .NorthwindDataSet.Employees) End Sub Sub CargarDatos() Dim conex As New SqlConnection ("server = .; database = northwind; trusted_connection = true" ) Dim datos As New SqlDataAdapter ("ORDENXEMPLE1" , conex) Dim ds As New Data.DataSet Data.DataSet datos.SelectCommand.CommandType = CommandType .StoredProcedure datos.SelectCommand.Parameters.Add( "@eid" "@eid", , SqlDbType SqlDbType.Int).Value .Int).Value = EmployeeIDTextBox.Text datos.Fill(ds, "ORDENXEMPLE1" ) DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub BindingNavigatorPositionItem_Enter( ByVal sender As Object Object, , ByVal e As System.EventArgs System.EventArgs ) Handles BindingNavigatorPositionItem.Enter CargarDatos() End Sub End Class

68

ALUMNO: ALBERT SMITH LEIVA Ejecutando programa

2) De un ListBox o ComboBox, escoger un año y en un DatagridView, mostrar los clientes, el año y el número de productos comprados: El código SQL será:  CREATE PROC COMPRASANIO @ANIO NVARCHAR NVARCHAR( (4) AS SELECT C.CompanyName CompanyName, , YEAR YEAR( (O.OrderDate OrderDate) ) AS AÑO AÑO, ,SUM SUM( (QUANTITY QUANTITY) ) AS NUMPRODCOMPRADOS FROM Customers C INNER JOIN Orders O ON C.CustomerID = O.CustomerID INNER JOIN [Order Details] OD ON OD OD. .OrderID OrderID= =O.OrderID WHERE YEAR YEAR( (O.OrderDate OrderDate) ) = @ANIO GROUP BY YEAR (O.OrderDate OrderDate), ), C.CompanyName CompanyName, ,Quantity

El diseño será: 

69

ALUMNO: ALBERT SMITH LEIVA

La línea de comandos en Visual Studio es:  Imports System.Data.SqlClient Public Class Form2 Private Sub ComboBox1_SelectedIndexChanged( ByVal sender As System. Object Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles ComboBox1.SelectedIndexChanged Dim conex As New SqlConnection ("server = .; database = northwind; trusted_connection = true" ) Dim datos As New SqlDataAdapter ("COMPRASANI "COMPRASANIO O " , conex) Dim ds As New Data.DataSet Data.DataSet datos.SelectCommand.CommandType = CommandType .StoredProcedure datos.SelectCommand.Parameters.Add( "@ANIO" "@ANIO", , SqlDbType .Int).Value = ComboBox1.SelectedItem datos.Fill(ds, "comprasanio" ) DataGridView1.DataSource = ds.Tables(0) End Sub End Class

En funcionamiento, el programa se verá así:

3) En un combo box, se tendrá un alista de los clientes, de tal manera que al seleccionar a uno de ellos, un DataGridView, mostrará el nombre de la Compañía, OrderID, Año de la Orden, Nombre Producto Comprado y su cantidad

70

ALUMNO: ALBERT SMITH LEIVA

La consulta SQL de búsqueda será: CREATE PROC BUSCARCLIENTE @CID CHAR CHAR( (5) AS SELECT C.CompanyName CompanyName, ,O.OrderID OrderID, , YEAR YEAR( (OrderDate OrderDate), ), P.ProductName ProductName, , Quantity FROM Customers C INNER JOIN Orders O ON C.CustomerID = O.CustomerID INNER JOIN [Order Details] OD ON O.OrderID OrderID= =OD OD. .OrderID INNER JOIN Products P ON P.ProductID ProductID= =OD OD. .ProductID WHERE C.CustomerID = @CID

VISTA: 

Procedemos a configurar el ComboBox, mediante una conexión directa con la Base de Datos, seleccionando como miembro de muestra los nombres de los cliente y como miembros de valor (ó búsqueda), el ID del cliente.

Para la configuración del DataGridView:

71

ALUMNO: ALBERT SMITH LEIVA Imports System.Data.SqlClient Public Class Form3 Private Sub ComboBox1_SelectedIndexChanged( ByVal sender As System. Object Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles ComboBox1.SelectedIndexChanged Dim conex As New SqlConnection ("server = .; database = northwind; trusted_connection = true" ) Dim datos As New SqlDataAdapter ("BUSCARCLIE "BUSCARCLIENTE NTE " , conex) Dim ds As New Data.DataSet Data.DataSet datos.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure datos.SelectCommand.Parameters.Add( "@CID" "@CID", , SqlDbType SqlDbType.Char, .Char, 5).Value = ComboBox1.SelectedValue datos.Fill(ds, "comprasanio" ) DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub Form3_Load( ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles MyBase .Load MyBase.Load 'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet1.Customers' Puede moverla o quitarla según sea necesario. Me.CustomersTableAdapter.Fill( Me .CustomersTableAdapter.Fill( Me Me.NorthwindDataSet1.Customers) .NorthwindDataSet1.Customers) End Sub End Class

El funcionamiento del programa será:

4) Realizar un Reporte que divido en años y meses (matriz), que muestre el Monto Ingresado por las órdenes de compra. El Comando SQL es: CREATE PROC VENTASANIOMES AS SELECT YEAR YEAR( (O.OrderDate OrderDate), ),MONTH MONTH( (O.OrderDate OrderDate), ), SUM SUM( (UnitPrice UnitPrice* *Quantity Quantity) ) FROM Orders O INNER JOIN [Order Details] OD ON O.OrderID OrderID= =OD OD. .OrderID GROUP BY O.OrderDate OrderDate, , UnitPrice UnitPrice, , Quantity

72

ALUMNO: ALBERT SMITH LEIVA

Public Class Form4 Private Sub Form4_Load(ByVal Form4_Load(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs ) Handles MyBase .Load MyBase.Load 'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet2.VENTASANIOMES' Puede moverla o quitarla según sea necesario. Me.VENTASANIOMESTableAdapter.Fill( Me .VENTASANIOMESTableAdapter.Fill( Me Me.NorthwindDataSet2.VENTASANIOMES) .NorthwindDataSet2.VENTASANIOMES) Me.ReportViewer1.RefreshReport() Me .ReportViewer1.RefreshReport() End Sub End Class

73

ALUMNO: ALBERT SMITH LEIVA

En funcionamiento el programa se verá:

5) Ver el número de productos por categoría en un gráfico La Consulta SQL será:

El diseño del Reporte será:

74

CREATE PROC PRODCATEGO AS SELECT CategoryName CategoryName, , COUNT COUNT(*) (*) FROM Categories C INNER JOIN Products P ON P.CATEGORYID = C.CategoryID GROUP BY C.CategoryName

ALUMNO: ALBERT SMITH LEIVA

El programa en funcionamiento visualizará:

6) Mediante el objeto TabControl, mostrar en un DataGridView, el ProductID y el nombre del Producto, y cuando se haga click en un determinado ProductID, saldrá otro DatagridView en el tab2 con un OrderId, UnitPrice la Cantidad, y el código del Producto. Configuramos el diseño de los DataGridView, para cadauno de las consultas pedidas:

75

ALUMNO: ALBERT SMITH LEIVA

La programación en Visual será: Imports System.Data.SqlClient Public Class Form6 Private Sub Form6_Load(ByVal Form6_Load( ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles MyBase MyBase.Load .Load 'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet4.Products' Puede moverla o quitarla según sea necesario. Me.ProductsTableAdapter.Fill( Me .ProductsTableAdapter.Fill(Me Me.NorthwindDataSet4.Products) .NorthwindDataSet4.Products) End Sub Private Sub DataGridView1_CellContentClick( ByVal sender As System.Object System.Object, , ByVal e As System.Windows.Forms. DataGridViewCellEventArgs) System.Windows.Forms.DataGridViewCellEventArgs ) Handles DataGridView1.CellContentClick Dim conex As New SqlConnection SqlConnection( ("server = .; database = northwind; trusted_connection = true") true") Dim datos As New SqlDataAdapter SqlDataAdapter( ("BUSCPROD" "BUSCPROD", , conex) Dim ds As New Data.DataSet Data.DataSet datos.SelectCommand.CommandType = CommandType CommandType.StoredProcedure .StoredProcedure datos.SelectCommand.Parameters.Add( "@PID" "@PID", , SqlDbType SqlDbType.Int).Value .Int).Value = DataGridView1.Rows(e.RowIndex).Cells(0).Value 'Indica valor de filas y columnas seleccionada en el dtgv datos.Fill(ds, "BUSCPROD" "BUSCPROD") ) DataGridView2.DataSource = ds.Tables(0) End Sub End Class

76

ALUMNO: ALBERT SMITH LEIVA

Ahora, la vista del programa trabajando será:

77

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF