Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (12-41) Procedimientos Almacenados Tabla Artículo
Buen día amigos, En este artículo implementaremos los procedimientos almacenados en sql server 2014 para poder dar mantenimiento a nuestra tabla Artículo, iniciaremos también con la implementación de la clase DArticulo en la capa datos donde estarán las variables (atributos) y las propiedades ó métodos setter y getter (para encapsular los campos, además de los métodos para insertar, editar, eliminar, mostrar y buscar registros en la tabla Artículos de la base de datos en SQL Server 2014 directamente desde Visual Studio 2013 utilizando como lenguaje de programación Csharp, veremos también la manera como almacenar una imagen en una base de datos de Sql Server desde Visual Basic.
Pueden descargar el paquete del proyecto desarrollado en el curso, la base de datos, los procedimientos almacenados y el sistema completo hasta el Video 41 desde:
Puedes descargar la versión completa del proyecto con todas las funcionalidades terminadas desde:
Pueden seguir el curso completo y aprender a desarrollar un Sistema de Ventas en Csharp.Net utilizando como IDE de desarrollo Visual Studio 2013 y como gestor de Base de datos SQL Server 2014 desde:
No se olviden siempre de Visitar mi canal www.youtube.com/jcarlosad7 para ver los nuevos cursos.
Procedimientos almacenados tabla Artículo
--Procedimiento Mostrar
create proc
spmostrar_articulo
as
SELECT articulo.idarticulo,articulo.codigo,articulo.nombre,
articulo.descripcion,articulo.imagen,articulo.idcategoria,
categoria.nombre AS Categoria,
articulo.idpresentacion,
presentacion.nombre
AS Presentacion
FROM articulo INNER JOIN categoria
ON dbo.articulo.idcategoria = dbo.categoria.idcategoria
INNER JOIN presentacion
ON
articulo.idpresentacion
= presentacion.idpresentacion
order
by articulo.nombre
desc
go
-- Procedimiento Buscar Artículo Nombre
create proc
spbuscar_articulo_nombre
@textobuscar varchar(50)
as
SELECT articulo.idarticulo,articulo.codigo,articulo.nombre,
articulo.descripcion,articulo.imagen,articulo.idcategoria,
categoria.nombre AS Categoria,
articulo.idpresentacion,
presentacion.nombre
AS Presentacion
FROM articulo INNER JOIN categoria
ON dbo.articulo.idcategoria = dbo.categoria.idcategoria
INNER JOIN presentacion
ON
articulo.idpresentacion
= presentacion.idpresentacion
where
articulo.nombre like
@textobuscar + '%'
go
-- Procedimiento Insertar Artículo
create proc
spinsertar_articulo
@idarticulo
int output,
@codigo varchar(50),
@nombre varchar(50),
@descripcion
varchar(1024),
@imagen image,
@idcategoria int,
@idpresentacion int
as
insert into articulo(codigo,nombre,descripcion,imagen,idcategoria,idpresentacion)
values
(@codigo,@nombre,@descripcion,@imagen,@idcategoria,@idpresentacion)
go
-- Procedimiento Editar Artículo
create proc
speditar_articulo
@idarticulo int,
@codigo varchar(50),
@nombre varchar(50),
@descripcion
varchar(1024),
@imagen image,
@idcategoria
int,
@idpresentacion
int
as
update articulo set codigo=@codigo,nombre=@nombre,
descripcion=@descripcion, imagen=@imagen,idcategoria=@idcategoria,
idpresentacion=@idpresentacion
where
idarticulo=@idarticulo
go
-- Procedimiento Eliminar Artículo
create proc
speliminar_articulo
@idarticulo
int
as
delete
from articulo
where
idarticulo=@idarticulo
go
Código Capa Datos - Clase DPresentación
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; namespace CapaDatos { public class DArticulo { //Variables private int _Idarticulo; private string _Codigo; private string _Nombre; private string _Descripcion; private byte[] _Imagen; private int _Idcategoria; private int _Idpresentacion; private string _TextoBuscar; //Propiedades //Métodos Setter an Getter Propiedades public int Idarticulo { get { return _Idarticulo; } set { _Idarticulo = value; } } public string Codigo { get { return _Codigo; } set { _Codigo = value; } } public string Nombre { get { return _Nombre; } set { _Nombre = value; } } public string Descripcion { get { return _Descripcion; } set { _Descripcion = value; } } public byte[] Imagen { get { return _Imagen; } set { _Imagen = value; } } public int Idcategoria { get { return _Idcategoria; } set { _Idcategoria = value; } } public int Idpresentacion { get { return _Idpresentacion; } set { _Idpresentacion = value; } } public string TextoBuscar { get { return _TextoBuscar; } set { _TextoBuscar = value; } } //Constructores //Constructor Vacío public DArticulo() { } //Constructor con todas los parámetros public DArticulo(int idarticulo, string codigo, string nombre, string descripcion,byte[] imagen,int idcategoria, int presentacion, string textobuscar) { this.Idarticulo = idarticulo; this.Codigo = codigo; this.Nombre = nombre; this.Descripcion = descripcion; this.Imagen = imagen; this.Idcategoria = idcategoria; this.Idpresentacion = Idpresentacion; this.TextoBuscar = textobuscar; } //Método Insertar public string Insertar(DArticulo Articulo) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //Establecer el Comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "spinsertar_articulo"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIdarticulo = new SqlParameter(); ParIdarticulo.ParameterName = "@idarticulo"; ParIdarticulo.SqlDbType = SqlDbType.Int; ParIdarticulo.Direction = ParameterDirection.Output; SqlCmd.Parameters.Add(ParIdarticulo); SqlParameter ParCodigo = new SqlParameter(); ParCodigo.ParameterName = "@codigo"; ParCodigo.SqlDbType = SqlDbType.VarChar; ParCodigo.Size = 50; ParCodigo.Value = Articulo.Codigo; SqlCmd.Parameters.Add(ParCodigo); SqlParameter ParNombre = new SqlParameter(); ParNombre.ParameterName = "@nombre"; ParNombre.SqlDbType = SqlDbType.VarChar; ParNombre.Size = 50; ParNombre.Value = Articulo.Nombre; SqlCmd.Parameters.Add(ParNombre); SqlParameter ParDescripcion = new SqlParameter(); ParDescripcion.ParameterName = "@descripcion"; ParDescripcion.SqlDbType = SqlDbType.VarChar; ParDescripcion.Size = 1024; ParDescripcion.Value = Articulo.Descripcion; SqlCmd.Parameters.Add(ParDescripcion); SqlParameter ParImagen = new SqlParameter(); ParImagen.ParameterName = "@imagen"; ParImagen.SqlDbType = SqlDbType.Image; ParImagen.Value = Articulo.Imagen; SqlCmd.Parameters.Add(ParImagen); SqlParameter ParIdcategoria = new SqlParameter(); ParIdcategoria.ParameterName = "@idcategoria"; ParIdcategoria.SqlDbType = SqlDbType.Int; ParIdcategoria.Value = Articulo.Idcategoria; SqlCmd.Parameters.Add(ParIdcategoria); SqlParameter ParIdpresentacion = new SqlParameter(); ParIdpresentacion.ParameterName = "@idpresentacion"; ParIdpresentacion.SqlDbType = SqlDbType.Int; ParIdpresentacion.Value = Articulo.Idpresentacion; SqlCmd.Parameters.Add(ParIdpresentacion); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el Registro"; } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) SqlCon.Close(); } return rpta; } //Método Editar public string Editar(DArticulo Articulo) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //Establecer el Comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "speditar_articulo"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIdarticulo = new SqlParameter(); ParIdarticulo.ParameterName = "@idarticulo"; ParIdarticulo.SqlDbType = SqlDbType.Int; ParIdarticulo.Value = Articulo.Idarticulo; SqlCmd.Parameters.Add(ParIdarticulo); SqlParameter ParCodigo = new SqlParameter(); ParCodigo.ParameterName = "@codigo"; ParCodigo.SqlDbType = SqlDbType.VarChar; ParCodigo.Size = 50; ParCodigo.Value = Articulo.Codigo; SqlCmd.Parameters.Add(ParCodigo); SqlParameter ParNombre = new SqlParameter(); ParNombre.ParameterName = "@nombre"; ParNombre.SqlDbType = SqlDbType.VarChar; ParNombre.Size = 50; ParNombre.Value = Articulo.Nombre; SqlCmd.Parameters.Add(ParNombre); SqlParameter ParDescripcion = new SqlParameter(); ParDescripcion.ParameterName = "@descripcion"; ParDescripcion.SqlDbType = SqlDbType.VarChar; ParDescripcion.Size = 256; ParDescripcion.Value = Articulo.Descripcion; SqlCmd.Parameters.Add(ParDescripcion); SqlParameter ParImagen = new SqlParameter(); ParImagen.ParameterName = "@imagen"; ParImagen.SqlDbType = SqlDbType.Image; ParImagen.Value = Articulo.Imagen; SqlCmd.Parameters.Add(ParImagen); SqlParameter ParIdcategoria = new SqlParameter(); ParIdcategoria.ParameterName = "@idcategoria"; ParIdcategoria.SqlDbType = SqlDbType.Int; ParIdcategoria.Value = Articulo.Idcategoria; SqlCmd.Parameters.Add(ParIdcategoria); SqlParameter ParIdpresentacion = new SqlParameter(); ParIdpresentacion.ParameterName = "@idpresentacion"; ParIdpresentacion.SqlDbType = SqlDbType.Int; ParIdpresentacion.Value = Articulo.Idpresentacion; SqlCmd.Parameters.Add(ParIdpresentacion); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Actualizo el Registro"; } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) SqlCon.Close(); } return rpta; } //Método Eliminar public string Eliminar(DArticulo Articulo) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //Establecer el Comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "speliminar_articulo"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIdarticulo = new SqlParameter(); ParIdarticulo.ParameterName = "@idarticulo"; ParIdarticulo.SqlDbType = SqlDbType.Int; ParIdarticulo.Value = Articulo.Idarticulo; SqlCmd.Parameters.Add(ParIdarticulo); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Elimino el Registro"; } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) SqlCon.Close(); } return rpta; } //Método Mostrar public DataTable Mostrar() { DataTable DtResultado = new DataTable("articulo"); SqlConnection SqlCon = new SqlConnection(); try { SqlCon.ConnectionString = Conexion.Cn; SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "spmostrar_articulo"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlDataAdapter SqlDat = new SqlDataAdapter(SqlCmd); SqlDat.Fill(DtResultado); } catch (Exception ex) { DtResultado = null; } return DtResultado; } //Método BuscarNombre public DataTable BuscarNombre(DArticulo Articulo) { DataTable DtResultado = new DataTable("articulo"); SqlConnection SqlCon = new SqlConnection(); try { SqlCon.ConnectionString = Conexion.Cn; SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "spbuscar_articulo_nombre"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParTextoBuscar = new SqlParameter(); ParTextoBuscar.ParameterName = "@textobuscar"; ParTextoBuscar.SqlDbType = SqlDbType.VarChar; ParTextoBuscar.Size = 50; ParTextoBuscar.Value = Articulo.TextoBuscar; SqlCmd.Parameters.Add(ParTextoBuscar); SqlDataAdapter SqlDat = new SqlDataAdapter(SqlCmd); SqlDat.Fill(DtResultado); } catch (Exception ex) { DtResultado = null; } return DtResultado; } } }
Video 12: Sistema de Ventas C# - Visual Studio 2013 - Sql Server 2014 (12-34) Capa Datos Artículos
Saludos Imperio, un abrazo a la distancia!!!
Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (12-41) Procedimientos Almacenados Tabla Artículo
Reviewed by IncanatoIt-ad
on
13:22
Rating:
Hola primeramente darte las gracias por tu gran aporte a la enseñanza
ResponderEliminartengo un problema hago todo lo de tus tutoriales para poder comprender el codigo pero al ejecutar el formulario articulo no me muestra la informacion solo me da los nombre de las culmnas ejecute la consulta en slq y lo mismo, solo se me muestra la informacion si utiliso el select * from, me podrias ayudar?
Hola, buen día.
EliminarAl parecer tiene errores en su consulta, revise bien si se esta implementando de manera adecuada el inner join para unir la tabla artículo con categoría y presentación.
buenas juancarlos tengo un problema cuando intento agregar un nuevo servicio en ves de articulo me sale esto SqlParamaterCollection Solo acepta objetos de tipo no null
ResponderEliminarSqlParameter,no objects String
hola cuanto creo el procedimiento almacenado insertar y editar me aparece el siguiente mensaje
ResponderEliminar""Implicit conversion from data type varchar to varbinary is not allowed. Use the CONVERT function to run this query.""