32
[Escriba el título del documento] Universidad Nacional de Cajamarca Facultad de Ingeniería Escuela Académico Profesional de Ingeniería de Sistemas CURSO : PROGRAMACIÓN APLICADA I TEMA : MANUAL INTEGRANTES: ORRILLO VEGA, Roger Eduardo DOCENTE : Ing. CALOS APARACIO CICLO : VI

Manual Aplicada

Embed Size (px)

DESCRIPTION

guia de conexion y ejercicios de base de datos Sql con visual Basic

Citation preview

Page 1: Manual Aplicada

[Escriba el título del documento]

Universidad Nacional de

Cajamarca

Facultad de Ingeniería

Escuela Académico Profesional de Ingeniería de

Sistemas

CURSO : PROGRAMACIÓN APLICADA I

TEMA : MANUAL

INTEGRANTES: ORRILLO VEGA, Roger Eduardo

DOCENTE : Ing. CALOS APARACIO

CICLO : VI

Page 2: Manual Aplicada

MANUAL PROGRAMACIÓN APLICADA PARTE 2

1. Conectar Con SQL

Imports System.Data.SqlClient

2. Llenar un DataGridView

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") GridView1.DataBind()

3. Llamar un Procedimiento

If TextBox3.Text = "" Or TextBox4.Text = "" Then MsgBox("Faltan Datos") Else Dim insertar As New SqlCommand("Agr_Comp", conex) insertar.CommandType = CommandType.StoredProcedure insertar.Parameters.Add("@fec", SqlDbType.DateTime).Value =MaskedTextBox1.Text insertar.Parameters.Add("@prov", SqlDbType.VarChar, 20).Value = TextBox2.Text insertar.Parameters.Add("@total", SqlDbType.Float).Value = TextBox3.Text insertar.Parameters.Add("@boleta", SqlDbType.VarChar, 20).Value =TextBox4.Text conex.Open() resp = insertar.ExecuteNonQuery() conex.Close() If resp = 1 Then MessageBox.Show("se grabo") TextBox1.Focus() GroupBox2.Visible = True GroupBox1.Enabled = False End If End If

4. Uso de ExecuteNonQuery y executescalar()

Page 3: Manual Aplicada

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

5. Llenar una tabla SQL con visual

Page 4: Manual Aplicada

Imports System.Data.SqlClient Public Class Form9 Dim resp As Integer Dim gen, estcv As Char Private Sub Form9_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Sub limpiar_ingreso() TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" MaskedTextBox1.Text = "" End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim insertar As New SqlCommand("insertar_pers", conex) insertar.CommandType = CommandType.StoredProcedure insertar.Parameters.Add("@n", SqlDbType.VarChar, 30).Value = TextBox2.Text insertar.Parameters.Add("@a", SqlDbType.VarChar, 40).Value = TextBox3.Text insertar.Parameters.Add("@e", SqlDbType.VarChar, 50).Value = TextBox4.Text If RadioButton1.Checked Then gen = "m" If RadioButton2.Checked Then gen = "f" insertar.Parameters.Add("@g", SqlDbType.Char, 1).Value = gen estcv = ListBox1.SelectedItem insertar.Parameters.Add("@ec", SqlDbType.Char, 1).Value = estcv insertar.Parameters.Add("@fn", SqlDbType.DateTime).Value = MaskedTextBox1.Text conex.Open() resp = insertar.ExecuteNonQuery() conex.Close() If resp = 1 Then MessageBox.Show("se grabo") limpiar_ingreso() End If Dim datos As New SqlClient.SqlDataAdapter("Select * from persona ", conex) Dim ds As New Data.DataSet datos.Fill(ds, "todos") DataGridView1.DataSource = ds.Tables("todos") 'muestra los datos de la tabla alumnos End Sub End Class

-Procedimiento almacenado

Page 5: Manual Aplicada

create proc insertar_pers @n varchar(30), @a varchar(40), @e varchar(50), @g char(1), @ec char(1), @fn datetime as insert into persona values (@n,@a,@e,@g,@ec,@fn)

6. Mantenimiento: Forma Automática

Seleccionar de dos maneras: datagridview o detalles:

Se arrastra al Formulario y listo

7. SQL Data Reader simple (un solo registro por columna)

Page 6: Manual Aplicada

