Sei sulla pagina 1di 8

1.

ENTORNO
SQL Server 2008
Visual Studio 2008


2. I NTRODUCCI N

En el siguiente tutorial vamos a desarrollar un sistema de ventas usando el lenguaje de
programacin C# y como base de datos vamos a usar el SQL Server 2008 y tambien crearemos un
reporte con Crystal Report. La base de datos que vamos a crear es una base de datos con fines
didcticos, dado que nos faltara crear mas tablas, como la tabla cliente, categora, unidad de
medida, etc pero si nos explayamos mucho nos quedara muy largo el tutorial. Ademas en el
ejemplo no se explica como disminuir un stock, debido a que eso siempre se les pide a los
alumnos universitario que investiguen como hacerlo, pero si quieren una ayudita lo pueden hacer
creando Triggers en la base de datos.


3. DESARROLLO

En esta primera parte del tutorial vamos a crear la base de datos en SQL Server 2008, la base de
datos se llamara BDTutorial

3.1. Diseo de la base de datos

La base de datos tendra las siguientes tablas: Venta, Producto y DetalleVenta












Ademas la columna "codigoVenta" de la tabla "Venta" tiene un valor de identidad, eso quiere decir
que su valor es auto incremental que comienza en uno e incrementa de uno en uno.























Lo mismo sucedera con la columna "codigoProducto" de la tabla Producto

























3.2. Creando los procedimientos almacenados

Segn Wikipedia un procedimiento almacenado (stored procedure en ingls) es un programa (o
procedimiento) el cual es almacenado fsicamente en una base de datos. Su implementacin vara
de un manejador de bases de datos a otro. La ventaja de un procedimiento almacenado es que al
ser ejecutado, en respuesta a una peticin de usuario, es ejecutado directamente en el motor de
bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo
a los datos que necesita manipular y slo necesita enviar sus resultados de regreso al usuario,
deshacindose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y
entrantes.

3.2.1. Procedimientos Almacenados para la tabla Producto


/*
----------------------------------------------------
CREADO:
POR :HENRY JOE WONG URQUIZA
FECHA:22FEB2011
PROCEDIMIENTO ALMACENADO UTILIZADO PARA INSERTAR UN
PRODUCTO A LA BASE DE DATOS
----------------------------------------------------
*/
CREATE PROC dbo.spI_Producto
@codigoProducto int = Null OUTPUT,
@nombre varchar(100) = Null,
@precio decimal(18, 2) = Null
AS
insert into Producto
(
nombre,
precio
)
VALUES(
@nombre,
@precio
)
--Obteniendo el codigo autogenerado de producto
SET @codigoProducto = @@IDENTITY;
GO
/*
----------------------------------------------------
CREADO:
POR :HENRY JOE WONG URQUIZA
FECHA:22FEB2011
PROCEDIMIENTO ALMACENADO UTILIZADO PARA ACTUALIZAR UN
PROCEDUCTO A LA BASE DE DATOS
----------------------------------------------------
*/
CREATE PROC dbo.spU_Producto
@codigoProducto int = Null,
@nombre varchar(100) = Null,
@precio decimal(18, 2) = Null
AS

UPDATE Producto
SET
nombre = @nombre,
precio = @precio
WHERE
codigoProducto = @codigoProducto
GO
/*
----------------------------------------------------
CREADO:
POR :HENRY JOE WONG URQUIZA
FECHA:22FEB2011
PROCEDIMIENTO ALMACENADO UTILIZADO PARA OBTENER TODOS
LOS PRODUCTOS DE LA BASE DE DATOS
----------------------------------------------------
*/
CREATE PROC dbo.spF_Producto_All
AS
SELECT
p.codigoProducto,
p.nombre,
p.precio
FROM
Producto p
ORDER BY
P.nombre

3.2.2. Procedimientos Almacenados para la tabla Venta


/*
----------------------------------------------------
CREADO:
POR :HENRY JOE WONG URQUIZA
FECHA:22FEB2011
PROCEDIMIENTO ALMACENADO UTILIZADO PARA INSERTAR UNA
VENTA A LA BASE DE DATOS
----------------------------------------------------
*/
CREATE PROC dbo.spI_Venta
@codigoVenta int = Null OUTPUT,
@cliente varchar(100) = Null
AS

