Anda di halaman 1dari 77

Universidad Nacional de Cajamarca

Facultad de Ingeniera
Escuela Acadmico Profesional de Ingeniera de Sistemas
CURSO : PROGRAMACIN 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 creacin de una barra de Mens con imgenes LLAMADA DE UN FORMULARIO A OTRO : Form2.MdiParent = Me Form2.Show()

Configuracin de la coleccin de Imgenes para el Tool Strip

ALUMNO: ALBERT SMITH LEIVA El tool Strip quedara 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

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 determinado botn.

ALUMNO: ALBERT SMITH LEIVA

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 Para alojar pginas web dentro de una aplicacin, para estos e utiliza la herramienta Web Browser: End Class

ALUMNO: ALBERT SMITH LEIVA Navegamos en una pgina web a partir de una aplicacin:

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

ALUMNO: ALBERT SMITH LEIVA Ejercicio con base de datos

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

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

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 por comas)

ALUMNO: ALBERT SMITH LEIVA


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

bulk insert 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 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")

10

ALUMNO: ALBERT SMITH LEIVA

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

Imports System.Data.SqlClient: Establece la librera para la conexin 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 conexin al Servidor, este sirve para establecer la conexin 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 asignacin 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 coleccin de objetos DataTable que se pueden relacionar entre ellos mediante objetos DataRelation. Tambin se puede imponer la integridad de los datos de DataSet mediante los objetos UniqueConstraint y ForeignKeyConstraint. Para obtener informacin ms 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 trados 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 contendrn los datos y agregarlas directamente a DataGridView.

Pginas Web en Visual


En una Aplicacin web:

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

En un GridView:

12

ALUMNO: ALBERT SMITH LEIVA

13

ALUMNO: ALBERT SMITH LEIVA

14

ALUMNO: ALBERT SMITH LEIVA

15

ALUMNO: ALBERT SMITH LEIVA

EJERCICIOS

Buscar Alumno por cdigo

Cdigo 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

16

ALUMNO: ALBERT SMITH LEIVA

Cdigo 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, 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

BUSCAR ALUMNO POR SEXO

Imports System.Data.SqlClient

18

ALUMNO: ALBERT SMITH LEIVA


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 cdigo ser:

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

ToolStripMen: Permite la creacin de mens con imgenes y texto, para hacer ms fcil el enlace de un formulario a otro.

1) Comenzaremos creando, un Formulario, con un Men grfico 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 cdigo ser:

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

2) La primera consulta ser, indicar el nmero de Productos por Categora: DATA.SELECTCOMMAND.COMMANDTYPE = COMMANDTYPE.STOREDPROCEDURE: Lnea de Cdigo 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 parmetros (si los hubiera) a una bsqueda. DataGridView1.DataSource = ds.Tables("QUERY7"): Indica en datagriew o vista se mostrarn los datos de la consulta SQL realizada.

20

ALUMNO: ALBERT SMITH LEIVA

El cdigo 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

21

ALUMNO: ALBERT SMITH LEIVA

3) La siguiente consulta ser mostrar un listn de productos por cada categora, 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 lnea de cdigo carga datos en la tabla 'NorthwindDataSet.Categories' Puede moverla o quitarla segn 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

22

ALUMNO: ALBERT SMITH LEIVA

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:

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

5)

Busca productos que tengan coincidencia al empezar.

23

ALUMNO: ALBERT SMITH LEIVA

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

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

24

ALUMNO: ALBERT SMITH LEIVA


6) Informacin 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 lnea de cdigo carga datos en la tabla 'NorthwindDataSet1.Suppliers' Puede moverla o quitarla segn 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

25

ALUMNO: ALBERT SMITH LEIVA


7) Bsqueda 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

26

ALUMNO: ALBERT SMITH LEIVA


8) Consulta de productos con o sin stock:

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

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

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

27

ALUMNO: ALBERT SMITH LEIVA 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

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, 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

29

ALUMNO: ALBERT SMITH LEIVA

30

ALUMNO: ALBERT SMITH LEIVA

31

ALUMNO: ALBERT SMITH LEIVA

11) Hacer un diseo que permita Ver productos con Stock, Vigentes, clasificados por categoras a travs de un group box, para categora el usuario la indica y filtra los productos por esta categora. Adems aadir 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

32

ALUMNO: ALBERT SMITH LEIVA

33

ALUMNO: ALBERT SMITH LEIVA

34

ALUMNO: ALBERT SMITH LEIVA

12) Modificar el ejercicio anterior, quitando el botn y haciendo que la consulta por categoras 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

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 aos 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

38

ALUMNO: ALBERT SMITH LEIVA

INGRESANDO INFORMACIN DESDE VISUAL STUDIO


01. Creamos un Store Procedure en SQL, para poder ingresar registros, en este caso era a una tabla
Personas: El cdigo SqlTransac es:
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)

En visual Studio creamos un formulario:

*FILL (conexin): Ejecuta la conexin entre Visual Studio y Sql Server, enva a Sql Adapter a recoger determinada informacin.

39

ALUMNO: ALBERT SMITH LEIVA

El cdigo en Visual Studio es:


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

02. Ahora en la falla con el sexo:

40

ALUMNO: ALBERT SMITH LEIVA


El cdigo 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, 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

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

41

ALUMNO: ALBERT SMITH LEIVA


El cdigo 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, 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

04. Ahora con ID con identificador numrico que aumenta de uno en uno, se altera el procedure:
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)

42

ALUMNO: ALBERT SMITH LEIVA

Luego Modificamos el Cdigo 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

43

ALUMNO: ALBERT SMITH LEIVA

