manual visual 1

77
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

Upload: albert-smith-leiva-izquierdo

Post on 24-Oct-2014

349 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Manual Visual 1

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

Page 2: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

2

Manejo de MENUS

TOOL STRIP BOX: Permite la creación de una barra de Menús con imágenes

LLAMADA DE UN FORMULARIO A OTRO : Form2.MdiParent = Me

Form2.Show()

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

Page 3: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

3

El tool Strip quedaría de la siguiente forma:

Para crear image list y ToolStrip Bottom:

Public Class Form1 Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load ToolStrip1.ImageList = ImageList1

ToolStripButton1.ImageIndex = 0 ToolStripButton2.ImageIndex = 1

ToolStripButton3.ImageIndex = 2 ToolStripButton4.ImageIndex = 3

End Sub End Class

Page 4: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

4

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

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

Page 5: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

5

Para alojar páginas web dentro de una aplicación, para estos e utiliza la herramienta Web Browser:

Public Class Form2 Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Try PictureBox1.Image = Image.FromFile("D:\Software\Proyecto Ejercicios con menu\Proyecto Ejercicios con menu\bin\Debug\Ccomp.bmp") Catch ex As Exception MessageBox.Show("ex.message") End Try Try PictureBox2.Image = Image.FromFile("D:\Software\Proyecto Ejercicios con menu\Proyecto Ejercicios con menu\bin\Debug\programador1.jpg") Catch ex As Exception MessageBox.Show("ex.message") End Try PictureBox2.Image = Image.FromFile("D:\Software\Proyecto Ejercicios con menu\Proyecto Ejercicios con menu\bin\Debug\programador1.jpg") RichTextBox1.LoadFile("D:\Software\Proyecto Ejercicios con menu\Proyecto Ejercicios con menu\bin\Debug\Ccomputing.rtf") End Sub End Class

Page 6: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

6

Navegamos en una página web a partir de una aplicación:

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

Public Class Form3 Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load WebBrowser1.Navigate("http://www.google.com.pe/") End Sub Private Sub WebBrowser1_DocumentCompleted(sender As 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, e As System.EventArgs) Handles Button1.Click WebBrowser1.Navigate(TextBox1.Text) End Sub End Class

Page 7: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

7

Ejercicio con base de datos

Código:

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

Page 8: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

8

CREANDO UN Modulo

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

Page 9: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

9

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

Page 10: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

10

Para poder llevar los datos del archivo .csv a Sqlserver, haremos el siguiente código:

Y para conectarlo a Visual Studio se utiliza:

Para conectarnos al formulario:

bulk

insert dbo.Estudiantesnew

from 'C:\Users\Ing. Sistemas\Desktop\alumnos.csv'

with