Imports System.Data.SqlClient Public Class Form13 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 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 regis As SqlDataReader conex.Open() regis = comando.ExecuteReader() regis.Read() If regis.HasRows Then TextBox2.Text = regis.Item(0) TextBox3.Text = regis.Item(1) TextBox4.Text = regis.Item(2) TextBox5.Text = regis.Item(3) Else MsgBox("no existe este codigo") End If regis.Close() conex.Close() End Sub

8. SQL Data Reader complejo (varios registros por columna)

Imports System.Data.SqlClient Public Class Form14 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 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 regis As SqlDataReader conex.Open() regis = comando.ExecuteReader() Do While regis.Read()

Page 7: Manual Aplicada

MessageBox.Show(regis.Item(0) + " - " + CStr(regis.Item(1))) Loop regis.Close() conex.Close() End Sub Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus TextBox1.Text = "" End Sub End Class

9. Codigo para generar en un datagridview al hacer doble clic en otro

DataGridView1.Rows(e.RowIndex).Cells(0).Value

REPORTES

CONFIGURAR REPORTES

Crear procedimiento en SQL

Para ello se agrega un la herramienta ReportViewer1:

Se realiza de la siguiente manera:

Page 8: Manual Aplicada
Page 9: Manual Aplicada
Page 10: Manual Aplicada

EJERCICIOS

EJERCICIO 1

Imports System.Data.SqlClient Public Class Form9 Dim resp As Integer Dim gen, estcv As Char Private Sub Form9_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Sub limpiar_ingreso() TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" MaskedTextBox1.Text = "" End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim insertar As New SqlCommand("insertar_pers", conex) insertar.CommandType = CommandType.StoredProcedure insertar.Parameters.Add("@n", SqlDbType.VarChar, 30).Value = TextBox2.Text insertar.Parameters.Add("@a", SqlDbType.VarChar, 40).Value = TextBox3.Text insertar.Parameters.Add("@e", SqlDbType.VarChar, 50).Value = TextBox4.Text If RadioButton1.Checked Then gen = "m" If RadioButton2.Checked Then gen = "f" insertar.Parameters.Add("@g", SqlDbType.Char, 1).Value = gen estcv = ListBox1.SelectedItem insertar.Parameters.Add("@ec", SqlDbType.Char, 1).Value = estcv insertar.Parameters.Add("@fn", SqlDbType.DateTime).Value = MaskedTextBox1.Text conex.Open() resp = insertar.ExecuteNonQuery() conex.Close() If resp = 1 Then MessageBox.Show("se grabo") limpiar_ingreso()

Page 11: Manual Aplicada

End If Dim datos As New SqlClient.SqlDataAdapter("Select * from persona ", conex) Dim ds As New Data.DataSet datos.Fill(ds, "todos") DataGridView1.DataSource = ds.Tables("todos") 'muestra los datos de la tabla alumnos End Sub End Class

EJERCICIO 2

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged Dim datos As New SqlClient.SqlDataAdapter("update productos set stock=stock+1 where cod_producto=153", conex) Dim ds As New Data.DataSet datos.Fill(ds, "Query4") DataGridView1.DataSource = ds.Tables("Query4") 'muestra los datos de la tabla alumnos End Sub

Page 12: Manual Aplicada

EJERCICIO 3 (CAMBIAR CONTRASEÑA)

Imports System.Data.SqlClient Public Class Form15 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox3.Text = TextBox4.Text Then Dim valor As Integer Dim query As New SqlCommand("select count(idusuario) from usuario where idusuario=@u and password=@p", conex) query.Parameters.Add("@u", SqlDbType.VarChar, 20).Value = TextBox1.Text query.Parameters.Add("@p", SqlDbType.VarChar, 20).Value = TextBox2.Text conex.Open() valor = query.ExecuteNONQUERY() 'cuando se usa execute reader se necesita guardar en algun lugar, con scalar no If valor = 1 Then Dim cambio As New SqlCommand("cpass", conex) cambio.CommandType = CommandType.StoredProcedure cambio.Parameters.Add("@np", SqlDbType.VarChar, 20).Value = TextBox4.Text cambio.Parameters.Add("@us", SqlDbType.VarChar, 20).Value = TextBox1.Text MsgBox("listo") Else MsgBox("Error, usuario-contraseña actual invalidos") End If Else MsgBox("claves no iguales") End If conex.Close() End Sub End Class

Page 13: Manual Aplicada

EJERCICIO 4 (DESARROLLO DE UN MENU CON IMAGENES)

Page 14: Manual Aplicada