05. Con actualizaciones constantes en un Datagriew:

EL cdigo 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

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 lgica de validacin personalizada en su aplicacin ExecuteNonQuery: Ejecuta una instruccin de Transact-SQL en la conexin y devuelve el nmero de filas afectadas. Se puede utilizar ExecuteNonQuery para realizar operaciones de catlogo (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 conexin (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

45

ALUMNO: ALBERT SMITH LEIVA

Vista en visual:

La programacin 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

46

ALUMNO: ALBERT SMITH LEIVA

O puede ser asi:


La programacin en visual Studio Ser:

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

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,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

47

ALUMNO: ALBERT SMITH LEIVA

La programacin 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

48

ALUMNO: ALBERT SMITH LEIVA

Enlazando Datos Directamente en el DataGridView:


Clic elegir Origen de Datos, luego clic en nuevo orgen 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 Conexin, 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 funcin, 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 diseo del Datagriew, la programacin 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 lnea de cdigo carga datos en la tabla 'NorthwindDataSet.QUERY17' Puede moverla o quitarla segn 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

50

ALUMNO: ALBERT SMITH LEIVA

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

51

ALUMNO: ALBERT SMITH LEIVA

52

ALUMNO: ALBERT SMITH LEIVA

MANTENIMIENTO
CONSULTAS A TRAVS 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, 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 lnea de cdigo carga datos en la tabla 'NorthwindDataSet.Categories' Puede moverla o quitarla segn 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

EJERCICIO

56

ALUMNO: ALBERT SMITH LEIVA

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

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, 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

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, 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

59

ALUMNO: ALBERT SMITH LEIVA

CREACIN 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: Cdigo para el acceso:

Imports System.Data.SqlClient Public Class LoginForm1 ' TODO: inserte el cdigo para realizar autenticacin personalizada usando el nombre de usuario y la contrasea 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 continuacin: ' My.User.CurrentPrincipal = CustomPrincipal ' donde CustomPrincipal es la implementacin de IPrincipal utilizada para realizar la autenticacin. ' Posteriormente, My.User devolver la informacin 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 Contrasea 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

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 cdigo para realizar autenticacin personalizada usando el nombre de usuario y la contrasea 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 continuacin: ' 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 Contrasea 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

63

ALUMNO: ALBERT SMITH LEIVA

El cdigo 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("contrasea actualizada") Me.Close() Else MsgBox("no se actualizo") End If Else MsgBox("nueva contrasea incorrecta") End If Else MessageBox.Show("NO existe Usuario o Contrasea 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

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 cuestin. Para ello se agrega un la herramienta ReportViewer1:

Se realiza de la siguiente manera:

65

ALUMNO: ALBERT SMITH LEIVA

66

ALUMNO: ALBERT SMITH LEIVA

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 cdigo del cliente Establecemos el diseo de la consulta que se va a realizar:

67

ALUMNO: ALBERT SMITH LEIVA

Los comandos en SQL sern:

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

La codificacin ser:
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 lnea de cdigo carga datos en la tabla 'NorthwindDataSet.Employees' Puede moverla o quitarla segn 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

68

ALUMNO: ALBERT SMITH LEIVA


Ejecutando programa

2) De un ListBox o ComboBox, escoger un ao y en un DatagridView, mostrar los clientes, el ao y el nmero de productos comprados:
El cdigo SQL ser:
CREATE PROC COMPRASANIO @ANIO NVARCHAR(4) AS SELECT C.CompanyName, YEAR(O.OrderDate) AS AO,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

El diseo ser:

69

ALUMNO: ALBERT SMITH LEIVA

La lnea de comandos en Visual Studio es:

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

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 Compaa, OrderID, Ao de la Orden, Nombre Producto Comprado y su cantidad

70

ALUMNO: ALBERT SMITH LEIVA

La consulta SQL de bsqueda ser:


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

VISTA:

Procedemos a configurar el ComboBox, mediante una conexin directa con la Base de Datos, seleccionando como miembro de muestra los nombres de los cliente y como miembros de valor ( bsqueda), el ID del cliente.

Para la configuracin del DataGridView:

71

ALUMNO: ALBERT SMITH LEIVA


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 lnea de cdigo carga datos en la tabla 'NorthwindDataSet1.Customers' Puede moverla o quitarla segn sea necesario. Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet1.Customers) End Sub End Class

El funcionamiento del programa ser:

4) Realizar un Reporte que divido en aos y meses (matriz), que muestre el Monto Ingresado por las rdenes de compra. El Comando SQL es:
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

72

ALUMNO: ALBERT SMITH LEIVA

Public Class Form4 Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: esta lnea de cdigo carga datos en la tabla 'NorthwindDataSet2.VENTASANIOMES' Puede moverla o quitarla segn sea necesario. Me.VENTASANIOMESTableAdapter.Fill(Me.NorthwindDataSet2.VENTASANIOMES) Me.ReportViewer1.RefreshReport() End Sub End Class

73

ALUMNO: ALBERT SMITH LEIVA

En funcionamiento el programa se ver:

5) Ver el nmero de productos por categora en un grfico La Consulta SQL ser:


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

El diseo del Reporte ser:

74

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 cdigo del Producto. Configuramos el diseo de los DataGridView, para cadauno de las consultas pedidas:

75

ALUMNO: ALBERT SMITH LEIVA

La programacin 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 lnea de cdigo carga datos en la tabla 'NorthwindDataSet4.Products' Puede moverla o quitarla segn 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

76

ALUMNO: ALBERT SMITH LEIVA

Ahora, la vista del programa trabajando ser:

77

Anda mungkin juga menyukai