MANUAL DE VISUAL BASIC PARTE II
Nombre: Karen Johana Estrada Aguilar
CONSULTAS CON SQL –
REPORTING SERVICES
CAJAMARCA, 2012
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 1
INDICE CONSULTAS CON SQL EN VISUAL BASIC ........................................................................ 2
Mostrar el registro de la tabla estudiantes: ................................................................ 4
Realizar el ejercicio anterior en una página web: ...................................................... 5
Buscar un alumno filtrado por su código con Radio button: ...................................... 8
Buscar un alumno filtrado por su código con Enter en el Textbox:.......................... 10
Mostrar alumnos o alumnas con radios button ......................................................... 12
UN TOOLsTRIP CON IMÁGENES ...................................................................................... 15
El menúStrip deberá estar acompañado de imágenes: .................................................... 15
Creamos un módulo (Globales) ............................................................................................ 16
AGREGAR UNA CONSULTA A UN LISTBOX .................................................................... 19
EJERCICIOS COMPLEMENTARIOS SOBRE CONSULTAS A BASE DE DATOS
USANDO VISUAL BASIC 2010 ........................................................................................... 32
EJERCICIOS ........................................................................................................................ 47
INSERTAR EN UNA TABLA DE UBA BASE DE DATOS DESDE VISUAL BASIC ........... 59
OBJETO MaskedTextBox ..................................................................................................... 60
CONSULTAR, AGREGAR Y ELIMINAR REGISTROS EN LA TABLA CATEGORÍAS ...... 69
CREAR IN INICIO DE SESIÓN PARA EL SISTEMA .......................................................... 79
Cambiar contraseña desde otro formulario ..................................................................... 82
CREANDO EL SISTEMA DE ASISTENCIA DE LOS ALUMNOS DE INGENIERÍA DE
SISTEMAS A LA XII SEMANA SISTÉMICA ........................................................................ 85
REPORTING SERVICE ........................................................................................................ 94
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 2
CONSULTAS CON SQL EN VISUAL BASIC
Para hacer una consulta desde Visual Studio a una base de datos hacemos:
Primero creamos una tabla Estudiantes en Sql Sever Managament
Pasamos los registros de los alumnos en un documento Csv (separado por comas),
ejecutando la siguiente consulta:
use Asistencia_Semana_Sistémica
bulk
insert dbo.PARTICIPANTES
from 'I:\alumnos2.csv'
with
(
fieldterminator=',', --separa a los campos, cambia de campo
rowterminator='\n' -- cambia de filas por el enter
)
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 3
CREAMOS UN FORMULARIO EN VISUAL STUDIO
Ponemos la cabecera que funcionaría como una biblioteca: Imports
System.Data.SqlClient
Realizamos la conexión a la Base de Datos creando el objeto conex (conex es un objeto
que guarda la ubicación de la base de datos ya sabe dónde está, es un camino)
Dim conex As New SqlConnection("server=.;database=Northwind;trusted_connection=true")
Hacemos una consulta con SQLDataAadapter
Dim datos As New SqlDataAdapter("select* from EMPLOYEES", conex)
Creamos un objeto DataSet
Dim ds As New Data.DataSet
Llenamos los registros obtenidos por la consulta en un DataGridView
datos.Fill(ds, "Alumnos")
DGV1.DataSource = ds.Tables("Alumnos")
El código en Visual Studio es:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 4
Ejemplo:
Mostrar el registro de la tabla estudiantes:
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Dim conex As New
SqlConnection("server=MIK3\io;database=Northwind1;trusted_connection=true") 'conex es un
objeto que guarda la ubicacion de la base de datos ya sabe donde esta, es un camino
Dim datos As New SqlDataAdapter("select* from Estudiante", conex)
Dim ds As New Data.DataSet
datos.Fill(ds, "Alumnos")
DGV1.DataSource = ds.Tables("Alumnos")
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 5
Realizar el ejercicio anterior en una página web:
1° Creamos un nuevo proyecto y escogemos en planillas instaladas la opción Web:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 6
2° Escogemos la opción Aplicación web ASP.NET:
3° Se observa el entorno así:
4° Agregamos un nuevo elemento un (Formulario):
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 7
Escogemos un DataGridView y lo arrastramos sobre el formulario:
Escribimos el código:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 8
Cargó:
Buscar un alumno filtrado por su código con Radio button:
Consulta SQL:
create proc buscar_alumnos
@id char(10)
as
select *
from Estudiante
where Id_estudiante=@id
Imports System.Data.SqlClient
Public Class Form1
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 datos As New SqlDataAdapter("buscar_alumnos", conex)
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 9
Dim ds As New Data.DataSet
datos.SelectCommand.CommandType = CommandType.StoredProcedure '***
datos.SelectCommand.Parameters.Add("@id", SqlDbType.Char, 10).Value =
TextBox1.Text
datos.Fill(ds, "alumnitos")
DGV.DataSource = ds.Tables("Alumnitos")
End Sub
End Class
Diseño del formulario:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 10
Buscar un alumno filtrado por su código con Enter en el Textbox:
En el evento keypress del textbox hacemos la conexión y el código:
Imports System.Data.SqlClient
Public Class Form2
Private Sub TextBox1_KeyPress(sender As Object, e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Chr(13) Then
Dim conex As New
SqlConnection("server=.;database=Northwind;trusted_connection=true")
Dim datos As New SqlDataAdapter("buscar_alumnos", conex)
Dim ds As New Data.DataSet
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@id", SqlDbType.Char, 10).Value =
TextBox1.Text
datos.Fill(ds, "alumnitos")
DGV.DataSource = ds.Tables("Alumnitos")
TextBox1.Text = ""
TextBox1.Focus()
End If
End Sub
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 11
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
TextBox1.Focus()
End Sub
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs)
Handles TextBox1.TextChanged
TextBox1.Focus()
End Sub
End Class
Filtrar alumno por apellido:
Imports System.Data.SqlClient
Public Class Form4
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Chr(13) Then
Dim conex As New
SqlConnection("server=MIK3\io;database=Northwind1;trusted_connection=true")
Dim datos As New SqlDataAdapter("apell", conex) ' "selec * from Estudiante where
Id_estudiante=@id" (la linea *** no seria)
Dim ds As New Data.DataSet
datos.SelectCommand.CommandType = CommandType.StoredProcedure '***
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 12
datos.SelectCommand.Parameters.Add("@ape", SqlDbType.Char, 10).Value =
TextBox1.Text
datos.Fill(ds, "alumnitos") 'ejecuta el data adapter, que abre la conexion
DGV.DataSource = ds.Tables("alumnitos")
TextBox1.Text = ""
TextBox1.Focus()
End If
End Sub
End Class
Mostrar alumnos o alumnas con radios button
Dim conex1 As New
SqlConnection("server=MIK3\io;database=Northwind1;trusted_connection=true")
If RadioButton1.Checked = True Then
Dim datos As New SqlDataAdapter("sexo", conex1)
Dim ds As New Data.DataSet
datos.SelectCommand.CommandType = CommandType.StoredProcedure '***
datos.SelectCommand.Parameters.Add("@sex", SqlDbType.Char, 1).Value = 1
datos.Fill(ds, "Alumnos")
DGV.DataSource = ds.Tables("Alumnos")
ElseIf RadioButton2.Checked = True Then
Dim datos1 As New SqlDataAdapter("sexo", conex1)
Dim ds1 As New Data.DataSet
datos1.SelectCommand.CommandType = CommandType.StoredProcedure '***
datos1.SelectCommand.Parameters.Add("@sex", SqlDbType.Char, 1).Value = 2
datos1.Fill(ds1, "Alumnos")
DGV.DataSource = ds1.Tables("Alumnos")
End If
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 13
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 14
En un sistema realizar el mantenimiento en consultas:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 15
UN TOOLsTRIP CON IMÁGENES
EN CONSULTA HACEMOS LOS SIGUIENTES FORMULARIO:
El menúStrip deberá estar acompañado de imágenes:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 16
Creamos un módulo (Globales)
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 17
Escribimos el siguiente Código:
Module GLOBALES
Public CONEX As New
System.Data.SqlClient.SqlConnection("server=MIK3\io;database=Northwind1;trusted_connect
ion=true")
End Module
HACEMOS EL PROCEDIMIENTO ALMACENADO:
create PROC consulta1
AS
SELECT CATEGORYNAME, COUNT(*) AS TOTAL
FROM Categories AS C
INNER JOIN Products AS P
ON C.CategoryID=P.CategoryID
GROUP BY CategoryName
ORDER BY CategoryName
EN VISUAL BASIC:
Imports System.Data.SqlClient
Public Class CONSULTA1
Private Sub CONSULTA1_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Dim datos As New SqlDataAdapter("consulta1", CONEX)
Dim DS As New Data.DataSet
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.Fill(DS, "QUERY1")
DGV.DataSource = DS.Tables("QUERY1")
End Sub
End Class
CREATE PROC CONSULTA2
@CATE INT
AS
SELECT
ProductID,ProductName,UnitPrice,UnitsInStock,COMPANYNAME,CategoryID
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 18
FROM Products AS P INNER JOIN Suppliers AS S ON P.SupplierID=S.SupplierID
WHERE CategoryID=@CATE
Imports System.Data.SqlClient
Public Class consulta02
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ListBox1.SelectedIndexChanged
Dim datos As New SqlDataAdapter("query2", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@cate", SqlDbType.Int).Value =
ListBox1.SelectedValue
Dim ds As New Data.DataSet
datos.Fill(ds, "query2")
DGV2.DataSource = ds.Tables("query2")
End Sub
Private Sub consulta02_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
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 19
AGREGAR UNA CONSULTA A UN LISTBOX
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 20
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 21
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 22
Asignar los valores correspondientes al listbox
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 23
Consultar entre dos precios.
CREATE PROC CONSULTA3
@ls float,
@li float
AS
SELECT ProductName,UnitPrice,Categoryname,COMPANYNAME
FROM Products AS P INNER JOIN Suppliers AS S ON P.SupplierID=S.SupplierID
inner join Categories as c on P.CategoryID=c.CategoryID
WHERE UnitPrice between @ls and @li
Imports System.Data.SqlClient
Public Class consulta03
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles
Button1.Click
Dim datos As New SqlDataAdapter("consulta3", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@ls", SqlDbType.Int).Value = TextBox1.Text
datos.SelectCommand.Parameters.Add("@li", SqlDbType.Int).Value = TextBox2.Text
Dim ds As New Data.DataSet
datos.Fill(ds, "query3")
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 24
DGV3.DataSource = ds.Tables("query3")
End Sub
End Class
Consultar productos q empiecen con una determinada letra.
CREATE proc CONSULTAS4
@X NVARCHAR (40)
AS
SELECT ProductName, UnitPrice,CategoryID,SupplierID
FROM Products
WHERE ProductName LIKE @X + '%'
Imports System.Data.SqlClient
Public Class consulta04
Private Sub TextBox1_KeyPress(sender As Object, e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim datos As New SqlDataAdapter("consultas4", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 25
datos.SelectCommand.Parameters.Add("@x", SqlDbType.VarChar).Value = TextBox1.Text
Dim ds As New Data.DataSet
datos.Fill(ds, "query4")
DGV4.DataSource = ds.Tables("query4")
End Sub
End Class
Filtrar por el nombre del producto.
CREATE PROC CONSULTA5
@N INT
AS
SELECT PRODUCTNAME, UNITPRICE,UNITSINSTOCK,SUPPLIERID
FROM Products
WHERE SupplierID=@N
Imports System.Data.SqlClient
Public Class consulta05
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 26
Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As
System.EventArgs) Handles ListBox1.SelectedIndexChanged
Dim datos As New SqlDataAdapter("consulta5", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@n", SqlDbType.Int).Value =
ListBox1.SelectedValue
Dim ds As New Data.DataSet
datos.Fill(ds, "query5")
DGV5.DataSource = ds.Tables("query5")
End Sub
Private Sub consulta05_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.SuppliersTableAdapter1.Fill(Me.Northwind1DataSet2.Suppliers)
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 27
Filtrar por número de orden:
CREATE PROC CONSULTA6
@N INT
AS
SELECT O.OrderID,P.PRODUCTID,P.PRODUCTNAME,P.UNITPRICE,OD.QUANTITY
FROM [Order Details] AS OD INNER JOIN ORDERS AS O ON
O.OrderID=OD.OrderID INNER JOIN PRODUCTS AS P
ON P.ProductID=OD.ProductID
WHERE O.OrderID=@N
Imports System.Data.SqlClient
Public Class consulta06
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles
Button1.Click
Dim datos As New SqlDataAdapter("consulta6", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@n", SqlDbType.Int).Value = TextBox1.Text
Dim ds As New Data.DataSet
datos.Fill(ds, "query6")
DGV6.DataSource = ds.Tables("query6")
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 28
Con radiobutton mostrar los productos con stock o sin stock.
CREATE PROC CONSULTA7
AS
SELECT PRODUCTiD, PRODUCTNAME,UNITPRICE,UNITSINSTOCK
FROM Products
WHERE UnitsInStock=0
CREATE PROC CONSULTAS7
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 datos As New SqlDataAdapter("consultas7", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
Dim ds As New Data.DataSet
datos.Fill(ds, "query7")
DGV7.DataSource = ds.Tables("query7")
End Sub
Private Sub RadioButton2_CheckedChanged(sender As System.Object, e As
System.EventArgs) Handles RadioButton2.CheckedChanged
Dim datos As New SqlDataAdapter("consulta7", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
Dim ds As New Data.DataSet
datos.Fill(ds, "query8")
DGV7.DataSource = ds.Tables("query8")
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 29
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 30
Mostrar los productos discontinuados.
CREATE PROC CONSU8
@N INT
AS
SELECT PRODUCTID, PRODUCTNAME,UNITPRICE,DISCONTINUED
FROM Products
WHERE Discontinued=@N
Imports System.Data.SqlClient
Public Class consulta08
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles CheckBox1.CheckedChanged
Dim datos As New SqlDataAdapter("consu8", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@n", SqlDbType.Bit).Value = CheckBox1.Checked
Dim ds As New Data.DataSet
datos.Fill(ds, "query9")
DGV8.DataSource = ds.Tables("query9")
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 31
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 32
EJERCICIOS COMPLEMENTARIOS SOBRE CONSULTAS A BASE DE DATOS USANDO
VISUAL BASIC 2010
Programación Aplicada I
1.
Modo Diseño:
Consultas en SQL:
create proc TipBusComienza
@t nvarchar(40)
as
select ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname
from Products as p inner join Categories as c on c.CategoryID=p.CategoryID inner join
Suppliers as s on s.SupplierID=p.SupplierID
where ProductName like @t+ '%'
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 33
create proc TipBusTermina
@t nvarchar(40)
as
select ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname
from Products as p inner join Categories as c on c.CategoryID=p.CategoryID inner join
Suppliers as s on s.SupplierID=p.SupplierID
where ProductName like '%'+@t
create proc TipBusContiene
@t nvarchar(40)
as
select ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname
from Products as p inner join Categories as c on c.CategoryID=p.CategoryID inner join
Suppliers as s on s.SupplierID=p.SupplierID
where ProductName like '%'+@t+'%'
create proc TipBusNoContiene
@t nvarchar(40)
as
select ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname
from Products as p inner join Categories as c on c.CategoryID=p.CategoryID inner join
Suppliers as s on s.SupplierID=p.SupplierID
where ProductName not like '%'+@t+'%'
create proc TipBusIgualA
@t nvarchar(40)
as
select ProductId, ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname
from Products as p inner join Categories as c on c.CategoryID=p.CategoryID inner join
Suppliers as s on s.SupplierID=p.SupplierID
where ProductName =@t
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 34
Código:
Imports System.Data.SqlClient Public Class Form1 Dim var1, var2, var3 As String Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Chr(13) Then Select Case (ListBox1.SelectedIndex) Case 0 var1 = "TipBusComienza" Case 1 var1 = "TipBusTermina" Case 2 var1 = "TipBusContiene" Case 3 var1 = "TipBusNoContiene" Case 4 var1 = "TipBusIgualA" End Select If ListBox1.SelectedIndex Then TextBox1.Focus() End If TextBox1.Focus() Dim conex As New SqlConnection("server=.;database=Northwind;trusted_connection=true") Dim datos As New SqlDataAdapter(var1, conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure '*** datos.SelectCommand.Parameters.Add("@t", SqlDbType.NVarChar, 40).Value = TextBox1.Text datos.Fill(ds, "Query1") DGV.DataSource = ds.Tables("Query1") TextBox1.Text = "" TextBox1.Focus() End If End Sub End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 35
Pantallas:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 36
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 37
Modo Diseño:
Consultas en SQL:
create proc selec1
as
select ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued
from Products
where UnitsinStock!=0
create proc selec2
as
select ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued
from Products
where Discontinued=0
create proc selec3
@cat int
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 38
as
select ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued
from Products
where CategoryID=@cat
create proc selec4
as
select ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued
from Products
Código:
Imports System.Data.SqlClient Public Class Form2 Dim var1, var2 As String 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") If RadioButton1.Checked = True Then var1 = "selec1" Dim datos2 As New SqlDataAdapter(var1, conex) Dim ds2 As New Data.DataSet datos2.SelectCommand.CommandType = CommandType.StoredProcedure '*** datos2.Fill(ds2, "Query1") DGV.DataSource = ds2.Tables("Query1") ElseIf RadioButton2.Checked = True Then var1 = "selec2" Dim datos As New SqlDataAdapter("selec2", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure '*** datos.Fill(ds, "Query2") DGV.DataSource = ds.Tables("Query2") ElseIf RadioButton3.Checked = True Then var1 = "selec3" Dim datos1 As New SqlDataAdapter(var1, conex) Dim ds1 As New Data.DataSet datos1.SelectCommand.CommandType = CommandType.StoredProcedure '*** datos1.SelectCommand.Parameters.Add("@cat", SqlDbType.NVarChar, 40).Value = TextBox1.Text datos1.Fill(ds1, "Query3") DGV.DataSource = ds1.Tables("Query3") ElseIf RadioButton4.Checked = True Then var1 = "selec4" Dim datos As New SqlDataAdapter(var1, conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure '*** datos.Fill(ds, "Query4") DGV.DataSource = ds.Tables("Query4") End If End Sub End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 39
Pantallas:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 40
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 41
2.
Modo Diseño:
Consultas en SQL:
create proc selec1
as
select ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued
from Products
where UnitsinStock!=0
create proc selec2
as
select ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued
from Products
where Discontinued=0
create proc selec3
@cat int
as
select ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued
from Products
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 42
where CategoryID=@cat
create proc selec4
as
select ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued
from Products
Código:
Imports System.Data.SqlClient Public Class Form3 Dim var1 As String Private Sub RadioButton1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton3.CheckedChanged, RadioButton2.CheckedChanged, RadioButton1.CheckedChanged, RadioButton4.CheckedChanged Dim conex As New SqlConnection("server=.;database=Northwind;trusted_connection=true") If RadioButton1.Checked = True Then var1 = "selec1" Dim datos2 As New SqlDataAdapter(var1, conex) Dim ds2 As New Data.DataSet datos2.SelectCommand.CommandType = CommandType.StoredProcedure '*** datos2.Fill(ds2, "Query1") DGV.DataSource = ds2.Tables("Query1") ElseIf RadioButton2.Checked = True Then var1 = "selec2" Dim datos As New SqlDataAdapter("selec2", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure '*** datos.Fill(ds, "Query2") DGV.DataSource = ds.Tables("Query2") ElseIf RadioButton3.Checked = True Then If RadioButton3.Checked Then TextBox1.Enabled = True Else TextBox1.Enabled = False End If TextBox1.Focus() ElseIf RadioButton4.Checked = True Then var1 = "selec4" Dim datos As New SqlDataAdapter(var1, conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure '*** datos.Fill(ds, "Query4") DGV.DataSource = ds.Tables("Query4") End If End Sub Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Chr(13) Then TextBox1.Focus() Dim conex As New SqlConnection("server=.;database=Northwind;trusted_connection=true") Dim datos As New SqlDataAdapter("selec3", conex) Dim ds As New Data.DataSet datos.SelectCommand.CommandType = CommandType.StoredProcedure '*** datos.SelectCommand.Parameters.Add("@cat", SqlDbType.NVarChar, 40).Value = TextBox1.Text datos.Fill(ds, "Query3") DGV.DataSource = ds.Tables("Query3") TextBox1.Text = "" TextBox1.Focus() End If End Sub End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 43
Pantallas:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 44
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 45
3.
Modo Diseño:
Código:
Consulta SQL:
create proc ejercicio4
@fecha datetime
as
select o.OrderId, (OrderDate), ProductName, p.UnitPrice , Quantity
Imports System.Data.SqlClient Public Class Form4 Private Sub MonthCalendar1_DateChanged(sender As System.Object, e As System.Windows.Forms.DateRangeEventArgs) Handles MonthCalendar1.DateChanged TextBox1.Text = MonthCalendar1.SelectionStart Dim traerdatos As New SqlDataAdapter("ejercicio4", conex2) traerdatos.SelectCommand.CommandType = CommandType.StoredProcedure traerdatos.SelectCommand.Parameters.Add("@fecha", SqlDbType.DateTime).Value = MonthCalendar1.SelectionStart 'fill = es abre la conexion, ejecuta la consulta Dim contenedordatos As New Data.DataSet traerdatos.Fill(contenedordatos, "con categoria") DataGridView1.DataSource = contenedordatos.Tables("con categoria") End Sub Private Sub Form4_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load TextBox1.Enabled = False End Sub End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 46
from Products as p
inner join [Order Details] as od on od.ProductID =p.ProductID
inner join Orders as o on o.OrderID =od.OrderID
where @fecha=OrderDate
Pantallas:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 47
EJERCICIOS
1.
Categorías
categoriId categorYname Descripción
create proc categorias
as
select CategoryID,CategoryName,Description
from Categories
Productos
productoid
productname unitprice categoriId
create proc productos
@cat int
as
select ProductID,ProductName,UnitPrice,CategoryID
from (Products)
where CategoryID=@cat
Imports System.Data.SqlClient
Public Class consulta13
Private Sub consulta13_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
'TODO: This line of code loads data into the 'Northwind1DataSet.Categories' table. You
can move, or remove it, as needed.
Me.CategoriesTableAdapter1.Fill(Me.Northwind1DataSet.Categories)
End Sub
Dim conex As New SqlConnection("Data Source=MIK3\io;Initial
Catalog=Northwind1;Integrated Security=True")
Private Sub DGVCAB_CellEnter(sender As Object, e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DGVCAB.CellEnter
Dim detalle As New SqlDataAdapter("select ProductID ,ProductName ,UnitPrice
,CategoryID from Products where CategoryID =@cate", conex)
Dim DB As New Data.DataSet
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 48
detalle.SelectCommand.Parameters.Add("@cate", SqlDbType.Int).Value =
DGVCAB.Rows(e.RowIndex).Cells(0).Value
detalle.Fill(DB, "detalle")
DGVDET.DataSource = DB.Tables("detalle")
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 49
1.
ORDERS
ORDERID ORDERDATE FREIGHT
create proc ord
as
SELECT OrderID, OrderDate,Freight
FROM Orders
ORDERDETAILS
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 50
ORDERID
DISCOUNT PRODUCTID PRODUCTNAME
UNITPRICE
QUANTITI
create proc ordet
@n int
as
SELECT OrderID,Discount,P.ProductID,ProductnAME,P.UnitPrice
FROM [Order Details] OD INNER JOIN Products P ON P.ProductID=OD.ProductID
where OrderID=@n
Imports System.Data.SqlClient
Public Class CONSULTA14
Private Sub CONSULTA14_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim datos As New SqlDataAdapter("ord", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
Dim ds As New Data.DataSet
datos.Fill(ds, "consulta14")
DataGridView1.DataSource = ds.Tables("consulta14")
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("ordet", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@n", SqlDbType.Int).Value =
DataGridView1.Rows(e.RowIndex).Cells(0).Value
Dim ds As New Data.DataSet
datos.Fill(ds, "consulta141")
DataGridView2.DataSource = ds.Tables("consulta141")
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 51
2.
MOSTRAR LA FOTO DEL EMPLEADO SELECCIONADO
Me.EmployeesTableAdapter.Fill(Me.Northwind1DataSet3.Employees)
Imports System.Data.SqlClient
Public Class consulta15
Dim n As Integer
EMPLEADOID FIRSTNAME LASTNAME
ADRESS CITY COUNTRY
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 52
Dim conex As New SqlConnection("Data Source=MIK3\io;Initial
Catalog=Northwind1;Integrated Security=True")
Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
n = DataGridView1.Rows(e.RowIndex).Cells(0).Value
PictureBox1.Image = Image.FromFile(CStr(n) + ".jpg")
End Sub
Private Sub consulta15_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Me.EmployeesTableAdapter.Fill(Me.Northwind1DataSet3.Employees)
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 53
3.
EMPLEADOS
EMPLOYEEID LASTNAME FIRSTNAME
Me.EmployeesTableAdapter.Fill(Me.Northwind1DataSet.Employees)
ÓRDENES REALIZADAS POR: (Nombe completo del empleado)
OrderID OrderDate EmployeeId
CREATE proc ordxemp
@e int
as
select orderid,orderdate, employeeid
from orders
where employeeid=@e
Productos Comprados en la orden: (OrderId)
OrderId ProductID Productname UnitPrice quantity
CREATE PROC CON3
@O INT
AS
SELECT O.ORDERID, P.ProductID, PRODUCTNAME, P.UNITPRICE,QUANTITY
FROM PRODUCTS P INNER JOIN [ORDER DETAILS] OD ON OD.PRODUCTID=P.ProductID
INNER JOIN ORDERS O ON O.ORDERID=OD.ORDERID
WHERE O.ORDERID=@O
Imports System.Data.SqlClient
Public Class Form3
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 54
Me.EmployeesTableAdapter.Fill(Me.Northwind1DataSet.Employees)
End Sub
Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
Dim datos As New SqlDataAdapter("ordxemp", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@e", SqlDbType.Int).Value =
DataGridView1.Rows(e.RowIndex).Cells(0).Value
Dim ds As New Data.DataSet
datos.Fill(ds, "consulta141")
DataGridView2.DataSource = ds.Tables("consulta141")
Label2.Text = DataGridView1.Rows(e.RowIndex).Cells(1).Value + " " +
DataGridView1.Rows(e.RowIndex).Cells(2).Value
End Sub
Private Sub DataGridView2_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView2.CellClick
Dim datos As New SqlDataAdapter("CON3", conex)
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@O", SqlDbType.Int).Value =
DataGridView2.Rows(e.RowIndex).Cells(0).Value
Dim ds As New Data.DataSet
datos.Fill(ds, "consulta141")
DataGridView3.DataSource = ds.Tables("consulta141")
Label4.Text = DataGridView2.Rows(e.RowIndex).Cells(0).Value
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 55
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 56
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 57
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 58
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 59
INSERTAR EN UNA TABLA DE UBA BASE DE DATOS DESDE VISUAL BASIC
EN ESTA OPORTUNIDAD PRIMERO CREAREMOS UNA TABLA “PERSONA”
CON LOS SIGUIENTES CAMPOS:
CREAMOS EL PROCEDIMIENTO ALMACENADO QUE NOS PERMITIRÁ INSERTAR
UNA NUEVA PERSONA
CREATE PROC INSERTAR_PERSO
@ID CHAR (8),
@N VARCHAR(30),
@A VARCHAR(40),
@E VARCHAR(50),
@G CHAR(1),
@EC CHAR(1),
@FN DATETIME
AS
INSERT INTO PERSONAS
VALUES (@ID,@N,@A,@E,@G,@EC,@FN)
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 60
VERIFICAMOS EJECUTANDO EL PROCEDIMIENTO ALMACENADO
INSERTAR_PERSO
EXEC INSERTAR_PERSO '47060664','KAREN JOHANA','ESTRADA
AGUILAR','[email protected]','F','S','22/10/1991'
HACEMOS LA SIGUIENTE CONSULTA PARA VERIFICAR:
SELECT *
FROM PERSONAS
OBTENIENTO EL SIGUIENTE RESULTADO:
OBJETO MaskedTextBox
CAMBIAR LA MASCARA
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 61
INSERTAR UNA PERSONA:
Imports System.Data.SqlClient
Public Class Form1
Sub limpiar_ingreso()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox6.Text = ""
MaskedTextBox1.Text = ""
TextBox1.Focus()
End Sub
Sub cargar_datos()
Dim datos As New SqlDataAdapter(" select * from Personas", conex)
Dim ds As New Data.DataSet
datos.Fill(ds, "Tabla")
DataGridView1.DataSource = ds.Tables("Tabla")
End Sub
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 62
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles
Button1.Click
Dim respuesta As Integer
Dim sexo As Char
Dim insert_per As New SqlCommand("insertar_perso", conex)
If RadioButton1.Checked = True Then
sexo = "F"
ElseIf RadioButton2.Checked = True Then
sexo = "M"
End If
insert_per.CommandType = CommandType.StoredProcedure
insert_per.Parameters.Add("@id", SqlDbType.Char, 8).Value = TextBox1.Text
insert_per.Parameters.Add("@n", SqlDbType.VarChar, 30).Value = TextBox2.Text
insert_per.Parameters.Add("@a", SqlDbType.VarChar, 40).Value = TextBox3.Text
insert_per.Parameters.Add("@e", SqlDbType.VarChar, 50).Value = TextBox4.Text
insert_per.Parameters.Add("@g", SqlDbType.Char, 1).Value = sexo
insert_per.Parameters.Add("@ec", SqlDbType.Char, 1).Value = TextBox6.Text
insert_per.Parameters.Add("@fn", SqlDbType.DateTime).Value =
CDate(MaskedTextBox1.Text)
conex.Open()
respuesta = insert_per.ExecuteNonQuery
conex.Close()
If respuesta = 1 Then
MessageBox.Show("Se grabó el registro")
limpiar_ingreso()
cargar_datos()
End If
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 63
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 64
Ahora creamos la tabla “libros”
LA TABLA EDITORIAL Y LA TABLA AUTOR
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 65
LLENAMOS LAS TABLA EDITORIALES Y AUTORES CON ALGUNOS DATOS:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 66
CREAMOS UN PROCEDIMIENTO ALMACENADO QUE NOS PERMITA INSERTAR
NUEVOS LIBROS:
use Northwind1
CREATE proc inserlibros
@t varchar(50),
@ide int,
@e varchar(50),
@a datetime,
@ida int
as
insert into Libros
(Titulo,IDEditorial,Edicion,AÑO_PUBLICACION,Autor)
values(@t,@ide,@e,@a,@ida)
Imports System.Data.SqlClient
Public Class Form2
Sub limpiar_ingreso()
TextBox1.Text = ""
TextBox2.Text = ""
MaskedTextBox1.Text = ""
TextBox1.Focus()
End Sub
Sub cargar_datos()
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 67
Dim datos As New SqlDataAdapter(" select * from Libros", conex)
Dim ds As New Data.DataSet
datos.Fill(ds, "Tabla")
DataGridView1.DataSource = ds.Tables("Tabla")
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Me.AUTORESTableAdapter.Fill(Me.Northwind1DataSet1.AUTORES)
Me.EDITORIALESTableAdapter1.Fill(Me.Northwind1DataSet.EDITORIALES)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Dim respuesta As Integer
Dim insert_per As New SqlCommand("inserlibros", conex)
insert_per.CommandType = CommandType.StoredProcedure
insert_per.Parameters.Add("@t", SqlDbType.VarChar, 50).Value = TextBox1.Text
insert_per.Parameters.Add("@ide", SqlDbType.Int).Value = ListBox1.SelectedValue
insert_per.Parameters.Add("@e", SqlDbType.VarChar, 50).Value = TextBox2.Text
insert_per.Parameters.Add("@a", SqlDbType.DateTime).Value = MaskedTextBox1.Text
insert_per.Parameters.Add("@ida", SqlDbType.Int).Value = ListBox2.SelectedValue
conex.Open()
respuesta = insert_per.ExecuteNonQuery
conex.Close()
If respuesta = 1 Then
MessageBox.Show("Se grabó el registro")
limpiar_ingreso()
cargar_datos()
End If
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 68
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 69
CONSULTAR, AGREGAR Y ELIMINAR REGISTROS EN LA TABLA CATEGORÍAS
Creamos un origen de datos, escogiendo los campos Category ID, Category Name,
Description de la tabla Categories:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 70
Arrastramos este hacia el formulario teniendo lo siguiente:
Código generado automáticamente:
Public Class Form1
Private Sub CategoriesBindingNavigatorSaveItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles CategoriesBindingNavigatorSaveItem.Click
Me.Validate()
Me.CategoriesBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Northwind1DataSet)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'TODO: This line of code loads data into the 'Northwind1DataSet.Categories' table. You
can move, or remove it, as needed.
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 71
Me.CategoriesTableAdapter.Fill(Me.Northwind1DataSet.Categories)
End Sub
End Class
Observando las categorías:
Agregando un nuevo registro:
El código se autogenera, sólo llenamos el nombre y la descripción:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 72
Damos en guardar:
Verificamos en sql:
También lo podríamos eliminar:
Guardamos:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 73
Verificamos en sql:
Con el ejercicio anterior también podemos observar los productos que pertenecen a
esa categoría cargando la información en un DataGridView:
Imports System.Data.SqlClient
Public Class Form1
Sub CargarDatos()
Dim conex As New
SqlConnection("server=MIK3\io;database=northwind1;trusted_connection=true")
Dim datos As New SqlDataAdapter("select
productname,unitprice,unitsinstock,categoryid from products where categoryid=@cate",
conex)
Dim ds As New Data.DataSet
datos.SelectCommand.Parameters.Add("@cate", SqlDbType.Int).Value =
CInt(CategoryIDTextBox.Text)
datos.Fill(ds, "Detalle")
DataGridView1.DataSource = ds.Tables("Detalle")
End Sub
Private Sub CategoriesBindingNavigatorSaveItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Me.Validate()
Me.CategoriesBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Northwind1DataSet)
End Sub
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 74
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'TODO: This line of code loads data into the 'Northwind1DataSet.Categories' table. You
can move, or remove it, as needed.
Me.CategoriesTableAdapter.Fill(Me.Northwind1DataSet.Categories)
CargarDatos()
End Sub
Private Sub CategoryIDTextBox_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles CategoryIDTextBox.TextChanged
CargarDatos()
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 75
BUSCAR LA INFORMACIÓN DE UN PRODUCTO DE UN DETERMINADO
PRODUCTID:
Imports System.Data.SqlClient
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Dim conex As New
SqlConnection("server=MIK3\io;database=northwind1;trusted_connection=true")
Dim comando As New SqlCommand("select productname, unitprice, unitsinstock,
categoryid from products where productid= @id", conex)
comando.Parameters.Add("@id", SqlDbType.Int).Value = CInt(TextBox1.Text)
Dim registro As SqlDataReader
conex.Open()
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 76
registro = comando.ExecuteReader() ' se utiliza cuando es una consulta el
executereader trae una variable y la alamcena en registro
registro.Read()
If registro.HasRows = True Then
TextBox3.Text = registro.Item(0)
TextBox5.Text = registro.Item(3)
TextBox4.Text = registro.Item(1)
TextBox2.Text = registro.Item(2)
Else
MessageBox.Show("NO HAY REGISTROS QUE MOSTRAR")
End If
registro.Close()
conex.Close()
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 77
Guardar en una lista los datos del producto de un determinado proveedor:
Imports System.Data.SqlClient
Public Class Form3
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Dim conex As New
SqlConnection("server=MIK3\io;database=northwind1;trusted_connection=true")
Dim comando As New SqlCommand("select productname, unitprice, unitsinstock,
SupplierID from products where SupplierID= @id", conex)
comando.Parameters.Add("@id", SqlDbType.Int).Value = CInt(TextBox1.Text)
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 78
Dim registro As SqlDataReader
conex.Open()
registro = comando.ExecuteReader()
registro.Read()
Do While registro.Read()
ListBox1.Items.Add(CStr(registro.Item(0)) + "-" + CStr(registro.Item(1)) + "-" +
CStr(registro.Item(2)) + "-" + CStr(registro.Item(3)))
Loop
registro.Close()
conex.Close()
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 79
CREAR IN INICIO DE SESIÓN PARA EL SISTEMA
Agregamos un nuevo elemento y escogemos Login Form:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 80
Ahora crearemos una tabla de usuarios en SQL respectivo:
LLENAMOS CON ALGUNOS DATOS:
EN VISUAL BASIC:
Imports System.Data.SqlClient
Public Class LoginForm1
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
OK.Click
Dim VALOR As Integer
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 81
Dim conex As New
SqlConnection("server=MIK3\io;database=northwind1;trusted_connection=true")
Dim QUERY As New SqlCommand("SELECT COUNT(*) FROM USUARIOS WHERE
USUARIO=@U AND CONTRASEÑA=@P", conex)
QUERY.Parameters.Add("@U", SqlDbType.VarChar, 20).Value = UsernameTextBox.Text
QUERY.Parameters.Add("@P", SqlDbType.VarChar, 20).Value = PasswordTextBox.Text
conex.Open()
VALOR = QUERY.ExecuteScalar()
conex.Close()
If VALOR = 1 Then
Form1.Show()
Me.Hide()
Me.Close()
Else
MessageBox.Show("USUARIO Y/O CONTRASEÑA INCORRECTA!!!")
MessageBox.Show("VUELVA A INGRESAR LO CORRECTO")
UsernameTextBox.Text = Space(0)
PasswordTextBox.Text = Space(0)
UsernameTextBox.Focus()
Me.Show()
End If
End Sub
Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Cancel.Click
Me.Close()
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 82
SÍ SE EJECUTA!!!!
CUANDO LA CONTRASEÑA O USUARIO ES INCORRECTO:
Cambiar contraseña desde otro formulario
Agregamos un link en el LoginForm1:
AL HACER CLIC EN EL LINK NOS LLEVA A OTRO FORMULARIO:
Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
Form4.Show()
End Sub
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 83
EN EL FORMULARIO 4:
Imports System.Data.SqlClient
Public Class Form4
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Dim conex As New
SqlConnection("server=MIK3\io;database=northwind1;trusted_connection=true")
Dim DATOS As New SqlCommand("UPDATE USUARIOS SET CONTRASEÑA=@NP
WHERE USUARIO=@U AND CONTRASEÑA=@P", conex)
If TextBox3.Text = TextBox4.Text Then
conex.Open()
DATOS.Parameters.Add("@NP", SqlDbType.VarChar, 20).Value = TextBox3.Text
DATOS.Parameters.Add("@U", SqlDbType.VarChar, 20).Value = TextBox1.Text
DATOS.Parameters.Add("@P", SqlDbType.VarChar, 20).Value = TextBox2.Text
MessageBox.Show("CAMBIO EXITOSO")
DATOS.ExecuteNonQuery()
conex.Close()
Else : MessageBox.Show("NO SE HA CAMBIADO")
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
Me.Close()
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 84
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 85
CREANDO EL SISTEMA DE ASISTENCIA DE LOS ALUMNOS DE INGENIERÍA
DE SISTEMAS A LA XII SEMANA SISTÉMICA
CREAMOS LA BASE DE DATOS SEM_SIST
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 86
Buscar un alumno o por su código o por su apellido:
create proc buscar_parti
@id varchar(10)
as
select *
from PARTICIPANTES
where IDPARTICIPANTE like @id+'%'
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 87
create proc cod
@ap varchar(20)
as
select *
from PARTICIPANTES
where APEPAT like @ap+'%'
Imports System.Data.SqlClient
Public Class Form1
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If RadioButton1.Checked = True Then
Dim datos As New SqlDataAdapter("buscar_parti", CONEX)
Dim ds As New Data.DataSet
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 88
datos.SelectCommand.CommandType = CommandType.StoredProcedure
datos.SelectCommand.Parameters.Add("@id", SqlDbType.VarChar, 10).Value =
TextBox1.Text
datos.Fill(ds, "participantes")
DataGridView1.DataSource = ds.Tables("participantes")
ElseIf RadioButton2.Checked = True Then
Dim datos1 As New SqlDataAdapter("cod", CONEX)
Dim ds1 As New Data.DataSet
datos1.SelectCommand.CommandType = CommandType.StoredProcedure
datos1.SelectCommand.Parameters.Add("@AP", SqlDbType.VarChar, 20).Value =
TextBox1.Text
datos1.Fill(ds1, "participantes2")
DataGridView1.DataSource = ds1.Tables("participantes2")
End If
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 89
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 90
MANTENIMIENTO DE INSTITUCIONES
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 91
MANTENIMIENTO DE CONFERENCIAS
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 92
NUEVO PARICIPANTE
Imports System.Data.SqlClient
Public Class Form4
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'TODO: This line of code loads data into the 'SEM_SISTDataSet3.INSTITUCIONES'
table. You can move, or remove it, as needed.
Me.INSTITUCIONESTableAdapter.Fill(Me.SEM_SISTDataSet3.INSTITUCIONES)
End Sub
Sub limpiar_ingreso()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
ComboBox1.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox1.Focus()
End Sub
Sub cargar_datos()
Dim datos As New SqlDataAdapter(" select * from PARTICIPANTES", CONEX)
Dim ds As New Data.DataSet
datos.Fill(ds, "Tabla")
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 93
DataGridView1.DataSource = ds.Tables("Tabla")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Dim respuesta As Integer
Dim sexo As Char
Dim insert_par As New SqlCommand("InsertaParticipante", CONEX)
If RadioButton1.Checked = True Then
sexo = "1"
ElseIf RadioButton2.Checked = True Then
sexo = "2"
End If
insert_par.CommandType = CommandType.StoredProcedure
insert_par.Parameters.Add("@id", SqlDbType.Char, 10).Value = TextBox1.Text
insert_par.Parameters.Add("@ap", SqlDbType.VarChar, 20).Value = TextBox2.Text
insert_par.Parameters.Add("@am", SqlDbType.VarChar, 40).Value = TextBox3.Text
insert_par.Parameters.Add("@n", SqlDbType.VarChar, 50).Value = TextBox4.Text
insert_par.Parameters.Add("@s", SqlDbType.Char, 1).Value = sexo
insert_par.Parameters.Add("@e", SqlDbType.VarChar, 45).Value = TextBox5.Text
insert_par.Parameters.Add("@i", SqlDbType.Int).Value = ComboBox1.SelectedValue
CONEX.Open()
respuesta = insert_par.ExecuteNonQuery
CONEX.Close()
If respuesta = 1 Then
MessageBox.Show("Se grabó el registro")
limpiar_ingreso()
cargar_datos()
End If
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 94
REPORTING SERVICE
AGREGAMOS UN NUEVO ELEMENTO (UN REPORTE):
ACEPTAMOS Y CREAMOS UN REPORTE:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 95
EN EL FORMULARIO ESCOGEMOS EL OBJETO REPORTVIEWER
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 96
EJECUTAMOS
REPORTE DE VENTA DE TRUCHAS:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 97
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 98
Ventas por los empleados de cada año:
Órdenes por empleados en los meses:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 99
Productos:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 100
Public Class Form5
Private Sub Form5_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.CategoriesTableAdapter.Fill(Me.NorthwindDataSet6.Categories)
ComboBox1.Text = Space(0)
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Me.CATEGORIASTableAdapter.Fill(Me.NorthwindDataSet5.CATEGORIAS)
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 101
Me.REPORTESTableAdapter.Fill(Me.NorthwindDataSet4.REPORTES,
ComboBox1.SelectedValue)
Me.ReportViewer1.RefreshReport()
End Sub
End Class
Libros con páginas
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 102
Clientes
Public Class Form7
Private Sub Form7_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet8.Suppliers'
Puede moverla o quitarla según sea necesario.
Me.SuppliersTableAdapter.Fill(Me.NorthwindDataSet8.Suppliers)
'TODO: esta línea de código carga datos en la tabla 'NorthwindDataSet7.Customers'
Puede moverla o quitarla según sea necesario.
Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet7.Customers)
Me.ReportViewer1.RefreshReport()
Me.ReportViewer2.RefreshReport()
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 103
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 104
Ver empleado y Órdenes que ha realizado
Reporte:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 105
Imports System.Data.SqlClient
Public Class Form1
Private Sub EmployeesBindingNavigatorSaveItem_Click(sender As System.Object, e As
System.EventArgs) Handles EmployeesBindingNavigatorSaveItem.Click
Me.Validate()
Me.EmployeesBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.NorthwindDataSet)
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.EmployeesTableAdapter.Fill(Me.NorthwindDataSet.Employees)
End Sub
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 106
Private Sub EmployeeIDTextBox_TextChanged(sender As System.Object, e As
System.EventArgs) Handles EmployeeIDTextBox.TextChanged
Dim conex As New
SqlConnection("server=.;database=Northwind;trusted_connection=true")
Dim DATOS As New SqlDataAdapter("detalle_orden", conex)
Dim ds As New Data.DataSet
DATOS.SelectCommand.CommandType = CommandType.StoredProcedure '***
DATOS.SelectCommand.Parameters.Add("@e", SqlDbType.Int).Value =
EmployeeIDTextBox.Text
DATOS.Fill(ds, "empleado")
DataGridView1.DataSource = ds.Tables("empleado")
End Sub
End Class
Reporte seleccionar un año:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 107
Public Class Form2
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.ANIOTableAdapter.Fill(Me.NorthwindDataSet2.ANIO)
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Me.producvendiTableAdapter.Fill(Me.NorthwindDataSet4.producvendi,
ComboBox1.SelectedValue)
Me.ReportViewer1.RefreshReport()
End Sub
End Class
Seleccionando el cliente:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 108
Public Class Form3
Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.MONTOSTableAdapter.Fill(Me.NorthwindDataSet9.MONTOS)
Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet5.Customers)
Me.ReportViewer1.RefreshReport()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Me.CLIENTESTableAdapter.Fill(Me.NorthwindDataSet7.CLIENTES,
CChar(ComboBox1.SelectedValue))
Me.ReportViewer1.RefreshReport()
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 109
Hacer un gráfico de número de productos filtrado por categoría:
Public Class Form4
Private Sub Form4_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.MONTOSTableAdapter.Fill(Me.NorthwindDataSet9.MONTOS)
Me.ReportViewer1.RefreshReport()
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 110
Reporte de los productos:
Public Class Form5
Private Sub Form5_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.PCTableAdapter1.Fill(Me.NorthwindDataSet11.PC)
Me.PCTableAdapter.Fill(Me.NorthwindDataSet10.PC)
Me.ReportViewer1.RefreshReport()
End Sub
End Class
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 111
Pasar un parámetro de clientete
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 112
Public Class Form6
Private Sub Form6_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet13.Customers)
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Me.CLIENTITableAdapter.Fill(Me.NorthwindDataSet14.CLIENTI,
ComboBox1.SelectedValue)
Me.ReportViewer1.RefreshReport()
End Sub
End Class
Hacer un formulario donde se muestren las conferencias, los participantes, asistentes
y un gráfico:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 113
Reporte1:
Reporte2:
Reporte3:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 114
Reporte4:
Código:
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.ASISXCTableAdapter.Fill(Me.Asistencia_Semana_SistémicaDataSet5.ASISXC)
Me.CONFERENCIASTableAdapter1.Fill(Me.Asistencia_Semana_SistémicaDataSet3.CONFERE
NCIAS)
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 115
Me.CONFERENCIASTableAdapter.Fill(Me.Asistencia_Semana_SistémicaDataSet1.CONFERE
NCIAS)
Me.PARTICIPANTESTableAdapter.Fill(Me.Asistencia_Semana_SistémicaDataSet.PARTICIPA
NTES)
Me.ReportViewer1.RefreshReport()
Me.ReportViewer2.RefreshReport()
Me.ReportViewer4.RefreshReport()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Me.ASISTableAdapter.Fill(Me.Asistencia_Semana_SistémicaDataSet2.ASIS,
ComboBox1.SelectedValue)
Me.ReportViewer3.RefreshReport()
End Sub
End Class
Una consulta que nos lleve a otro formulario:
o Formulario 1:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 116
Imports System.Data.SqlClient
Public Class Form2
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.ProductsTableAdapter.Fill(Me.NorthwindDataSet.Products)
End Sub
Private Sub DataGridView1_CellContentDoubleClick(sender As Object, e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
DataGridView1.CellContentDoubleClick
Dim detalle As New SqlDataAdapter("SELECT OD.OrderID, OD.UnitPrice, OD.Quantity,
P.ProductName FROM [Order Details] OD INNER JOIN Products P ON OD.ProductID =
P.ProductID WHERE P.ProductNAME=@P", conex)
Dim DB As New Data.DataSet
detalle.SelectCommand.Parameters.Add("@P", SqlDbType.NVarChar, 40).Value =
DataGridView1.Rows(e.RowIndex).Cells(1).Value
detalle.Fill(DB, "detalle")
Form3.DataGridView1.DataSource = DB.Tables("detalle")
Form3.Show()
End Sub
End Class
o Formulario2:
Manual de Visual Basic Parte II 2012
Estrada Aguilar, Karen Johana | PROGRAMACIÓN APLICADA I 117
Imports System.Data.SqlClient
Public Class Form2
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles
MyBase.Load
Me.ProductsTableAdapter.Fill(Me.NorthwindDataSet.Products)
End Sub
Private Sub DataGridView1_CellContentDoubleClick(sender As Object, e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
DataGridView1.CellContentDoubleClick
Dim detalle As New SqlDataAdapter("SELECT OD.OrderID, OD.UnitPrice, OD.Quantity,
P.ProductName FROM [Order Details] OD INNER JOIN Products P ON OD.ProductID =
P.ProductID WHERE P.ProductNAME=@P", conex)
Dim DB As New Data.DataSet
detalle.SelectCommand.Parameters.Add("@P", SqlDbType.NVarChar, 40).Value =
DataGridView1.Rows(e.RowIndex).Cells(1).Value
detalle.Fill(DB, "detalle")
Form3.DataGridView1.DataSource = DB.Tables("detalle")
Form3.Show()
End Sub
End Class