EJERCICIO 5 (Mostrar las órdenes de ventas de una determinada fecha, obteniendo

estas de un MonthCalendar.)

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

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

Page 15: Manual Aplicada

EJERCICIO 6 (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 16: Manual Aplicada

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

Consultas SQL

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

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

Page 17: Manual Aplicada

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

De otra forma:

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

Page 18: Manual Aplicada

EJERCICIO 8

Imports System.Data.SqlClient Public Class Form3 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If TextBox1.Text = "" Then Else Dim datos As New SqlClient.SqlDataAdapter("exec alumno " + CStr(TextBox1.Text), conex) Dim ds As New Data.DataSet datos.Fill(ds, "alumno") DataGridView1.DataSource = ds.Tables("alumno") End If 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 'Semana_sistDataSet.CONFERENCIAS' Puede moverla o quitarla según sea necesario. Me.CONFERENCIASTableAdapter.Fill(Me.Semana_sistDataSet.CONFERENCIAS) End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Convert.ToChar(Keys.Enter) Then ingresar(TextBox2.Text) End If mostrar() End Sub Sub mostrar() Dim datos As New SqlClient.SqlDataAdapter("exec ver_asistencia " + CStr(ListBox1.SelectedIndex), conex) Dim ds As New Data.DataSet datos.Fill(ds, "todos")

Page 19: Manual Aplicada

DataGridView2.DataSource = ds.Tables("todos") 'muestra los datos de la tabla alumnos End Sub Sub ingresar(ByVal a) Dim resp As Integer Dim insertar As New SqlCommand("nva_asistencia", conex) insertar.CommandType = CommandType.StoredProcedure insertar.Parameters.Add("@FechaHorareg", SqlDbType.DateTime).Value = Now insertar.Parameters.Add("@IdParticipante", SqlDbType.Char, (10)).Value = a insertar.Parameters.Add("@IdConferencia", SqlDbType.Int).Value = ListBox1.SelectedIndex conex.Open() resp = insertar.ExecuteNonQuery() conex.Close() If resp = 1 Then MessageBox.Show("se grabo") TextBox2.Text = "" End If End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged mostrar() Label4.Text = ListBox1.Text End Sub Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick ingresar(DataGridView1.Rows(e.RowIndex).Cells(0).Value) mostrar() End Sub End Class

Page 20: Manual Aplicada

EJERCICIO 9 ( uso de barra desplazamiento y gridview)

Comandos en SQL

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

Visual Basic

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 21: Manual Aplicada

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:

Los comandos en SQL serán:

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

Page 22: Manual Aplicada

La codificación será:

Ejecutando programa

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 23: Manual Aplicada

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

La línea de comandos en Visual Studio es:

En funcionamiento, el programa se verá así:

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

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 24: Manual Aplicada

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

La consulta SQL de búsqueda será:

VISTA:

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 25: Manual Aplicada

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:

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

Page 26: Manual Aplicada

El funcionamiento del programa será:

4) Realizar un Reporte que divido en años y meses (matriz), que muestre el Monto

Ingresado por las órdenes de compra.

El Comando SQL es:

CREATE PROC VENTASANIOMES

AS

SELECT YEAR(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 27: Manual Aplicada

En funcionamiento el programa se verá:

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 28: Manual Aplicada

5) Ver el número de productos por categoría en un gráfico

La Consulta SQL será:

El diseño del Reporte será:

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:

CREATE PROC PRODCATEGO

AS

SELECT CategoryName, COUNT(*)

FROM Categories C INNER JOIN Products P

ON P.CATEGORYID = C.CategoryID

GROUP BY C.CategoryName

Page 29: Manual Aplicada
Page 30: Manual Aplicada

La programación en Visual será:

Ahora, la vista del programa trabajando 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 31: Manual Aplicada

OTRAS HERRAMIENTAS

Tool Strip Box: Permite la creación de una barra de Menús con imágenes.

Para crear image list y ToolStrip Bottom:

Menu Strip: Menú normal como el de todos los programas.

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 32: Manual Aplicada

Uso De Formulario Mdi: Sirve para que almacene a otros formularios en su interior

Llamada De Un Formulario A Otro el formulario principal(padre) debe estar en mdi y

luego se llamara con el código:

Form2.MdiParent = Me

Form2.Show()

Navegador De Internet

Crear Un Modulo: un modulo se crea para almacenar rutinas que se comparten para varios formularios

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

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