Sei sulla pagina 1di 4

PROGRAMACIN CIENTFICA II

ING. OSCAR OMAR PINEDA


EJEMPLO DEL CDIGO PARA LLENAR UN DATAGRIDVIEW CON PROCEDIMIENTOS ALMACENADOS.
Instrucciones: Para realizar ste ejemplo se va a utilizar la base de datos de ejemplo Neptuno.
Paso 1: Cree el procedimiento almacenado en la base de datos Neptuno, que nos devolver los
datos de los pedidos que se realizaron para x Pas.
La consulta va a proyectar los siguientes atributos: Id del Pedido, Nombre del Contacto del cliente,
Fecha del pedido, Fecha Envo, Descripcin de la forma de envo (1. Terrestre 2. Maritimo 3. Aerea),
como no existe este tipo de descripcin, hay que agregar ese atributo en la consulta, y el cargo.
Create procedure Sp_MostrarPedidosXPais
@PaisDestinatario nvarchar(15)
as
BEGIN
set nocount on
Select p.IdPedido, c.NombreContacto, p.FechaPedido, p.FechaEnvo,
'DescripcionEnvio' = (case
when p.FormaEnvo = 1 then 'Terrestre'
when p.FormaEnvo = 2 then 'Martima'
when p.FormaEnvo = 3 then 'Aerea'
end), Cargo
From Pedidos p inner join clientes c
on p.IdCliente = c.IdCliente
Where PasDestinatario = @PaisDestinatario
END

Tambin necesitamos crear un procedimiento almacenado para poblar de datos un ComboBox que
nos muestre los pases para as poderlo seleccionar y nos realice el filtro de los pedidos por ese pas.
Algo bien importante a tomar en cuenta, es que no existe una relacin dbil que cumpla la funcin
de catlogo de pases por ende los tenemos que obtener de la misma relacin de pedido, para ello
tendremos que aplicar un distinct.
Create procedure Sp_PaisDestinatario
as
BEGIN
set nocount on
select distinct PasDestinatario
from pedidos
order by PasDestinatario
END

Paso 2: Ahora agreguemos un nuevo proyecto, y agregamos los controles necesarios al formulario.

Control Label:
Name: LblPais
Text: nothing

Control ComboBox:
Name: CboPais

Control DataGridView:
Name: DgvDatos

Control Button:
Name: BtnBuscar
Text: Buscar

Paso 3: Ahora agregamos el mdulo para la conexin a la base de datos Neptuno, le escribimos
Conexin como nombre y le agregamos el siguiente cdigo, que representa la cadena de conexin
a la base de datos.
Imports System.Data
Imports System.Data.SqlClient
Module Conexion
Public con As New SqlConnection("Data Source=.\sqlexpress;Initial
Catalog=Neptuno;Integrated Security=True")
End Module

Paso 4: Una vez obtenida la cadena de conexin de la base de datos, procedemos a la


creacin del subprocedimiento que va a poblar de datos el ComboBox Pas.
Private Sub LlenarComboPais()
If con.State = ConnectionState.Open Then
con.Close()
End If
Try
con.Open()
'Llenar combobox utilizando codificacin
Dim DS As New DataSet
Dim da As New SqlDataAdapter("Sp_PaisDestinatario", con)

da.Fill(DS, "Pais")
Me.CboPais.DataSource = DS.Tables(0)
Me.CboPais.DisplayMember =
DS.Tables(0).Columns("PasDestinatario").ToString
Me.CboPais.Text = "Seleccione"
con.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub

Paso 5: Codificar el evento load del formulario, para que cuando cargue, llame al subprocedimiento
LlenarComboCategoria.
Private Sub FrmCategoria_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Call LlenarComboPais()
End Sub
Una vez realizado todo este proceso, el programa tiene que mostrar lo siguiente:

Paso 6: Ahora procederemos a crear el subprocedimiento para la bsqueda.


Private Sub LlenarDataGrid()
If con.State = ConnectionState.Open Then
con.Close()
End If
Try
con.Open()
Dim da As New SqlDataAdapter
Dim cmd As New SqlCommand("Sp_MostrarPedidosXPais", con)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@PaisDestinatario", SqlDbType.NVarChar, 15).Value =
Me.CboPais.Text
da.SelectCommand = cmd

Dim DS As New DataSet


da.Fill(DS, "MostrarPaises")
Me.DgvPaises.DataSource = DS.Tables(0)
Me.LblPais.Text = Me.CboPais.Text
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub

Paso 7: El procedimiento creado anteriormente lo llamamos en el evento click del botn buscar.
Private Sub BtnBuscar_Click(sender As Object, e As EventArgs) Handles
BtnBuscar.Click
Call LlenarDataGrid()
End Sub

Y con esto quedara listo. Ahora lo probamos.

xitos. Que Dios les bendiga.

Potrebbero piacerti anche