Sunteți pe pagina 1din 18

Si2007A\ Cap 6 Programa de base datos

- 1-

BASE DE DATOS
PROGRAMA N 033 Este programa permite mostrar un listado de una tabla llamada
personal creada en SQL Server Dentro de una base de datos llamada Comercio
Este programa sirve de ejemplo para acceder a bases de datos creados en SQL Server
utilizando el objeto DataSet . Estructura de la tala personal

Como puede observarse , la clave de esta tabla es el campo IdPersonal definido de tipo Int
y esta considerado como identidad para que el ID se genere en forma automtica por
cada nuevo registro
El campo Area almacena el nombre del rea de empresa donde trabaja cada personal
como por ejemplo contabilidad , logstica, Abastecimientos, etc.
El campo FechaIngreso almacena la fecha en la cual cada persona ingres a trabajar a
la empresa.
Para que el programa pueda mostrar informacin se han ingresado algunos registros
como se muestra a continuacin

Ventana de programa del listado

Si2007A\ Cap 6 Programa de base datos

- 2-

Elaborar listado con codigo


Para desarrollar este y los siguientes programas de ejemplo . debe agregar a su
aplicacin referencias a System.Dat y System.Xml

Para esto haga clic en la opcin proyect del men principal y luego en la
subopcin Property. El Botn reference(Agregar referencia) .. permite agregar las
referencias.
Controles utilizados
Para desarrollar este programa solo necesita dibujar
(BtnMostrar y un DataGrid (DgPersonal)

un Botn de comandos

Si2007A\ Cap 6 Programa de base datos

- 3-

Si no se encuentra el DataGrid , haga clic derecho en el cuadro de herramientas


y elija choose Item (elegir elementos) en la ventana que se visualiza active la
casilla de DataGrid de system.Windows Form

En la seccin general declaration importe a System.data y System.Data.SqlClient


Imports Systems.Data
Imports Systems.Data.sqlclient

Dentro de la clase Form1 crea una constante para que almacene la cadena de
conexion a la base de datos
Const strCn As String = "Data Source = (Local);Initial Catalog =Comercio;uid=sa;pwd=."

Si2007A\ Cap 6 Programa de base datos

- 4-

Instrucciones del botn llenar


Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Const StrCN As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MATERIAL DE SIST
INFORMACION 2008A(MAYO)\ado net de castaeda\DataBases\Comercial_Data.MDF;Integrated
Security=True;Connect Timeout=30;User Instance=True"
Private Sub BtnMostrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnMostrar.Click
'Crea la conexin a la base de datos
Dim CN As New SqlConnection(StrCN)
'Crea un Objeto DataAdapter de SQL con la instruccin SQl que necesitamos
Dim DA As New SqlDataAdapter("Select * From empleados", CN)
'Crea el objeto DataSet para que almacene los registros obtenidos
Dim DS As New DataSet
'Llena el DataSet
DA.Fill(DS)
'Muestra los registo en el DataGrid
DgPersonal.DataSource = DS.Tables(0)
End Sub
End Class

PROGRAMA N34
Este programa Tambin muestra un listado de la tabla Personal (Empleado). Pero
utilizando un objeto DataReader para acceder a los datos y un control ListView(Lv
Personal para visualizarlos.
Intrucciones del programa

Si2007A\ Cap 6 Programa de base datos

- 5-

En la Seccin General Declarations importe a systems.dta y system.Data.SqlClient


Para ese programa se ha creado un procedimietno llamado Titulo que permite asignar un
formato a LIst View

Codigo
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Const StrCN As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MATERIAL DE SIST
INFORMACION 2008A(MAYO)\ado net de castaeda\DataBases\Comercial_Data.MDF;Integrated
Security=True;Connect Timeout=30;User Instance=True"
Sub Titulo()
LvPersonal.Clear()
'Asigna el formato inicial al control ListView
LvPersonal.View = View.Details
LvPersonal.GridLines = True
LvPersonal.FullRowSelect = True
LvPersonal.Columns.Add("Codigo", 30, HorizontalAlignment.Center)
LvPersonal.Columns.Add("Nombre", 130, HorizontalAlignment.Left)
LvPersonal.Columns.Add("Sexo", 40, HorizontalAlignment.Center)
LvPersonal.Columns.Add("CodActividad", 90, HorizontalAlignment.Left)
LvPersonal.Columns.Add("FecIngreso", 70, HorizontalAlignment.Center)
LvPersonal.Columns.Add("RemunPersonal", 70, HorizontalAlignment.Right)
End Sub

Si2007A\ Cap 6 Programa de base datos

- 6-

Private Sub Mostrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Mostrar.Click
Dim CN As New SqlConnection(StrCN)
REM Dim CMD As New SqlCommand("Select *IdPersonal,Nombre,Sexo,Area,FecIngreso,Sueldo From
Personal", CN)
Dim CMD As New SqlCommand("Select Codigo, Nombre,Sexo,CodActividad,FecIngreso,
RemunPersonal From empleados", CN)
Dim DR As SqlDataReader
Dim Personal As ListViewItem
Titulo()
CMD.Connection.Open()
DR = CMD.ExecuteReader
While DR.Read
Personal = New ListViewItem(DR("Codigo").ToString, 0)
Personal.SubItems.Add(DR("Nombre"))
Personal.SubItems.Add(DR("Sexo"))
Personal.SubItems.Add(DR("CodActividad"))
Personal.SubItems.Add(DR("FecIngreso"))
Personal.SubItems.Add(DR("RemunPersonal").ToString)
LvPersonal.Items.Add(Personal)
End While
End Sub
End Class

PRRIGRMA n 35
Este programa muestra un listado del personal por su area de trabajo utilizando un
control TreeView y un Control ListaView
El programa lea las reas donde trbaja el personal y los muestra en forma automtica en
el control TreeView y cuando se hace clic en una ea de muestra todo el personal que
trabajo en esa rea utilizando el control LIstView y ordenados por su nombre : En esta
ventana de ejemplo se muestra todo el personal que trabaja en el res de personal
Para este programa , slo dibuje dos Labels para los ttulos ,un control TreeView Llamado
TvPerosnal y un control ListView llamdo LvPerosnal

Si2007A\ Cap 6 Programa de base datos

- 7-

Instrucciones Iniciales
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Const StrCN As String = "Data Source=(Local);Initial Catalog=Comercio;uid=sa;pwd=."
Creacin de function Titulo
Sub Titulo()
LvPersonal.Clear()
'Asigna el formato inicial al control ListView
LvPersonal.View = View.Details
LvPersonal.GridLines = True
LvPersonal.FullRowSelect = True
LvPersonal.Columns.Add("Id", 30, HorizontalAlignment.Center)
LvPersonal.Columns.Add("Nombre", 130, HorizontalAlignment.Left)
LvPersonal.Columns.Add("Sexo", 40, HorizontalAlignment.Center)
'LvPersonal.Columns.Add("Area", 90, HorizontalAlignment.Left)
LvPersonal.Columns.Add("FecIngreso", 70, HorizontalAlignment.Center)
LvPersonal.Columns.Add("Sueldo", 70, HorizontalAlignment.Right)
End Sub
Intrucciones del Evento Load del Formulario
'Crea la conexin

Si2007A\ Cap 6 Programa de base datos

- 8-

Dim CN As New SqlConnection(StrCN)


'Crea un objeto SQLCommand con slo uno de cada grupo de
'nombres de las areas.
Dim CMD As New SqlCommand("Select Distinct Area From Personal", CN)
Dim DR As SqlDataReader
Titulo()
'Llena el TreeView con los nombres de las areas encontradas.
TvPersonal.Nodes.Clear()
Dim Padre As TreeNode
With CMD
.Connection.Open()
DR = .ExecuteReader
While DR.Read
Padre = New TreeNode(DR("Area"))
TvPersonal.Nodes.Add(Padre)
End While
.Connection.Close()
End With
Instrucciones el AfterSelect del ListView
Private Sub TcPersonal_AfterSelect(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.TreeViewEventArgs) Handles TvPersonal.AfterSelect
Dim Area As String
'Almacena el Area seleccionada del TreeView
Area = TvPersonal.SelectedNode.Text
Dim CN As New SqlConnection(StrCN)
'Selecciona slo el personal del area
REM Dim CMD As New SqlCommand("Select IdPersonal,Nombre,Sexo,FechaIngreso,Sueldo From
Personal Where Area='" & Area & "' Order By Nombre", CN)
Dim CMD As New SqlCommand("Select * From Personal ", CN)
Dim DR As SqlDataReader
Dim Personal As ListViewItem
Titulo()
LblArea.Text = "Personal del Area: " & Area
'Muestra los datos del personal en el control ListView
With CMD
.Connection.Open()
DR = .ExecuteReader

Si2007A\ Cap 6 Programa de base datos

- 9-

While DR.Read
Personal = New ListViewItem(DR("IdPersonal").ToString, 0)
Personal.SubItems.Add(DR("Nombre"))
Personal.SubItems.Add(DR("Sexo"))
Personal.SubItems.Add(DR("FechaIngreso"))
Personal.SubItems.Add(DR("Sueldo").ToString)
LvPersonal.Items.Add(Personal)
End While
.Connection.Close()
End With
End Sub

PROGRAMA Nro 036


Este porgrma muestra un listado del personal por su area de trabajo osexo omes que
ingreso a trabajar :como en el caso anterior , el Control TreeView se llena en forma
automatica con las reas , sexo y slo los mese de ingreso del persona l que se
encuentran en la tablas

Controles untilizdos
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Const StrCN As String = "Data Source=(Local);Initial Catalog=Comercio;uid=sa;pwd=."
Dim CN As New SqlConnection(StrCN)
Dim Condicion As String

Procedimiento Titulo
Este procedimiento asigna el formato de visualizavin de los registros en el control
ListView Asignandolo Titulos , ancho y alineacin de los campos

Si2007A\ Cap 6 Programa de base datos

- 10-

Sub Titulo()
LvPersonal.Clear()
'Asigna el formato inicial al control ListView
LvPersonal.View = View.Details
LvPersonal.GridLines = True
LvPersonal.FullRowSelect = True
LvPersonal.Columns.Add("Id", 25, HorizontalAlignment.Center)
LvPersonal.Columns.Add("Nombre", 120, HorizontalAlignment.Left)
LvPersonal.Columns.Add("Sexo", 40, HorizontalAlignment.Center)
LvPersonal.Columns.Add("Area", 90, HorizontalAlignment.Left)
LvPersonal.Columns.Add("FecIngreso", 70, HorizontalAlignment.Center)
LvPersonal.Columns.Add("Sueldo", 70, HorizontalAlignment.Right)
End Sub

Procedimiento Llenar
Este procedimietno llena los resgistros en Control ListView , pero oslamente el grupo
seleccionado en el control TreeView
La ocndicin que deben cumplir los registros a visualizar se encuentrana en la variable
condicin definida a nivel de formulario
Cada vez que se llenan los registros en el control ListView se asigna el formato a ese
control llamado el procedimiento Titulo
Sub Llenar()
Dim CMD As New SqlCommand("Select IdPersonal,Nombre,Sexo,Area,FecIngreso,Sueldo From
Personal Where " & Condicion & " Order By Nombre", CN)
Dim DR As SqlDataReader
Dim Personal As ListViewItem
'Asigna el formato para el ListView
Titulo()
'Muestra los datos del personal en el control ListView
With CMD
.Connection.Open()
DR = .ExecuteReader
While DR.Read
Personal = New ListViewItem(DR("IdPersonal").ToString, 0)
Personal.SubItems.Add(DR("Nombre"))
Personal.SubItems.Add(DR("Sexo"))
Personal.SubItems.Add(DR("Area"))
Personal.SubItems.Add(DR("FecIngreso"))
Personal.SubItems.Add(DR("Sueldo").ToString)
LvPersonal.Items.Add(Personal)

Si2007A\ Cap 6 Programa de base datos

- 11-

End While
.Connection.Close()
End With
End Sub

Instrucciones del evento Load del formulario


Estas instrucciones llenan el contenido del control TreeView con las areas , sexos y
meses de ingreseo del personal, Tambien lman la procedimiento ittulo para asignar un
formato al control ListView
Dim CN As New SqlConnection(StrCN)
'Comando para almacenar slo las areas que existe
Dim CMDAreas As New SqlCommand("Select Distinct Area From Personal", CN)
'Comando para almacenar slo los meses que existen
Dim CMDMeses As New SqlCommand("Select Distinct Month(FecIngreso) As mes From Personal", CN)
Dim DR As SqlDataReader
Dim Padre As TreeNode
'Asigna el formato al ListView
Titulo()
'Limpia el TreeView
TvPersonal.Nodes.Clear()
'Agrega las Areas segun el contenido de la tabla
With CMDAreas
.Connection.Open()
DR = .ExecuteReader
Padre = New TreeNode("Area")
TvPersonal.Nodes.Add(Padre)
While DR.Read
Padre.Nodes.Add(DR("Area"))
End While
.Connection.Close()
End With
'Agrega los dos Sexos
Padre = New TreeNode("Sexo")
TvPersonal.Nodes.Add(Padre)
Padre.Nodes.Add("Femenino")
Padre.Nodes.Add("Masculino")
'Agrega los meses segun el contenido de la tabla
With CMDMeses
.Connection.Open()

Si2007A\ Cap 6 Programa de base datos

- 12-

DR = .ExecuteReader
Padre = New TreeNode("Mes")
TvPersonal.Nodes.Add(Padre)
While DR.Read
'Muestra el nombre del mes
Padre.Nodes.Add(MonthName(DR("Mes")))
'Almacena el nmero del mes en la propiedad Tag
Padre.Nodes(Padre.Nodes.Count - 1).Tag = DR("Mes")
End While
End With

Ventana Inicial del formulario gracias a las instrucciones del evento Load del
formulario

Instrucciones del After Select del LIstView


Private Sub TvPersonal_AfterSelect(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.TreeViewEventArgs) Handles TvPersonal.AfterSelect
'Pregunta si se ha seleccionado un elemento
If TvPersonal.SelectedNode.Level = 1 Then
Select Case TvPersonal.SelectedNode.Parent.Text
Case "Area" 'Si se ha seleccionado una Area
Condicion = "Area='" & TvPersonal.SelectedNode.Text & "'"
LblTitulo.Text = "Personal del Area: " & TvPersonal.SelectedNode.Text
Llenar()
Case "Sexo"
'Si se ha seleccionado un Sexo
If TvPersonal.SelectedNode.Text = "Femenino" Then
Condicion = "Sexo='F'"
Else

Si2007A\ Cap 6 Programa de base datos

- 13-

Condicion = "Sexo='M'"
End If
LblTitulo.Text = "Personal del Sexo: " & TvPersonal.SelectedNode.Text
Llenar()
Case "Mes"
'Si se ha seleccionado un Mes
'Selecciona el mes con ayuda del contenido de la propiedad Tag
Condicion = "Month(FechaIngreso)=" & TvPersonal.SelectedNode.Tag
LblTitulo.Text = "Personal que ingreso un mes de : " & TvPersonal.SelectedNode.Text
Llenar()
End Select
End If
End Sub

Programa N 037
Este prorama es similar al anterior , se diferencia porque cunado en est eprogrma se
selecciona un Area , sexo o me sde Ingreso , se meustra en e mismo ControlTreeView
los nombres del personal que pertenece al aemento seleccionado
Cunado se hace clic en el nombre de un personal
formulario

, muestra todos sus datos en el

En la siguiente ventana de ejemplo e ha seleccionado al Lopez Castilo Aurora que


pertenece al area de contabilidad

Controles Utilizadas

Si2007A\ Cap 6 Programa de base datos

- 14-

Intrucciones Iniciales
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Const StrCN As String = "Data Source=(Local);Initial Catalog=Comercio;uid=sa;pwd=."
Dim CNEmpleados As New SqlConnection(StrCN)
Dim DREmpleados As SqlDataReader
Dim Hijo As TreeNode
Dim Condicion As String

Procedimiento Llenar
Este procedimiento llena los nombres del elemento seleccionado en el control TreeView y
en la propiedad tag de cada nodo almaena el Id de cada personal para que cuadno se
haga clic en algn nombre la consulta se realice en forma rpida utilizando el Id para la
bsqueda
Sub Llenar()
'Crea un objeto Command slo con el Id y Nombre de los registros del elemento seleccionado
Dim CMDEmpleados As New SqlCommand("Select IdPersonal,Nombre From Personal Where " &
Condicion & " Order By Nombre", CNEmpleados)
CMDEmpleados.Connection.Open()
DREmpleados = CMDEmpleados.ExecuteReader
While DREmpleados.Read
'Muestra en el TreeView el Nombre del personal
Hijo.Nodes.Add(DREmpleados("Nombre"))
'Almacena el Id del Personal en la propiedad Tag
'para que la consulta sea mas rapida
Hijo.Nodes(Hijo.Nodes.Count - 1).Tag = DREmpleados("IdPersonal")
End While
CMDEmpleados.Connection.Close()
End Sub

Si2007A\ Cap 6 Programa de base datos

- 15-

Instrucciones del evento Load del formulario


Estas instrucciones llenan el contenido del control TreeView con las eas sexos y meses
del ingreso del personal y cada elemento se meustra con los nombres de su personal
Dim CN As New SqlConnection(StrCN)
'Comando para almacenar slo las areas que existe
Dim CMDAreas As New SqlCommand("Select Distinct Area From Personal", CN)
'Comando para almacenar slo los meses que existen
Dim CMDMeses As New SqlCommand("Select Distinct Month(FecIngreso) As mes
From Personal", CN)
Dim DR As SqlDataReader
Dim Padre As TreeNode
'Limpia el TreeView
TvPersonal.Nodes.Clear()
'Agrega las Areas segun el contenido de la tabla
With CMDAreas
.Connection.Open()
DR = .ExecuteReader
Padre = New TreeNode("Area")
TvPersonal.Nodes.Add(Padre)
While DR.Read
Hijo = Padre.Nodes.Add(DR("Area"))
Condicion = "Area='" & DR("Area") & "'"
'Agrega los empleados del Area
Llenar()
End While
.Connection.Close()
End With
'Agrega los dos Sexos
Padre = New TreeNode("Sexo")
TvPersonal.Nodes.Add(Padre)
Hijo = Padre.Nodes.Add("Femenino")
Condicion = "Sexo='F'"
'Agrega los empleados de Sexo Femenino
Llenar()
Hijo = Padre.Nodes.Add("Masculino")
Condicion = "Sexo='M'"
'Agrega los empleados de Sexo Masculino
Llenar()
'Agrega los meses segun el contenido de la tabla
With CMDMeses
.Connection.Open()
DR = .ExecuteReader
Padre = New TreeNode("Mes")
TvPersonal.Nodes.Add(Padre)
While DR.Read
'Muestra el nombre del mes
Hijo = Padre.Nodes.Add(MonthName(DR("Mes")))
Condicion = "Month(FecIngreso)=" & DR("Mes")
'Agrega los empleados de Sexo Masculino
Llenar()
End While
End With
End Sub

Ventana Inicial del formulario gracias a las instrucciones del evento Load del
formulario

Si2007A\ Cap 6 Programa de base datos

- 16-

Instrucciones del AfterSelect del Treview


Estas instruccioens muestran todos los datos del personal seleccionado
'Pregunta si se ha seleccionado un Personal
If TvPersonal.SelectedNode.Level = 2 Then
'Se busca el personal con el contenido de la propiedad Tag
'que contiene el Id
Condicion = "IdPersonal=" & TvPersonal.SelectedNode.Tag
Dim CMDEmpleados As New SqlCommand("Select
IdPersonal,Nombre,Sexo,Area,FecIngreso,Sueldo From Personal Where " & Condicion,
CNEmpleados)
CMDEmpleados.Connection.Open()
DREmpleados = CMDEmpleados.ExecuteReader
DREmpleados.Read()
'Muestra todos los datos del personal seleccionado
LblId.Text = DREmpleados("IdPersonal")
LblNombre.Text = DREmpleados("Nombre")
LblSexo.Text = DREmpleados("Sexo")
LblArea.Text = DREmpleados("Area")
LblIngreso.Text = DREmpleados("FecIngreso")
LblSueldo.Text = DREmpleados("Sueldo").ToString
CMDEmpleados.Connection.Close()
End If

Programa Nro 038


Este programa muestra en un control DataGrid la lista de personal segn su mes y aos
de ingreso
En este programa se utiliza un procedimiento Lamacenado Llamado Leer_Pa creado en
el Sqlserver . este procedimiento almaendao recibe ds parmetros , mes y aos de ingreso
y devueve la relacin dlpersnal que ingres en ese mes y aos

Si2007A\ Cap 6 Programa de base datos

- 17-

Los meses se seleccionan desde un control ComboBox y el aos de Ingreso en un


control Numeric UpDown

Controles Utilizados

Crear Procedimiento Almacenado


Para crear procedimietno almacendao relice los siguiente
1. En el exporador de base de datos(servidores) da clic derecho en procedimiento
alamacenado y seleccione agregar nuevo procedimietno
Create PROCEDURE Leer_pa
@Mes As SmallInt,

Si2007A\ Cap 6 Programa de base datos

- 18-

@Ao As smallInt
AS
Select IdPersonal , Nombre, Sexo ,Area, FechaIngreso, Sueldo from personal
Where Month(FechaIngreso)=@Mes And Year(FechaIngreso)=@Ao
RETURN

Instrucciones Inciales
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
REM Const StrCN As String = "Data Source=(Local);Initial Catalog=Comercio;uid=sa;pwd=."
Const StrCN As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|
DataDirectory|\PERSONAL.mdf;Integrated Security=True;User Instance=True"

Instrucciones del evento Load delformualrio


Estas instrucciones llenan el control ComboBox con os nombres de lso 12 meses del ao
y en e control Numerric Updows muestra el ao de la fecha del sistema
'Llena los meses
Dim N As Byte
For N = 1 To 12
'Muestra los meses con la primera en maysculas
CboMes.Items.Add(StrConv(MonthName(N), VbStrConv.ProperCase))
Next
'Muestra el primer mes
CboMes.SelectedIndex = 0
'Muestra el ao actual
UpAo.Value = Date.Today.Year

Instrucciones del botn BtnMostrar


Esta Intrucciones llenan el control DataGrid (DgDatos) con los datos del personal que
ingreso en el mes y aos seleccionado
En estas isntrucciones se hace uso del procedimiento almacendao llamado Lee_pa que
se ha creado en SQl Server asignndole los valores de los dos paramatreo (Mes y Ao)
y ejecutndolo
Dim CN As New SqlConnection(StrCN)
'Crea un comando con el procedimiento almacenado
Dim CMD As New SqlCommand("Leer_Pa", CN)
With CMD
.CommandType = CommandType.StoredProcedure
'Pasa los parametros al procedimiento
.Parameters.Add(New SqlParameter("@Mes", CboMes.SelectedIndex + 1))
.Parameters.Add(New SqlParameter("@Ao", UpAo.Value))
Dim DA As New SqlDataAdapter(CMD)
Dim DT As New DataTable
'Llena el DataTable
DA.Fill(DT)
'Muestra los datos en el DataGrid
DgDatos.DataSource = DT
End With

S-ar putea să vă placă și