Hola de nuevo, pues aquí estamos con una nueva entrada ahora aprenderemos a crear un proyecto de Windows Forms en Visual Studio 2013, para insertar datos y mostrar los registros en un control DataGridView en el formulario.
La creación del archivo AppConfig para la conexión la omito, ya que en la publicación de mi blog Configurar AppConfig lo explico, el script de sql te genera 4 consultas las 2 primeras son las que utilizaremos (Insertar y Listar)y las otras 2 son para Modificar y borrar registros no agregue el código para estas 2 últimas intenten hacerlo ustedes si tienen alguna duda podrán dejar sus comentarios al final.
Lo primero es crear un nuevo proyecto de windows forms C# nos vamos a Archivo - Nuevo - Proyecto así como se muestra en las imagenes para ampliar las imagenes den click sobre ellas:
Una vez creado procedemos a realizar nuestro diseño para eso necesitaremos agregar 4 Labels, 4 textBoxs, 3 buttons y 1 DataGridView.
Los nombraremos de la siguiente manera:
pare eso nos vamos a propiedades del control, si no les aparece la ventana de propiedades damos click derecho sobre un control cualquiera, y buscamos su atributo (Name) y ahi es donde agregamos sus nombres:
TextBoxs txtNom, txtDir, txtEst, txtID,
Buttons btnGuardar, btnModificar, btnEliminar
DataGridView gvEmpresas, a los labels no les aplicamos la propiedad ver imagen.
Ahora procedemos a agregar las clases para agregar funcionalidad para eso creamos 2 clases:
clsEmpresa.cs: contiene las propiedades.
clsEmpresaTrans.cs: contiene los metodos para las transacciones entre sql server 2014 y visual studio 2013
// Código para la clase clsEmpresa
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Catalogo
{
public class clsEmpresa
{
// declaracion de variables
private int intidempresa = 0;
private string strnombre = string.Empty;
private string strdireccion = string.Empty;
private string strEstado = string.Empty;
private DateTime DttfechaRegistro = DateTime.Now;
private bool booactiva = false;
//constructores
public clsEmpresa() { }
public clsEmpresa(int paridempresa
, string parnombre
, string pardireccion
, string parEstado
, DateTime parfechaRegistro
, bool paractiva)
{
intidempresa = paridempresa;
strnombre = parnombre;
strdireccion = pardireccion;
strEstado = parEstado;
DttfechaRegistro = parfechaRegistro;
booactiva = paractiva;
}
// propiedades get - set
public int idempresa { get { return intidempresa; } set { intidempresa = value; } }
public string nombre { get { return strnombre; } set { strnombre = value; } }
public string direccion { get { return strdireccion; } set { strdireccion = value; } }
public string Estado { get { return strEstado; } set { strEstado = value; } }
public DateTime fechaRegistro { get { return DttfechaRegistro; } set { DttfechaRegistro = value; } }
public bool activa { get { return booactiva; } set { booactiva = value; } }
}
}
// Código para la clase clsEmpresaTrans
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace Catalogo
{
public class clsEmpresaTrans
{
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnn"].ConnectionString);
clsEmpresa empresa = new clsEmpresa();
SqlCommand cmd = null;
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
//constructores
public clsEmpresaTrans() { }
public clsEmpresaTrans(clsEmpresa parEmp)
{
empresa = parEmp;
}
// Metodos
public bool Guardar()
{
try
{
cmd = new SqlCommand("SPEmpresa", cnn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@opc", SqlDbType.Int).Value = 1;
cmd.Parameters.Add("@idempresa", SqlDbType.Int).Value = empresa.idempresa;
cmd.Parameters.Add("@nombre", SqlDbType.VarChar, 100).Value = empresa.nombre;
cmd.Parameters.Add("@direccion", SqlDbType.VarChar, 200).Value = empresa.direccion;
cmd.Parameters.Add("@Estado", SqlDbType.VarChar, 50).Value = empresa.Estado;
cmd.Parameters.Add("@fechaRegistro", SqlDbType.SmallDateTime).Value = empresa.fechaRegistro;
cmd.Parameters.Add("@activa", SqlDbType.Bit).Value = empresa.activa;
cnn.Open();
cmd.ExecuteNonQuery();
return true;
}
catch (Exception)
{
cnn.Close();
return false;
}
finally
{
cnn.Close();
}
}
public DataTable Listar()
{
try
{
cmd = new SqlCommand("SPEmpresa", cnn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@opc", SqlDbType.Int).Value = 2;
cnn.Open();
da.SelectCommand = cmd;
da.Fill(dt);
return dt;
}
catch (Exception)
{
cnn.Close();
return dt = null;
}
finally
{
cnn.Close();
}
}
}
}
// Código que agregamos al formulario (Form1.cs) que se ha creado por default
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
namespace Catalogo
{
public partial class Form1 : Form
{
clsEmpresa parEmp = new clsEmpresa();
clsEmpresaTrans empTrans = null;
DataTable dt = new DataTable();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
listar();
}
private void listar()
{
empTrans = new clsEmpresaTrans(parEmp);
dt = empTrans.Listar();
if (dt.Rows.Count > 0)
{
gvEmpresas.DataSource = dt;
}
else
{
MessageBox.Show("No hay filas que mostrar " + dt.Rows.Count.ToString() + " filas");
}
}
private void btnGuardar_Click(object sender, EventArgs e)
{
parEmp.nombre = txtNom.Text;
parEmp.direccion = txtDir.Text;
parEmp.Estado = txtEst.Text;
empTrans = new clsEmpresaTrans(parEmp);
if (empTrans.Guardar())
{
MessageBox.Show(" Se registro correctamente la información");
listar();
}
}
}
}
-- Script para crear la base de datos, su tabla y su SP
create database DBTuto-- creamos la base de datos
go
use DBTuto-- nos posicionamos en ella
go
create table Empresa-- creamos la tabla
(
idempresa int identity(1,1) primary key
, nombre varchar(100)
, direccion varchar(200)
, Estado varchar(50)
, fechaRegistro smalldatetime default(getdate())
, activa bit default(1)
)
go
create procedure SPEmpresa-- creamos el SP
@opc int
, @idempresa int = null
, @nombre varchar(200) = null
, @direccion varchar(200) = null
, @Estado varchar(50) = null
, @fechaRegistro smalldatetime = null
, @activa bit = null
as
-- el SP tiene 4 consultas las cuales se ejecutan dependiendo de la opcion elegida
-- Inserccion de datos
if @opc = 1
begin
insert into Empresa(nombre, direccion, Estado)
values( @nombre, @direccion, @Estado)
end
-- Listar datos
if @opc = 2
begin
select a.idempresa, a.nombre, a.direccion, a.Estado, a.fechaRegistro, a.activa from Empresa a
end
-- Actualizar datos
if @opc = 3
begin
update Empresa set
nombre = @nombre
, direccion = @direccion
, Estado = @Estado
where idempresa = @idempresa
end
-- Borrado logico
if @opc = 4
begin
update Empresa set activa = 1 where idempresa = @idempresa
end
Resultado:
Bueno eso es todo amigos, Nos vemos en la próxima!!
Mira el video en youtube!!
http://youtu.be/xb5Z-aJsDXM
Fuente consultada:
https://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldataadapter.selectcommand(v=vs.110).aspx