Sei sulla pagina 1di 6

PRACTICA DE C SHARP

ACCESO A DATOS CON EL CONTROL LISTVIEW Y TREEVIEW

Este programa muestra un listado del personal por su área de trabajo utilizando un control TreeView y un
control ListView

Crear la base de datos Comercio que contiene la tabla Personal que está conformada por:
create table personal(
idpersonal int,
nombre varchar(50),
sexo char(1),
area varchar(15),
fecingreso datetime,
sueldo money)

insert into personal values(1, 'alarcon perez rosa', 'f', 'logistica','15/06/2002',1500)


insert into personal values(2, 'vasquez ruiz celeste', 'f', 'abastecimiento','12/05/1998',1800)
insert into personal values(3, 'davila cornejo julio', 'm', 'logistica', '16/12/2005', 2000)
insert into personal values(4,'lopez castillo aurora', 'f', 'contabilidad', '02/05/2002', 1300)
insert into personal values(5, 'inoñan segura maria', 'f', 'abastecimiento', '30/09/2000', 980)
insert into personal values(6, 'quispe bonilla carlos', 'm', 'logistica', '10/10/1995', 2600)
insert into personal values(7, 'guevara torres luis', 'm', 'contabilidad', '01/06/2004', 1200)
insert into personal values(8, 'tapia carrasco antonio', 'm', 'logistica', '05/08/2003', 1800)
insert into personal values(9, 'cotrina ubillus sara', 'f', 'abastecimiento', '30/04/2004', 1600)

Diseñar el siguiente formulario:

Label1 Label2

Listview:lvPersonal TreeView:tvPersonal
Control: Form1 Evento: Load
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection("data source=(local);database=comercio;integrated security =
SSPI");
SqlCommand cmd = new SqlCommand("select distinct area from personal", cn);
SqlDataReader dr;
titulo();
tvPersonal.Nodes.Clear();
TreeNode padre = new TreeNode();
cmd.Connection.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
padre = new TreeNode(dr["area"].ToString());
tvPersonal.Nodes.Add(padre);
}
cmd.Connection.Close();
}

Procedimiento Titulo
private void titulo()
{
lvPersonal.Clear();
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("Fecingreso", 70, HorizontalAlignment.Center);
lvPersonal.Columns.Add("Sueldo", 70, HorizontalAlignment.Right);
}

Control: tvPersonal Evento: AfterSelect


