Академический Документы
Профессиональный Документы
Культура Документы
Obsrvese que los ficheros de la base de datos han sido guardados en el directorio de
la aplicacin. Cuando se ejecute la aplicacin, se trabajar sobre una copia ubicada
en la carpeta donde se encuentre el fichero ejecutable. Seleccione el apartado de la
base de datos en el explorador de soluciones y asegrese de que la propiedad Copiar
en el directorio de resultados tiene el valor Copiar si es posterior.
En el siguiente paso vamos a aadir las tablas a la base de datos. Vamos a crear tres
tablas: tb_profesion, tb_pais y tb_contacto. Para ello, dirjase al explorador de
soluciones y haga doble clic sobre el nodo bd_agenda.mdf . Esto har que se muestre
el explorador de servidores con la composicin de la base de datos:
tb_profesion:
tb_pais
tb_contacto
Ya tenemos las tres tablas. Slo nos falta establecer las relaciones entre ellas. Hay
una forma muy sencilla de hacer esto, y es creando un diagrama visual de base de
datos; dirjase al explorador de servidores, haga clic con el botn secundario del
ratn en el nodo Diagramas de base de datos y ejecute la orden Agregar nuevo
diagrama del men contextual que se visualiza. A continuacin, aada todas las tablas
a ese diagrama. Para relacionar el campo CodigoProfesion de la tabla tb_profesion
con el campo CodigoProfesion de la tabla tb_contacto haga clic con el botn primario
del ratn en el primero y arrastre la correspondencia hasta el segundo. Acepte los
valores por defecto establecidos para la relacin aadida. dem para relacionar el
campo CodigoPais de la tabla tb_pais con el campo CodigoPais de la tabla
tb_contacto
Puede que les pida que elijan los atributos donde existe la relacin entre las tablas de
la siguiente manera
@DireccionContacto varchar(45),
@TelefonoContacto varchar(12),
@CelularContacto varchar(12),
@EmailContacto varchar(20),
@FechaRegistro smalldatetime,
@CodigoProfesion int,
@CodigoPais int
AS
BEGIN
SET NOCOUNT ON;
insert into
tb_contacto(NombreContacto,DireccionContacto,TelefonoContacto,CelularContacto
,Email
Contacto,FechaRegistro,CodigoProfesion,CodigoPais)values
(@NombreContacto,@DireccionContacto,@TelefonoContacto,@CelularContacto,@Email
Contac
to,@FechaRegistro,@CodigoProfesion,@CodigoPais)
END
Todos los cdigos hasta este momento son para SQL Server es decir: Lado del
Servidor
Form1
Name
Text
StartPosition
TextBox1
Name
ReadOnly
TextBox2
Name
TextBox3
Name
TextBox4
Name
TextBox5
Name
TextBox6
Name
ComboBox1
Name
DropDownStyle
ComboBox2
Name
DropDownStyle
dataGridView1
Name
AllowUserToAddRows
AllowUserToDeleteRows
ReadOnly
Button1
Name
Text
Button2
Name
Text
Button3
Name
Text
Button4
Name
Text
Button5
Name
Text
Button6
frmContacto
Contactos
CenterScreen
txtCodigo
True
txtNombres
txtDireccion
txtTelefono
txtCelular
txtEmail
cboProfesion
DropDownList
cboPais
DropDownList
dtgDetalle
False
False
True
btnNuevo
Nuevo
btnGrabar
Grabar
btnModificar
Modificar
btnEliminar
Eliminar
btnCancelar
Cancelar
Name
Text
Button7
Name
Text
Nuestro modelo quedara asi:
btnListar
Listar
btnSalir
Salir
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace sysAgenda
{
public class conexion
{
public string LeerConexion()
{
try
{
return
ConfigurationManager.ConnectionStrings["sysAgenda.Properties.
Settings.agendaConnectionString"].ConnectionString;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}
La cadena de conexin:
sysAgenda.Properties.Settings.agendaConnectionString
la obtenemos del archivo : app.config
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable tb = new DataTable();
da.Fill(tb);
return (tb);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cn.Dispose();
cmd.Dispose();
}
}
}
}
Clase profesion.cs
En nuestra base de datos no tenemos el procedimiento almacenado de listar profesin
por lo que creamos de la siguiente manera.
create PROCEDURE [dbo].[sp_tbProfesionListar]
AS
BEGIN
SET NOCOUNT ON;
select * from tb_profesion order by NombreProfesion
END
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cn.Dispose();
cmd.Dispose();
}
}
}
}
Clase: contacto.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace sysAgenda
{
public class contacto
{
//Metodo para agregar contacto
public void AgregarContacto(string xNombreContacto,string xDireccionContacto,string
xTelefonoContacto,string xCelularContacto,string xEmailContacto,DateTime
xFechaRegistro,int
xCodigoProfesion,int xCodigoPais)
{
conexion cnn = new conexion();
SqlConnection cn = new SqlConnection(cnn.LeerConexion());
SqlCommand cmd = new SqlCommand("sp_tbContactoInsertar", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@NombreContacto",xNombreContacto);
cmd.Parameters.AddWithValue("@DireccionContacto",xDireccionContacto);
cmd.Parameters.AddWithValue("@TelefonoContacto",xTelefonoContacto);
cmd.Parameters.AddWithValue("@CelularContacto",xCelularContacto);
cmd.Parameters.AddWithValue("@EmailContacto",xEmailContacto);
cmd.Parameters.AddWithValue("@FechaRegistro",xFechaRegistro);
cmd.Parameters.AddWithValue("@CodigoProfesion",xCodigoProfesion);
cmd.Parameters.AddWithValue("@CodigoPais",xCodigoPais);
try
{
cn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cn.Dispose();
cmd.Dispose();
}
}
//Metodo para modificar contacto
public void ModificarContacto(int xCodigoContacto,string xNombreContacto, string
xDireccionContacto,
string xTelefonoContacto, string xCelularContacto, string xEmailContacto, DateTime
xFechaRegistro, int
xCodigoProfesion, int xCodigoPais)
{
conexion cnn = new conexion();
SqlConnection cn = new SqlConnection(cnn.LeerConexion());
SqlCommand cmd = new SqlCommand("sp_tbContactoModificar", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CodigoContacto", xCodigoContacto);
cmd.Parameters.AddWithValue("@NombreContacto", xNombreContacto);
cmd.Parameters.AddWithValue("@DireccionContacto", xDireccionContacto);
cmd.Parameters.AddWithValue("@TelefonoContacto", xTelefonoContacto);
cmd.Parameters.AddWithValue("@CelularContacto", xCelularContacto);
cmd.Parameters.AddWithValue("@EmailContacto", xEmailContacto);
cmd.Parameters.AddWithValue("@FechaRegistro", xFechaRegistro);
cmd.Parameters.AddWithValue("@CodigoProfesion", xCodigoProfesion);
cmd.Parameters.AddWithValue("@CodigoPais", xCodigoPais);
try
{
cn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cn.Dispose();
cmd.Dispose();
}
}
//Metodo para eliminar contacto
public void EliminarContacto(int xCodigoContacto)
{
conexion cnn = new conexion();
SqlConnection cn = new SqlConnection(cnn.LeerConexion());
SqlCommand cmd = new SqlCommand("sp_tbContactoEliminar", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CodigoContacto", xCodigoContacto);
try
{
cn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cn.Dispose();
cmd.Dispose();
}
}
public DataTable ListarContacto()
{
conexion cnn = new conexion();
SqlConnection cn = new SqlConnection(cnn.LeerConexion());
SqlCommand cmd = new SqlCommand("sp_tbContactoListar", cn);
cmd.CommandType = CommandType.StoredProcedure;
try
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable tb = new DataTable();
da.Fill(tb);
return (tb);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cn.Dispose();
cmd.Dispose();
}
}
}
}
//Manejo de controles
//Para su mejor comprension lo haremos de manera detallada
txtNombres.ReadOnly =true;
txtDireccion.ReadOnly = true;
txtTelefono.ReadOnly = true;
txtCelular.ReadOnly = true;
txtEmail.ReadOnly = true;
cboProfesion.Enabled = false;
cboPais.Enabled = false;
//Botones
btnNuevo.Enabled = true;
btnGrabar.Enabled = false;
btnModificar.Enabled = false;
btnCancelar.Enabled = false;
btnEliminar.Enabled = false;
btnListar.Enabled = true;
btnSalir.Enabled = true;
//Grid
dtgDetalle.Enabled = true;
//Mostrar el contenido del Grid
MostrarGrid();
MostrarPais();
MostrarProfesion();
}
// Controles
txtNombres.ReadOnly = false;
txtDireccion.ReadOnly = false;
txtTelefono.ReadOnly = false;
txtCelular.ReadOnly = false;
txtEmail.ReadOnly = false;
cboProfesion.Enabled = true;
cboPais.Enabled = true;
//Botones
btnNuevo.Enabled = false;
btnGrabar.Enabled = true;
btnModificar.Enabled = false;
btnCancelar.Enabled = true;
btnEliminar.Enabled = false;
btnListar.Enabled = false;
btnSalir.Enabled = false;
//Grid
dtgDetalle.Enabled = false;
//Foco
txtNombres.Focus();
}
btnListar.Enabled = true;
btnSalir.Enabled = true;
//Grid
dtgDetalle.Enabled = true;
dtgDetalle.Focus();
MostrarGrid();
}
}
//Grid
dtgDetalle.Enabled = true;
dtgDetalle.Focus();
}
Desarrollo de Reportes
Un sistema sin reporte que emita prcticamente no estara cumpliendo su ciclo de
vida completo, por tal motivo iniciaremos un reporte simple con fines didcticos.
Agregaremos un nuevo Formulario a nuestro proyecto
Nombre: frmListaContactos
Click en Ok
Utilizaremos el Asistente:
{
InitializeComponent();
}
private void frmListaContactos_Load(object sender, EventArgs e)
{
contacto persona = new contacto();
rptListaContactos rpt = new rptListaContactos();
rpt.SetDataSource(persona.ListarContacto());
this.crystalReportViewer1.ReportSource = rpt;
this.crystalReportViewer1.DisplayGroupTree = false;
}
}
}