(

fieldterminator = ',',

rowterminator = '\n'

Imports System.Data.SqlClient

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 = localhost;database = Northwind; trusted_connection = true") 'puede ser ip, (local),nombre de BD, nombre servidor Dim datos As New SqlDataAdapter("select*from Estudiantesnew", conex) Dim ds As New Data.DataSet datos.Fill(ds, "Alumnos") GridView1.DataSource = ds.Tables("Alumnos")

Page 11: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

11

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

Imports 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

Page 12: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

12

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:

En un GridView:

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") 'puedes usar en server = localhost, . , o ip 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

Page 13: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

13

Page 14: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

14

Page 15: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

15

Page 16: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

16

EJERCICIOS

Buscar Alumno por código

Código en visual para el buton1

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("busca_alum_cod", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@p", SqlDbType.VarChar, 10).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "por_nombre") DataGridView1.DataSource = ds.Tables("por_nombre") End Sub End Class

Page 17: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

17

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

el enter:

Page 18: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

18

BUSCAR ALUMNO POR SEXO

Imports System.Data.SqlClient

Imports System.Data.SqlClient Public Class Form4 Private Sub TextBox1_KeyPress(sender As 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.StoredProcedure datos.SelectCommand.Parameters.Add("@p", SqlDbType.VarChar, 10).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "por_nombre") DataGridView1.DataSource = ds.Tables("por_nombre") End If End Sub End Class

Page 19: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

19

Public Class Form3 Private Sub Button1_Click(sender As System.Object, e As 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 datos.Fill(ds, "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 datos.Fill(ds, "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á:

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ú gráfico de tal manera

que cada uno de estos nos permita el acceso a: Mantenimiento, Consultas,

Reportes

Dim FRM As New Form2 FRM.MdiParent = Me FRM.Show()

Page 20: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

20

Por ejemplo para acceder a la primera consulta del menú, el código será:

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

DATA.SELECTCOMMAND.COMMANDTYPE =

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", SqlDbType.Int).Value = :

Comando utilizado para agregar parámetros (si los hubiera) a una búsqueda.

DataGridView1.DataSource = ds.Tables("QUERY7"): Indica en datagriew o

vista se mostrarán los datos de la consulta SQL realizada.

Public Class Form1 Private Sub NumeroDeProductosPorCategoriaToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles NumeroDeProductosPorCategoriaToolStripMenuItem.Click Form2.MdiParent = Me Form2.Show() End Sub End Class

Page 21: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

21

El código en Visual Studio será:

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

Consulta:

create proc quary

as

select c.CategoryName,SUM(p.CategoryID)as total

from Products p join Categories c on c.CategoryID=p.CategoryID

group by c.CategoryName

Page 22: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

22

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, e As System.EventArgs) Handles MyBase.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.NorthwindDataSet.Categories) End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Dim data As New SqlDataAdapter("catego_id", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@c", SqlDbType.Int).Value = ComboBox1.SelectedValue data.Fill(ds, "QUERY2") DataGridView1.DataSource = ds.Tables("QUERY2") End Sub End Class

Page 23: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

23

Procedimiento:

create proc catego_id

@c int

as

select p.ProductID,p.ProductName,p.UnitPrice,s.CompanyName,c.CategoryID

from Products p join Categories c on c.CategoryID=p.CategoryID join

Suppliers s

on s.SupplierID=p.SupplierID

where c.CategoryID=@c

4) Consultar Productos dentro del rango de precio indicado en el formulario:

5) Busca productos que tengan coincidencia al empezar.

Imports System.Data.SqlClient Public Class Consulta03 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim data As New SqlDataAdapter("QUERY3", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@PMAYOR", SqlDbType.Int).Value = TextBox1.Text data.SelectCommand.Parameters.Add("@PMENOR", SqlDbType.Int).Value = TextBox2.Text data.Fill(ds, "QUERY3") DataGridView1.DataSource = ds.Tables("QUERY3") End Sub End Class

Page 24: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

24

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

CREATE PROC QUERY4

@T VARCHAR(4)

AS

SELECT ProductName, UnitPrice,CategoryID,SupplierID

FROM Products

WHERE ProductName LIKE @T+'%'

Page 25: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

25

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

CREATE PROC QUERY5

@SID AS INT

AS

SELECT ProductName,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, e As System.EventArgs) Handles 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.NorthwindDataSet1.Suppliers) End Sub Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged Dim data As New SqlDataAdapter("QUERY5", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@SID", SqlDbType.Int).Value = ListBox1.SelectedValue data.Fill(ds, "QUERY5") DataGridView1.DataSource = ds.Tables("QUERY5") End Sub End Class

Page 26: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

26

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

CREATE PROC QUERY6

@OID AS INT

AS

SELECT O.OrderID,Products.ProductID, Products.ProductName, Products.ProductID

FROM Orders O INNER JOIN [Order Details] OD ON O.OrderID=OD.OrderID INNER JOIN

Products ON Products.ProductID = OD.ProductID

WHERE O.OrderID = @OID

Page 27: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

27

8) Consulta de productos con o sin stock:

+

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

CREATE PROC QUERY8

AS

SELECT ProductID,ProductName,UnitPrice,UnitsInStock

FROM Products

WHERE UnitsInStock= 0

CREATE PROC QUERY7

AS

SELECT ProductID,ProductName,UnitPrice,UnitsInStock

FROM Products

WHERE UnitsInStock!=0

Page 28: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

28

9) Consulta de Productos Descontinuados con Check Box