private void tvPersonal_AfterSelect(object sender, TreeViewEventArgs e)
{
string area;
area = tvPersonal.SelectedNode.Text;
SqlConnection cn = new SqlConnection("data source=(local);database=comercio;integrated security =
SSPI");
SqlCommand cmd = new SqlCommand("select idpersonal, nombre, sexo, fecingreso, sueldo from
personal where area = '" + area + "' order by nombre", cn);
SqlDataReader dr;
ListViewItem personal = new ListViewItem();
titulo();
label2.Text = "Personal del Area " + area;
cmd.Connection.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
personal= new ListViewItem(dr["idpersonal"].ToString());
personal.SubItems.Add(dr["Nombre"].ToString());
personal.SubItems.Add(dr["Sexo"].ToString());
personal.SubItems.Add(dr["FecIngreso"].ToString());
personal.SubItems.Add(dr["Sueldo"].ToString());
lvPersonal.Items.Add(personal);
}
cmd.Connection.Close();

Este programa muestra un listado del personal por su area de trabajo, sexo o mes que ingresó a trabajar

listView: lvPersonal treeView: tvPersonal

Variables globales
SqlConnection cn = new SqlConnection("data source=.\\sqlexpress;database=comercio;integrated security =
SSPI");
String condicion = string.Empty;

Control: Form1 Evento: Load


private void Form1_Load(object sender, EventArgs e)
{
SqlCommand cmdareas = new SqlCommand("select distinct area from personal", cn);

SqlCommand cmdmeses = new SqlCommand();


cmdmeses.CommandType = CommandType.StoredProcedure;
cmdmeses.CommandText = "meses1";
cmdmeses.Connection = cn;
SqlDataReader dr;
TreeNode padre;
tvPersonal.Nodes.Clear();
cmdareas.Connection.Open();
dr = cmdareas.ExecuteReader();
padre = new TreeNode("area");
tvPersonal.Nodes.Add(padre);
while (dr.Read())
padre.Nodes.Add(dr["area"].ToString());
cmdareas.Connection.Close();
padre = new TreeNode("sexo");
tvPersonal.Nodes.Add(padre);
padre.Nodes.Add("femenino");
padre.Nodes.Add("masculino");
cmdmeses.Connection.Open();
dr = cmdmeses.ExecuteReader();
padre = new TreeNode("mes");
tvPersonal.Nodes.Add(padre);
while (dr.Read())
{
padre.Nodes.Add(dr[0].ToString());
}
cmdmeses.Connection.Close();
}

Procedimiento Titulo
private void titulo()
{
lvPersonal.Clear();
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);
}

Procedimiento Llenar
private void llenar()
{
SqlCommand cmd = new SqlCommand("select idpersonal, nombre, sexo, area, fecingreso, sueldo from
personal where " + condicion + " order by nombre", cn);

SqlDataReader dr;
ListViewItem personal = new ListViewItem();
titulo();

cmd.Connection.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
personal = new ListViewItem(dr["idpersonal"].ToString(), 0);
personal.SubItems.Add(dr["Nombre"].ToString());
personal.SubItems.Add(dr["Sexo"].ToString());
personal.SubItems.Add(dr["Area"].ToString());
personal.SubItems.Add(dr["FecIngreso"].ToString());
personal.SubItems.Add(dr["Sueldo"].ToString());
lvPersonal.Items.Add(personal);
}
cmd.Connection.Close();
}

Control: tvPersonal Evento: AfterSelect


private void tvPersonal_AfterSelect(object sender, TreeViewEventArgs e)
{
if (tvPersonal.SelectedNode.Level == 1)
if (tvPersonal.SelectedNode.Parent.Text == "area")
{
condicion = "area='" + tvPersonal.SelectedNode.Text + "'";
label2.Text = "personal del area:" + tvPersonal.SelectedNode.Text;
llenar();
}
else if (tvPersonal.SelectedNode.Parent.Text == "sexo")
{
if (tvPersonal.SelectedNode.Text == "femenino")
condicion = "sexo='F'";
else
condicion = "sexo='M'";
label2.Text = "personal del sexo:" + tvPersonal.SelectedNode.Text;
llenar();
}
else if (tvPersonal.SelectedNode.Parent.Text == "mes")
{

SqlCommand cmdmeses = new SqlCommand();


cmdmeses.CommandType = CommandType.StoredProcedure;
cmdmeses.CommandText = "meses4";
cmdmeses.Connection = cn;
cmdmeses.Parameters.Add("@fecha1", SqlDbType.VarChar, 20);
cmdmeses.Parameters["@fecha1"].Value = tvPersonal.SelectedNode.Text;
SqlDataReader dr;
ListViewItem personal = new ListViewItem();
titulo();
cmdmeses.Connection.Open();
dr = cmdmeses.ExecuteReader();
while (dr.Read())
{
personal = new ListViewItem(dr["idpersonal"].ToString());
personal.SubItems.Add(dr["Nombre"].ToString());
personal.SubItems.Add(dr["Sexo"].ToString());
personal.SubItems.Add(dr["Area"].ToString());
personal.SubItems.Add(dr[5].ToString());
personal.SubItems.Add(dr["Sueldo"].ToString());
lvPersonal.Items.Add(personal);
}
cmdmeses.Connection.Close();
label2.Text = "personal que ingreso un mes de :" + tvPersonal.SelectedNode.Text;
}
}

Nota: Crear los siguientes procedimientos almacenados:


create procedure meses1
as select distinct datename(month,fecingreso) from personal

create procedure meses4


@fecha1 varchar(20)
as select idpersonal, nombre, sexo, area,sueldo, datename(month,fecingreso) as fecha1, sueldo from personal
where datename(month,fecingreso) = @fecha1

Potrebbero piacerti anche