insert into Venta
(
cliente,
fecha
)
VALUES(
@cliente,
GETDATE()
)
--Obteniendo el codigo autogenerado de la venta
SET @codigoVenta = @@IDENTITY
GO

/*
----------------------------------------------------
CREADO:
POR :HENRY JOE WONG URQUIZA
FECHA:22FEB2011
PROCEDIMIENTO ALMACENADO UTILIZADO PARA OBTENER EL
REPORTE DE LA VENTA DE LA BASE DE DATOS
----------------------------------------------------
*/
CREATE PROCEDURE dbo.spF_Venta_One
@codigoVenta int
AS
SELECT
v.codigoVenta AS CodigoVenta,
v.cliente AS Cliente,
v.fecha AS Fecha,
d.codigoProducto AS CodigoProducto,
p.nombre AS Nombre,
p.precio AS Precio,
d.cantidad AS Cantidad,
d.descuento AS Descuento,
p.precio*d.cantidad AS Parcial,
((p.precio*d.cantidad)-d.descuento) AS SubTotal,
(
SELECT
SUM((dT.cantidad * pT.precio)-dT.descuento) AS TotalPagar
FROM
DetalleVenta AS dT INNER JOIN
Producto AS pT ON dT.codigoProducto = pT.codigoProducto
WHERE
dT.codigoVenta=v.codigoVenta
) AS TotalPagar
FROM
Venta AS v INNER JOIN
DetalleVenta AS d ON v.codigoVenta = d.codigoVenta INNER JOIN
Producto AS p ON d.codigoProducto = p.codigoProducto
WHERE
v.codigoVenta=@codigoVenta
ORDER BY
Nombre

GO

/*
----------------------------------------------------
CREADO:
POR :HENRY JOE WONG URQUIZA
FECHA:22FEB2011
PROCEDIMIENTO ALMACENADO UTILIZADO PARA OBTENER TODAS
LAS VENTAS DE LA BASE DE DATOS
----------------------------------------------------
*/
CREATE PROCEDURE dbo.spF_Venta_All
AS
SELECT
v.codigoVenta AS CodigoVenta,
v.cliente AS Cliente,
v.fecha AS Fecha,
d.codigoProducto AS CodigoProducto,
p.nombre AS Nombre,
p.precio AS Precio,
d.cantidad AS Cantidad,
d.descuento AS Descuento,
p.precio*d.cantidad AS Parcial,
((p.precio*d.cantidad)-d.descuento) AS SubTotal,
(
SELECT
SUM((dT.cantidad * pT.precio)-dT.descuento) AS TotalPagar
FROM
DetalleVenta AS dT INNER JOIN
Producto AS pT ON dT.codigoProducto = pT.codigoProducto
WHERE
dT.codigoVenta=v.codigoVenta
) AS TotalPagar
FROM
Venta AS v INNER JOIN
DetalleVenta AS d ON v.codigoVenta = d.codigoVenta INNER JOIN
Producto AS p ON d.codigoProducto = p.codigoProducto
ORDER BY
CodigoVenta, Nombre

3.2.3. Procedimientos Almacenados para la tabla DetalleVenta


/*
----------------------------------------------------
CREADO:
POR :HENRY JOE WONG URQUIZA
FECHA:22FEB2011
PROCEDIMIENTO ALMACENADO UTILIZADO PARA INSERTAR UN
DETALLE DE VENTA A LA BASE DE DATOS
----------------------------------------------------
*/
CREATE PROC dbo.spI_DetalleVenta
@codigoVenta int = Null,
@codigoProducto int = Null,
@cantidad decimal(18, 2) = Null,
@descuento decimal(18, 2) = Null
AS
insert into DetalleVenta
(
codigoVenta,
codigoProducto,
cantidad,
descuento
)
VALUES(
@codigoVenta,
@codigoProducto,
@cantidad,
@descuento
)

Potrebbero piacerti anche