CREATE PROC QUERY9

@D AS BIT

AS

SELECT ProductName,UnitPrice,UnitsInStock, CategoryID, Discontinued

FROM Products

where Discontinued = @D

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

Page 29: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

29

10) Consulta de productos por nombre.

Imports System.Data.SqlClient Public Class Form1 Private Sub TextBox1_KeyPress1(ByVal sender As 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("EJER11", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@P", SqlDbType.VarChar).Value = TextBox1.Text data.Fill(ds, "EJER11") DataGridView1.DataSource = ds.Tables("EJER11") ElseIf (ListBox1.SelectedIndex = 1) Then Dim data As New SqlDataAdapter("EJER12", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@P1", SqlDbType.VarChar).Value = TextBox1.Text data.Fill(ds, "EJER12") DataGridView1.DataSource = ds.Tables("EJER12") ElseIf (ListBox1.SelectedIndex = 2) Then Dim data As New SqlDataAdapter("EJER13", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@P2", SqlDbType.VarChar).Value = TextBox1.Text data.Fill(ds, "EJER13") DataGridView1.DataSource = ds.Tables("EJER13") ElseIf (ListBox1.SelectedIndex = 3) Then Dim data As New SqlDataAdapter("EJER14", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@P4", SqlDbType.VarChar).Value = TextBox1.Text data.Fill(ds, "EJER14") DataGridView1.DataSource = ds.Tables("EJER14")

ElseIf (ListBox1.SelectedIndex = 4) Then Dim data As New SqlDataAdapter("EJER15", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@P5", SqlDbType.VarChar).Value = TextBox1.Text data.Fill(ds, "EJER15") DataGridView1.DataSource = ds.Tables("EJER15") End If End If End Sub

Page 30: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

30

Page 31: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

31

Page 32: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

32

11) Hacer un diseño que permita Ver productos con Stock, Vigentes, clasificados por categorías a

través de un group box, para 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, ByVal e As System.EventArgs) Handles Button1.Click If (RadioButton1.Checked = True) Then Dim data As New SqlDataAdapter("EJER21", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.Fill(ds, "EJER21") DataGridView1.DataSource = ds.Tables("EJER21") ElseIf (RadioButton2.Checked = True) Then Dim data As New SqlDataAdapter("EJER22", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@D", SqlDbType.Bit).Value = RadioButton1.Checked data.Fill(ds, "EJER22") DataGridView1.DataSource = ds.Tables("EJER22") ElseIf (RadioButton3.Checked = True) Then Dim data As New SqlDataAdapter("EJER23", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@CID", SqlDbType.Int).Value = TextBox1.Text data.Fill(ds, "EJER23") DataGridView1.DataSource = ds.Tables("EJER23") ElseIf (RadioButton4.Checked = True) Then Dim data As New SqlDataAdapter("EJER24", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.Fill(ds, "EJER24") DataGridView1.DataSource = ds.Tables("EJER24") End If End Sub End Class

Page 33: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

33

Page 34: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

34

Page 35: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

35

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(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged, RadioButton4.CheckedChanged If (RadioButton1.Checked = True) Then Dim data As New SqlDataAdapter("EJER21", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.Fill(ds, "EJER21") DataGridView1.DataSource = ds.Tables("EJER21") ElseIf (RadioButton2.Checked = True) Then Dim data As New SqlDataAdapter("EJER22", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@D", SqlDbType.Bit).Value = RadioButton1.Checked data.Fill(ds, "EJER22") DataGridView1.DataSource = ds.Tables("EJER22") ElseIf (RadioButton4.Checked = True) Then Dim data As New SqlDataAdapter("EJER24", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.Fill(ds, "EJER24") DataGridView1.DataSource = ds.Tables("EJER24") End If End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If (e.KeyChar = ChrW(13)) Then If (RadioButton3.Checked = True) Then Dim data As New SqlDataAdapter("EJER23", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.SelectCommand.Parameters.Add("@CID", SqlDbType.Int).Value = TextBox1.Text data.Fill(ds, "EJER23") DataGridView1.DataSource = ds.Tables("EJER23") End If End If End Sub End Class

Page 36: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

36

Page 37: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

37

Page 38: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

38

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].[EJER31]

@mda as datetime

AS

SELECT O.OrderID, OrderDate, ProductName, P.UnitPrice, Quantity

FROM Orders O INNER JOIN [Order Details] OD ON

O.OrderID = OD.OrderID INNER JOIN Products P ON OD.ProductID = P.ProductID

WHERE OrderDate = @mda

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

Page 39: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

39

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:

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.

CREATE PROC INSERTAR_PERSONA

@ID CHAR(8),

@N VARCHAR (30),

@APE VARCHAR (40),

@EM VARCHAR(50),

@G CHAR (1),

@EC CHAR (1),

@FN DATETIME

AS

INSERT INTO Personas

VALUES(@ID,@N, @APE,@EM, @G, @EC,@FN)

Page 40: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

40

El código en Visual Studio es:

02. Ahora en la falla con el sexo:

Imports System.Data.SqlClient Public Class Form19 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim insert_per As New SqlCommand("INSERTAR_PERSONA", conex) 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("@APE", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@EM", 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() resp = insert_per.ExecuteNonQuery

End Sub End Class

Page 41: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

41

El código será:

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

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, 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", SqlDbType.Char, 8).Value = TextBox1.Text insert_per.Parameters.Add("@N", SqlDbType.VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@APE", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@EM", SqlDbType.VarChar, 50).Value = TextBox4.Text If (RadioButton1.Checked = True) Then insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = "M" ElseIf (RadioButton2.Checked = True) Then insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = "F" End If insert_per.Parameters.Add("@EC", SqlDbType.Char, 1).Value = TextBox6.Text insert_per.Parameters.Add("@FN", SqlDbType.DateTime).Value = TextBox7.Text If (resp = 1) Then MessageBox.Show("Se grabo el registro") limpiar_ingreso() End If conex.Open() resp = insert_per.ExecuteNonQuery End Sub End Class

Page 42: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

42

El código será:

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

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, 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", SqlDbType.Char, 8).Value = TextBox1.Text insert_per.Parameters.Add("@N", SqlDbType.VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@APE", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@EM", SqlDbType.VarChar, 50).Value = TextBox4.Text If (RadioButton1.Checked = True) Then insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = "M" ElseIf (RadioButton2.Checked = True) Then insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = "F" End If insert_per.Parameters.Add("@EC", SqlDbType.Char, 1).Value = LTrim(ListBox1.SelectedItem) insert_per.Parameters.Add("@FN", SqlDbType.DateTime).Value = MaskedTextBox1.Text If (resp = 1) Then MessageBox.Show("Se grabo el registro") limpiar_ingreso() End If conex.Open() resp = insert_per.ExecuteNonQuery End Sub End Class

ALTER PROC INSERTAR_PERSONA

@N VARCHAR (30),

@APE VARCHAR (40),

@EM VARCHAR(50),

@G CHAR (1),

@EC CHAR (1),

@FN DATETIME

AS

INSERT INTO Personas

(nomperso,apeperso,email,genero,estadocivil,fechanac)

VALUES(@N, @APE,@EM, @G, @EC,@FN)

Page 43: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

43

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, 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("@N", SqlDbType.VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@APE", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@EM", SqlDbType.VarChar, 50).Value = TextBox4.Text If (RadioButton1.Checked = True) Then insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = "M" ElseIf (RadioButton2.Checked = True) Then insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = "F" End If insert_per.Parameters.Add("@EC", SqlDbType.Char, 1).Value = LTrim(ListBox1.SelectedItem) insert_per.Parameters.Add("@FN", SqlDbType.DateTime).Value = MaskedTextBox1.Text If (resp = 1) Then MessageBox.Show("Se grabo el registro") limpiar_ingreso() End If conex.Open() resp = insert_per.ExecuteNonQuery End Sub End Class

Page 44: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

44

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("CONSULTAPERSONAS", conex) Dim ds As New Data.DataSet data.SelectCommand.CommandType = CommandType.StoredProcedure data.Fill(ds, "CONSULTAPERSONA") DataGridView1.DataSource = ds.Tables("CONSULTAPERSONA") End Sub Private Sub Button1_Click(sender As 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("@N", SqlDbType.VarChar, 30).Value = TextBox2.Text insert_per.Parameters.Add("@APE", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_per.Parameters.Add("@EM", SqlDbType.VarChar, 50).Value = TextBox4.Text If (RadioButton1.Checked = True) Then insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = "M" ElseIf (RadioButton2.Checked = True) Then insert_per.Parameters.Add("@G", SqlDbType.Char, 1).Value = "F" End If insert_per.Parameters.Add("@EC", SqlDbType.Char, 1).Value = LTrim(ListBox1.SelectedItem) insert_per.Parameters.Add("@FN", SqlDbType.DateTime).Value = MaskedTextBox1.Text If (resp = 1) Then MessageBox.Show("Se grabo el registro") limpiar_ingreso() End If conex.Open() resp = insert_per.ExecuteNonQuery Cargardatos() End Sub

Page 45: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

45

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.

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

A. 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,CategoryName,Description

from Categories

create proc po

@c int

as

select p.ProductID,p.ProductName,p.UnitPrice,c.CategoryID

from Products p join Categories c on c.CategoryID=p.CategoryID

where c.CategoryID=@c

Page 46: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

46

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

Page 47: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

47

O puede ser asi:

La programación en visual Studio Será:

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

Imports System.Data.SqlClient Public Class Form1 Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load Dim data As New SqlDataAdapter("categorua", conex) Dim ds As New 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, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter End Sub Private Sub DataGridView1_CellMouseClick(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick Dim insert_per As New SqlDataAdapter("po", conex) Dim ds As New Data.DataSet insert_per.SelectCommand.CommandType = CommandType.StoredProcedure insert_per.SelectCommand.Parameters.Add("@c", SqlDbType.Int).Value = DataGridView1.Rows(e.RowIndex).Cells(0).Value insert_per.Fill(ds, "CONSULTAPERSONA") DataGridView2.DataSource = ds.Tables("CONSULTAPERSONA") End Sub

create proc query15

as

select

OrderID,OrderDate,F

reight

from Orders

create proc query16

@oid int

as

select od.orderid, o.orderdate,

p.productname, p.UnitPrice, quantity

from Products p inner join [Order

Details] od on p.ProductID =od.ProductID

inner join Orders o on o.OrderID =

od.OrderID

where o.OrderID = @oid

Page 48: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

48

La programación en visual Studio será:

Imports System.Data.SqlClient Public Class Form2 Private Sub Form2_Load(ByVal sender As System.Object, ByVal 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, "query") DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub DataGridView1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter Dim datos As New SqlDataAdapter("query16", CONEX) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@oid", SqlDbType.Int).Value = DataGridView1.Rows(e.RowIndex).Cells(0).Value 'Indica valor de filas y columnas seleccionada en el dtgv datos.Fill(ds, "query16") DataGridView2.DataSource = ds.Tables(0) End Sub End Class

Page 49: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

49

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

Page 50: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

50

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, ByVal e As System.EventArgs) Handles 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.NorthwindDataSet.QUERY17) Dim datos As New SqlDataAdapter("query17", CONEX) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.Fill(ds, "query17") DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub DataGridView1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter PictureBox1.Image = Image.FromFile("C:\Users\PC\Desktop\fOTOS" + CStr(DataGridView1.Rows(e.RowIndex).Cells(0).Value) + ".jpg") End Sub End Class

Page 51: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

51

C.

create proc query18

as

select EmployeeID,FirstName,LastName

from Employees

create proc query181

@eid int

as

select OrderID,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,p.ProductID, p.ProductName, p.UnitPrice

from Products p inner join [Order Details] od on p.ProductID = od.ProductID inner join

Orders o on o.OrderID = od.OrderID

where o.OrderID = @oid

Page 52: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

52

Page 53: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

53

MANTENIMIENTO

CONSULTAS A TRAVÉS DE CUADRO DETALLES

Page 54: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

54

Page 55: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

55

Ejercicio 2)

Page 56: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

56

EJERCICIO

Imports System.Data.SqlClient Public Class Form2 Private Sub CategoriesBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles CategoriesBindingNavigatorSaveItem.Click Me.Validate() Me.CategoriesBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.NorthwindDataSet) End Sub Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.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.NorthwindDataSet.Categories) End Sub Sub cargar_datos() Dim cone As New SqlConnection("server = .; database = northwind; trusted_connection = true") Dim datos As New SqlDataAdapter("select productname, unitprice, unitsinstock, categoryid from products where categoryid=@cate", cone) 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 BindingNavigatorMoveNextItem_Click(sender As System.Object, e As System.EventArgs) Handles BindingNavigatorMoveNextItem.Click cargar_datos() End Sub

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

End Class

Page 57: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

57

Imports System.Data.SqlClient Public Class Form3 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim conex As New SqlConnection("server = .; database = northwind; trusted_connection = true") Dim comando As New SqlCommand("select productname, unitprice, supplierid, unitsinstock from products where productid = @id", conex) comando.Parameters.Add("@id", SqlDbType.Int).Value = CInt(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("No existe este producto") End If registro.Close() conex.Close() End Sub End Class

Page 58: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

58

EJERCICIO BUSAND POR CODIGO DE CATEGORIA

Imports System.Data.SqlClient Public Class Form4 Private Sub Form4_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim conex As New SqlConnection("server = .; database = northwind; trusted_connection = true") Dim comando As New SqlCommand("select productname, unitprice, supplierid, unitsinstock from products where supplierid = @id", conex) comando.Parameters.Add("@id", SqlDbType.Int).Value = CInt(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))) Loop End Sub End Class

Page 59: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

59

Ahora con un list box

Imports System.Data.SqlClient Public Class Form4 Private Sub Form4_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim conex As New SqlConnection("server = .; database = northwind; trusted_connection = true") Dim comando As New SqlCommand("select productname, unitprice, supplierid, unitsinstock from products where supplierid = @id", conex) comando.Parameters.Add("@id", SqlDbType.Int).Value = CInt(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

Page 60: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

60

CREACIÓN DE UN FORMULARIO LOGIN

Page 61: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

61

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 = CustomPrincipal ' 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 sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Dim valor As Integer Dim consulta As New SqlCommand("select count(*) from usuario where idusuario=@id and password=@pas", conex) consulta.Parameters.Add("@id", SqlDbType.VarChar, 20).Value = UsernameTextBox.Text consulta.Parameters.Add("@pas", SqlDbType.VarChar, 20).Value = PasswordTextBox.Text conex.Open() valor = consulta.ExecuteScalar() conex.Close() If valor = 1 Then Form6.Show() Me.Hide() Else MessageBox.Show("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, ByVal e As System.EventArgs) Handles Cancel.Click Me.Close() End Sub

Page 62: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

62

Luego para actualizar el login creamos un formulario adicional con un

linklabel al cual se le anexa.

Page 63: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

63

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 sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Dim valor As Integer Dim consulta As New SqlCommand("select count(*) from usuario where idusuario=@id and password=@pas", conex) consulta.Parameters.Add("@id", SqlDbType.VarChar, 20).Value = UsernameTextBox.Text consulta.Parameters.Add("@pas", SqlDbType.VarChar, 20).Value = PasswordTextBox.Text conex.Open() valor = consulta.ExecuteScalar() conex.Close() If valor = 1 Then Form6.Show() Me.Hide() Else MessageBox.Show("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, ByVal e As System.EventArgs) Handles Cancel.Click Me.Close() End Sub Private Sub LinkLabel1_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked Form2.Show() End Sub End Class

Page 64: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

64

El código en el formulario:

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

Page 65: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

65

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:

Page 66: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

66

Page 67: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

67

Ejercicios Finales

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:

Page 68: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

68

Los comandos en SQL serán:

La codificación será:

ALTER PROCEDURE ORDENXEMPLE1

@EID INT

AS

SELECT E.EmployeeID, O.OrderID,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

Imports System.Data.SqlClient Public Class Form1 Private Sub EmployeesBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EmployeesBindingNavigatorSaveItem.Click Me.Validate() Me.EmployeesBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.NorthwindDataSet) End Sub Private Sub Form1_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 'NorthwindDataSet.Employees' Puede moverla o quitarla según sea necesario. Me.EmployeesTableAdapter.Fill(Me.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 datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@eid", SqlDbType.Int).Value = EmployeeIDTextBox.Text datos.Fill(ds, "ORDENXEMPLE1") DataGridView1.DataSource = ds.Tables(0) End Sub Private Sub BindingNavigatorPositionItem_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingNavigatorPositionItem.Enter CargarDatos() End Sub End Class

Page 69: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

69

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á:

El diseño será:

CREATE PROC COMPRASANIO

@ANIO NVARCHAR(4)

AS

SELECT C.CompanyName, YEAR(O.OrderDate) AS AÑO,SUM(QUANTITY) AS NUMPRODCOMPRADOS

FROM Customers C INNER JOIN Orders O

ON C.CustomerID = O.CustomerID INNER JOIN [Order Details] OD

ON OD.OrderID=O.OrderID

WHERE YEAR(O.OrderDate) = @ANIO

GROUP BY YEAR (O.OrderDate), C.CompanyName,Quantity

Page 70: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

70

La línea de comandos en Visual Studio es:

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

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

Page 71: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

71

La consulta SQL de búsqueda será:

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:

CREATE PROC BUSCARCLIENTE

@CID CHAR(5)

AS

SELECT C.CompanyName,O.OrderID, YEAR(OrderDate), P.ProductName, Quantity

FROM Customers C INNER JOIN Orders O ON

C.CustomerID = O.CustomerID INNER JOIN

[Order Details] OD ON O.OrderID=OD.OrderID

INNER JOIN Products P ON P.ProductID=OD.ProductID

WHERE C.CustomerID = @CID

Page 72: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

72

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:

Imports System.Data.SqlClient Public Class Form3 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Dim conex As New SqlConnection("server = .; database = northwind; trusted_connection = true") Dim datos As New SqlDataAdapter("BUSCARCLIENTE ", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@CID", SqlDbType.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, ByVal e As System.EventArgs) Handles 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.NorthwindDataSet1.Customers) End Sub End Class

CREATE PROC VENTASANIOMES

AS

SELECT YEAR(O.OrderDate),MONTH(O.OrderDate), SUM(UnitPrice*Quantity)

FROM Orders O INNER JOIN [Order Details] OD

ON O.OrderID=OD.OrderID

GROUP BY O.OrderDate, UnitPrice, Quantity

Page 73: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

73

Public Class Form4 Private Sub Form4_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 'NorthwindDataSet2.VENTASANIOMES' Puede moverla o quitarla según sea necesario. Me.VENTASANIOMESTableAdapter.Fill(Me.NorthwindDataSet2.VENTASANIOMES) Me.ReportViewer1.RefreshReport() End Sub End Class

Page 74: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

74

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á:

CREATE PROC PRODCATEGO

AS

SELECT CategoryName, COUNT(*)

FROM Categories C INNER JOIN Products P

ON P.CATEGORYID = C.CategoryID

GROUP BY C.CategoryName

Page 75: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

75

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:

Page 76: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

76

La programación en Visual será:

Imports System.Data.SqlClient Public Class Form6 Private Sub Form6_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 'NorthwindDataSet4.Products' Puede moverla o quitarla según sea necesario. Me.ProductsTableAdapter.Fill(Me.NorthwindDataSet4.Products) End Sub Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick Dim conex As New SqlConnection("server = .; database = northwind; trusted_connection = true") Dim datos As New SqlDataAdapter("BUSCPROD", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@PID", SqlDbType.Int).Value = DataGridView1.Rows(e.RowIndex).Cells(0).Value 'Indica valor de filas y columnas seleccionada en el dtgv datos.Fill(ds, "BUSCPROD") DataGridView2.DataSource = ds.Tables(0) End Sub End Class

Page 77: Manual Visual 1

ALUMNO: ALBERT SMITH LEIVA

77

Ahora, la vista del programa trabajando será: