Upload
roger-eduardo
View
522
Download
2
Embed Size (px)
DESCRIPTION
guia de conexion y ejercicios de base de datos Sql con visual Basic
Citation preview
[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 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()
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
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
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)
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()
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:
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()
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
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
EJERCICIO 4 (DESARROLLO DE UN MENU CON IMAGENES)
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
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
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
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
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")
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
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
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
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
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
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
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
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
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
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
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
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
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