martes, 18 de septiembre de 2012

Ejemplo de Proyecto en Visual Studio 2010 y Sql Server 2008 en tres capas (Registro de Matricula)


Dejo el link para que le den una Chekeada, vale decir de que este proyecto está para mejorar, pero puede ser una base para enternder la programación en capas, si pueden mejorarlo es bienvenido.
Ojos hay que tener instalado el Cristal Report para Visual Studio 2010, SQL server 2005 o 2008.
Descargar el proyecto de Matricula

lunes, 17 de septiembre de 2012

Aceptar Valores nullos en C# (int, datetime, decimal)


Primero tengo estructurado un proyecto en capas Entidades, Acceso a datos , logica y presentacion, la idea es tener una consulta que se muestre en una grilla y luego exportarla a txt o excel. primero defino mis proyectos y sus dependencias, acontinuación copia las clases creadas que te permiten que las listas acepten valores nulos-
Imagen
acontinacion la clase entidad matricula, ojo la clase matricula es un ejemplo mas, no se relaciona en mucho con la presentacion de la imagen anterior
Capa Entidades
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace rSunat.ReportesSunat.Entidades
{
public class Matricula
{
public int mat_Cod {get; set;}
public DateTime Fecha{get; set;}
public int Per_Cod {get; set;}
public int TipMat_Cod {get; set ;}
public int Especialidad_Cod { get; set; }
public int Ciclo_Cod {get; set;}
public int Semestre_Cod { get; set; }
public int Turno_Cod {get; set;}
//public int? Mat_tip = null;
private Nullable<Int32> _Mat_tip;
public Nullable<Int32> Mat_tip
{
get { return _Mat_tip; }
set { _Mat_tip = value; }
}
public int Mat_Condicion {get; set;}
public int Mar_Estado { get; set; }
}
}
Está es la Capa acceso a datos
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using rSunat.ReportesSunat.Entidades;
using System.Data;
using System.Data.SqlClient;
namespace rSunat.ReportesSunat.AccesoDatos
{
public class MatriculaAD
{
public List<Matricula> ListarMatricula()
{
SqlConnection conexion = new SqlConnection("Data Source=servidor ;Initial Catalog=db_matricula; User=ejemplo; Password=123654; Connect Timeout=60000");
SqlCommand comando = conexion.CreateCommand();
comando.CommandType = CommandType.StoredProcedure;
comando.CommandText = "sp_Matricula_lst2";
comando.CommandTimeout = 0;
List<Matricula> matriculas = new List<Matricula>();
try
{
conexion.Open();
SqlDataReader datos = comando.ExecuteReader(CommandBehavior.CloseConnection);
while (datos.Read())
{
Matricula oMatricula = new Matricula();
oMatricula.mat_Cod = datos.GetInt32(datos.GetOrdinal("mat_Cod"));
oMatricula.Fecha = datos.GetDateTime(datos.GetOrdinal("Fecha"));
oMatricula.Per_Cod = datos.GetInt32(datos.GetOrdinal("Per_Cod"));
oMatricula.TipMat_Cod = datos.GetInt32(datos.GetOrdinal("TipMat_Cod"));
oMatricula.Especialidad_Cod = datos.GetInt32(datos.GetOrdinal("Especialidad_Cod"));
oMatricula.Ciclo_Cod = datos.GetInt32(datos.GetOrdinal("Ciclo_Cod"));
oMatricula.Semestre_Cod = datos.GetInt32(datos.GetOrdinal("Semestre_Cod"));
oMatricula.Turno_Cod = datos.GetInt32(datos.GetOrdinal("Turno_Cod"));
//oMatricula.Mat_tip = datos.GetInt32(datos.GetOrdinal("Mat_tip"));
oMatricula.Mat_tip = !datos.IsDBNull(datos.GetOrdinal("Mat_tip")) ? datos.GetInt32(datos.GetOrdinal("Mat_tip")) : (Int32?)null;
oMatricula.Mat_Condicion = datos.GetInt32(datos.GetOrdinal("Mat_Condicion"));
oMatricula.Mar_Estado = datos.GetInt32(datos.GetOrdinal("Mar_Estado"));
matriculas.Add(oMatricula);
}
datos.Close();
}
catch (Exception e)
{
throw e;
}
finally
{
if (conexion.State == ConnectionState.Open)
conexion.Close();
conexion.Dispose();
}
return matriculas;
}
//public List<Matricula> listar()
//{
// SqlConnection conexion = new SqlConnection("Data Source=.;Initial Catalog=eDelivery; User=sa; Password=45880670");
// SqlCommand comando = conexion.CreateCommand();
// comando.CommandType = CommandType.StoredProcedure;
// comando.CommandText = "uspListarProductos";
// 0 //DataTable oDatatable = new DataTable();
// List<Matricula> matriculas = new List<Matricula>();
// try
// {
// conexion.Open();
// SqlDataReader datos = comando.ExecuteReader(CommandBehavior.CloseConnection);
// while (datos.Read())
// {
// Matricula oMatricula = new Matricula();
// oMatricula.mat_Cod = datos.GetInt32(datos.GetOrdinal("mat_Cod"));
// oMatricula.Fecha = datos.GetDateTime(datos.GetOrdinal("Fecha"));
// oMatricula.Per_Cod = datos.GetInt32(datos.GetOrdinal("Per_Cod"));
// oMatricula.TipMat_Cod = datos.GetInt32(datos.GetOrdinal("TipMat_Cod"));
// oMatricula.Especialidad_Cod = datos.GetInt32(datos.GetOrdinal("Especialidad_Cod"));
// oMatricula.Ciclo_Cod = datos.GetInt32(datos.GetOrdinal("Ciclo_Cod"));
// oMatricula.Semestre_Cod = datos.GetInt32(datos.GetOrdinal("Semestre_Cod"));
// oMatricula.Turno_Cod = datos.GetInt32(datos.GetOrdinal("Turno_Cod"));
// //oMatricula.Mat_tip = datos.GetInt32(datos.GetOrdinal("Mat_tip"));
// oMatricula.Mat_Condicion = datos.GetInt32(datos.GetOrdinal("Mat_Condicion"));
// oMatricula.Mar_Estado = datos.GetInt32(datos.GetOrdinal("Mar_Estado"));
// oDatatable.Add(oMatricula);
// }
// datos.Close();
// }
// catch (Exception e)
// {
// throw e;
// }
// finally
// {
// if (conexion.State == ConnectionState.Open)
// conexion.Close();
// conexion.Dispose();
// }
// return oDatatable;
//}
}
}
... ojo el procedimiento almacenado lista los datos de una tabla matricula que tiene valores null.
La capa logica de negocios es la siguiente
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using rSunat.ReportesSunat.AccesoDatos;
using rSunat.ReportesSunat.Entidades;
namespace rSunat.ReportesSunat.LogicadeNegocio
{
public class GestorMatricula
{
public static List<Matricula> ListarMatricula()
{
List<Matricula> oMatricula = new List<Matricula>();
try
{
MatriculaAD matriculaAD= new MatriculaAD();
oMatricula = matriculaAD.ListarMatricula();
}
catch (Exception e)
{
throw e;
}
return oMatricula;
}
}
}
y finalmente en la Capa de presentación, en el botón consultar
private void btnConsultarReporte_Click(object sender, EventArgs e)
{
//List<Matricula> tabla3 = GestorMatricula.ListarMatricula();
//this.dgReportesSunat.DataSource = tabla3;
//xActivo = true;
//Controles(xActivo);
}