Sei sulla pagina 1di 76

DESCRIPCIÓN BREVE

Proyecto sobre un sistema de ventas


utilizando programación por capas.

Ronald Eduardo Sanchez Mora


SQL y Visual Basic

SYS VENTAS
14/09/2017
Sistema de Ventas con Visual Studio 2013 y SQL 2012

EL modelo de base de datos con la que se va a trabajar en la siguiente:

La tabla detalle_venta va a generar un Id


por cada producto que se compre.

El siguiente esquema muestra una


programación en tres capas la cual vamos
a desarrollar en este proyecto
Procedemos a abrir SQL Management Studio, para empezar con la creación de
nuestra base de datos. La base de datos se llamará “sysventas”

Creamos nuestras tablas


Creamos nuestra primera tabla “producto”
Debemos establecer como
clave primaria “idproducto” y
además se debe de asignar
la propiedad identity a la
clave primaria, finalmente
guardamos la tabla como
“producto”

Creamos nuestra segunda tabla “categoría”


Debemos establecer como clave
primaria “idcategoria” y además
se debe de asignar la propiedad
identity a la clave primaria,
finalmente guardamos la tabla
como “categoría”

Creamos nuestra tercera tabla “Clientes”

Debemos establecer como clave


primaria “idcliente” y además se
debe de asignar la propiedad
identity a la clave primaria,
finalmente guardamos la tabla
como “cliente”
Creamos nuestra tabla “ventas”
Debemos establecer
como clave primaria
“idventa” y además se
debe de asignar la
propiedad identity a la
clave primaria,
finalmente guardamos la
tabla como “ventas”

Creamos nuestra tabla “detalle_venta”


Debemos establecer como clave
primaria “iddetalle” y además se
debe de asignar la propiedad
identity a la clave primaria,
finalmente guardamos la tabla
como “detalle_venta”

Creamos la tabla usuario


Debemos establecer como clave primaria
“idusuario” y además se debe de asignar
la propiedad identity a la clave primaria,
finalmente guardamos la tabla como
“usuario”
Procedemos a crear nuestro diagrama de la BD
Un cliente se relaciona con una venta por medio de una clave foránea, de manera que
si se eliminara un cliente también lo harían sus ventas.
Establecemos la regla de eliminación en cascada, de manera que si eliminamos un
cliente también eliminamos la venta.

La siguiente relación es producto con detalle_venta, un producto esta relacionado


con el detalle de una venta.
La tercera relación es desde la tabla ventas con la tabla detalle_venta, aquí si se
presenta una regla, ya que si elimino una venta también elimino el detalle_venta.

En la cuarta relación categoría se relaciona con producto

Finalmente guardamos nuestro diagrama.


Notas:
- Una venta está relacionada con un cliente
- Esta venta puede tener muchos productos
- Detalle_venta se encarga de controlar cuantos productos compre
- Usuario solo controla acceso a la aplicación.
Video 2

Conexión.vb
Fproducto.vb
Fcliente.vb
Fventa.vb
Clases y Fdetalleventa.vb
funciones Fcategoria.vb
Fusuario.vb

Todas las clases con vproducto.vb


sus objetos y vcliente.vb
atributos vventa.vb
vdetalleventa.vb
vcategoria.vb
vusuario.vb

Vamos a guardar Información de la Van a estar las


los formularios base de datos imágenes

frmInicio.vb Reporteproductos.vb
frmLogin.vb Reportecliente.vb
frmproducto.vb Reporteventa.vb
frmcliente.vb Reportecomprobante.vb
frmventa.vb Reportecategoria.vb
frmdetalleventa.vb
frmcategoria.vb
frmusuario.vb
frmvistacategoria.vb
frmvistaproducto.vb
Crear el proyecto SysVentas

- Creamos una aplicación de Windows Form llamada “sysventas”


- Creamos las carpetas dentro del proyecto
-

- Obtener la cadena de conexión para poderme conectar a la base de datos que se encuentra en SQL
Server 2012.
o Vamos a crear una nueva clase dentro de la carpeta datos

o El nombre de la clase será conexión


Vamos a trabajar con la tabla cliente, por lo que vamos a crear todas las funciones en
datos. Nuestra primera función será Fcliente.

o Ahora abrimos nuestra base de datos y creamos nuestro procedimiento mostrar_cliente


Video 3:

Vamos a desarrollar el formulario frmCliente, modifique las siguientes propiedades del formulario:

Text: Listado de Clientes


BackColor: Blanco

- 2 Group Box
o Font: Negrita
o ForeColor: SteelBlue

- 7 Label (Cambiar la propiedad Text de cada uno)


- 4 Botones
o BackColor: DarkCyan
o ForeColor: White
- 1 ComboBox
o Item
 Nombre
 Apellidos
 Dni
 Teléfono
o Text: dni
- 1 LinkLabel
o Text: Datos Inexistentes
o ForeColor: CadetBlue
o Name: inexistente
- 1 DataGridView
o Name: datalistado
o SelectionMode: FullRowsSelet
o Columns:
 Name: Eliminar
 Header Text: Eliminar
 ColumnType: DataGridViewCheckBoxColumn
- 7 TextBox
o txtidcliente
o txtNombre
o txtApellidos
o txtDireccion
o txttelefono
 MaxLength: 8
o Dni
 MaxLength: 9
o txtBuscar
- 4 Botones
o Name: btnNuevo
o Text: Nuevo
o Name: btnEditar
o Text: Editar
o Name: btnCancelar
o Text: Cancelar
o Name: btnEliminar
o Text: Eliminar
Recordar que debo ingresar dos registros en la tabla Clientes directamente en la base de datos:
Video 4

Vamos a trabajar en el formulario frmCliente, con los botones insertar y editar. Como estos botones van a
enviar, recibir y editar datos vamos a crear una clase en la carpeta lógica pera un mejor control. La clase se
va a llamar “vClientes”.
A continuación, precedemos a realizar nuestros procedimientos almacenados en la base de datos.

Declaro las variables y realizo una inserción de datos en la tabla clientes

Video 5
Dentro de nuestra carpeta datos vamos a abrir la función llamada “fCliente”, vamos a crear una función para
enviar datos desde un formulario a SQL Server.
Nos ubicamos debajo de nuestra función mostrar:
Ahora vamos a agregar un control “error provider” al formulario frmClientes, se debe cambiar la propiedad
name: erroricono. Este control nos va a mostrar un error si dejamos una caja de texto vacía en el formulario.

A continuación se debe programar el evento txtNombre_Validating de cada caja de texto.

Ahora se va a programar el botón Guardar, debido a que no lo tenemos lo vamos a crear y cambiamos la
propiedad Text y name. El botón se va a poner encima del botón editar de manera que cuando hagamos click
en un registro se habilite el botón editar y cuando demos clic en nuevo se habilite el botón guardar.
Vamos a crear un procedimiento llamado Limpiar. Lo vamos a crear debajo del load del formulario.

Luego en el evento del botón Nuevo, vamos al llamar al procedimiento limpiar()

Continuamos programando el evento del botón Guardar.


Video 6

Vamos a estar trabajando en el botón editar. Este botón va a funcionar de la siguiente manera; haremos clic
en los registros que se encuentran el datagrid y nuestro botón Editar se va a habilitar, además los datos
serán cargados en la caja de texto y podremos modificarlos para mandar los cambios y que estos sean
cambiados en la base de datos.

 Creamos nuestro procedimiento almacenado en la base de datos:

 Ahora vamos a programar para que cada vez que seleccionemos un registro en nuestro datagrid,
estos se carguen en nuestras caja de texto. Se debe dar clic sobre el datagrid y buscar el evento
cellclick.
 Seguidamente nos vamos a dirigir a la capa datos y dentro de nuestra clase “fcliente”, vamos a
crear un procedimiento.

 Continuamos con la programación de nuestro botón “editar”


 Luego procedemos a probar nuestro botón “Editar”.

Video 7

En esta sección lo que vamos a programar es el botón eliminar, para ello lo primero que debemos hacer es
crear nuestro procedimiento almacenado en la base de datos.

 Crear una función en la capa “Datos” en la clase “Fcliente”

27/09/2019
 Ahora procedemos a codificar el formulario. Vamos a hacerlo de forma que me permita eliminar
varios registros. Para ello vamos a agregar un checkbox a nuestro formulario:

o Text: Eliminar
o Name: cbEliminar
 Además, mi datalistado(datagrid) debe tener una columna donde pueda marcar varios registros a
eliminar. Dicha columna se había agregado anteriormente
 Programamos el checkbox cbEliminar
 Configurar la propiedad dataListado_CellContentClick del datalistato, donde voy a buscar que los
checkbox sean mostrados

 Procedemos a programar nuestro botón “Eliminar”


Video 8 – Repaso mantenimiento de tablas – tabla Categoría de
Productos.

- En nuestra base de datos tenemos que para poder registrar un producto y poder realizar la ventas
necesariamente tenemos que tener registradas las categorías ya que los productos son ordenados por
categorías, ahora la llave primaria de la tabla categoría, aparece como llave foránea en la tabla
productos, necesariamente necesitamos categorías para poder registrar productos.
- Vamos a hacer el mantenimiento de la tabla categoría de una manera rápida mediante la reutilización de
código.
- Debemos afectar la capa de datos directamente en la base de datos, para ello vamos a crear nuestros
procedimientos almacenados en la BD.

use sysventas

create proc mostrar_categoria


as
select *from categoria order by idcategoria desc
go
---------------------------------------------------------------
create proc insertar_categoria
@nombre_categoria varchar(50)
as
insert into categoria (nombre_categoria) values (@nombre_categoria)
go
---------------------------------------------------------------
create proc editar_cateogria
@idcategoria integer,
@nombre_categoria varchar(50)
as
update categoria set nombre_categoria= @nombre_categoria
where idcategoria=@idcategoria
go
---------------------------------------------------------------
create proc eliminar_categoria
@idcategoria integer
as
delete from categoria where idcategoria=@idcategoria
go

- Ahora vamos a trabajar en nuestra capa grafica del visual studio, y empiezo a crear todos los métodos
getters y setter para mi tabla categoria. Vamos a crear dentro de la capa lógica una clase que
llamaremos “vcategoria”
- Ahora dentro de la capa datos vamos a crear una clase con todas las funciones que me permitan
comunicarme con SQL Server para poder insertar, modificar, eliminar datos. La clase la llamaremos
“fcategoria”
Creación del formulario: Vamos a crear un formulario en nuestra capa
presentación llamado “frmcategoria”

Propiedades
- Text: Listado Categoria
- BackColor: White

Vamos a seleccionar toda la interfaz gráfica del formulario frmcliente (Ctrl + A) y (Ctrl + V) para pegarlo

Procedemos a programar la parte lógica del formulario frmcategoria (se puede reutilizar código del
frmcliente)
Debemos continuar editando el guardar 04/10/2019
Video 9 – Mantenimiento del catálogo de productos

Vamos a tratar de guardar imágenes en nuestra base de datos.

Vamos a explicar nuevamente el modelamiento de la base de datos modelo entidad – relación.

 Recordemos que la tabla productos esta ordenada mediante categorías quiere decir que
necesariamente para poder registrar un producto tiene que haber ya categorías asignadas y
registradas en la base de datos.
 Vamos a hacer mantenimiento de la tabla productos, de la primary key y la foreing key, sus otros
campos, además agregaremos un campo llamado imagen. De esta forma podremos realizar las
ventas.
 Estos artículos se detallan en una tabla llamada “detalle_venta”

Como podemos observar aún no


tenemos nuestra columna imagen por lo
cual vamos a proceder a agregar dicha
columna.
 Abrimos una nueva consulta sql query y ejecutamos el comando “alter table”

 Seguidamente vamos a crear nuestros procedimientos almacenados para poder dar


mantenimiento a la tabla producto.

La tabla producto está relacionada con categoría, entonces en el momento que ordene un
producto no voy ocupar mostrar la llave de la categoría sino su nombre, para ello vamos a
utilizar una instrucción llamada INNER JOIN para poder unir las tablas.

 En este procedimiento no es necesario declarar ninguna variable, empiezo con la


instrucción como. Le digo que seleccione de producto los siguientes campos y uno la tab;a
categoría con producto y finalmente los ordeno.

Voy a declarar las variables, la clave primaria es autogenerada por lo tanto no la


necesito.
2
Realizo el insert en la tabla producto y las variables creadas son las que va a
tomar como valores desde la capa grafica del visual studio.

Voy a declarar las variables, la clave primaria si la vamos a necesitar aquí.

Realizo un update en la tabla producto y las variables creadas son las que va a tomar
3 como valores desde la capa grafica del visual studio.

Finalmente aplico el filtro con la sentencia where idproducto debe ser igual al
@idproducto que estoy recibiendo.
4

Voy a declarar las variables, la clave primaria si la vamos a necesitar aquí.

Únicamente va a borrar donde el producto sea igual al @idproducto que recibo.

En el visual studio, voy a crear los métodos setter y getters dentro de la capa lógica. Por ello dentro de la capa
lógica voy a crear una clase llamada vproducto.
Ahora vamos a hacer todas las funciones que me permitan comunicarme con mi capa datos. Dentro de la
capa datos vamos a crear una clase llamada “fproducto”
Video 10: Desarrollar el formulario Productos

- Agregar un formulario llamado “frmproducto”


o Text: Listado de Catálogo de Productos
o BackColor: White
- Podemos copiar los controles de mi formulario frmCliente.
Propiedad Item: Colections:
- Copiamos el código de frmClientes antes de empezar a editar los controles nombre producto
nombre_categoria
Propiedad text: nombre

Name: btnbuscar_categoria
Text: …

Se cargará imagen
que yo seleccione
En el evento load agregamos lo siguiente:

Vamos a programar las imágenes que van a funcionar como botones, primero vamos con la imagen
btnCargar:
Lo que seleccione en el datalistado se me va a cargar en los textbox, pero debo enumerarlos de acuerdo al
orden que tenemos en el procedimiento almacenado.
En el formulario frmCategoria voy a agregar un textbox y en su propiedad name le voy asignar: txtflag y en
su propiedad Text: 0

Me muestra el formulario categoria


Ahora en el formulario frmcategoria, vamos a dar doble click y programar el evento:

Configuramos el proyecto para cargue el formulario producto y lo ejecuto.


Video 11:

Vamos a explicar la función de la tabla ventas y detalle _venta


Tabla Ventas: Seria en si donde se registran los comprobantes de ventas
Tabla Detalle_Venta: Donde se guardan todos los ítems de la factura de venta.
- Vamos a empezar con los procedimientos almacenados para la tabla ventas.

Es ventas
- Ahora vamos a crear una vista, ya que nuestra tabla venta está relacionada con la tabla clientes.

- Continuamos con los procedimientos de la tabla detalle_venta.


Una vez concluidos nuestros procedimientos almacenados de las tablas ventas y detalle_ventas,
procedemos a afectar nuestra capa lógica en visual studio
Creamos una clase en nuestra capa lógica llamada “vventa” y construimos todos los métodos, getters,
setters y constructores.

String
Ahora vamos a afectar nuestra capa lógica haremos lo mismo pero para detalle_venta.
Dentro de la capa datos vamos a crear dos clases: fventa (copiamos todo el contenido de la clase fcliente)
Vamos a crear nuestra segunda clase llamada fdetalle_venta (podemos copiar la clase fcliente para
modificarla)
Video 12:

Lo primero que haremos antes de empezar a trabajar en la capa grafica es modificar algunos procedimientos
almacenados:
- Procedimiento mostrar_venta

- Ahora vamos a darle en nueva vista


Ahora bien, en la capa presentación vamos a crear un nuevo formulario:

Text: Listado de ventas


BackColor: White
Copiamos los controles de frmclientes:

Como la tabla venta está relacionada con la tabla detalle_venta, la tabla detalle_venta va depender de esta
tabla venta. Por lo tanto, primero debemos eliminar el detalle_venta para poder eliminar la venta. Por esta
razón vamos a eliminar el botón Eliminar del formulario ya que está de más.
Botón Guardar: Cuando le demos clic en guardar la venta va a cargar una ventana que me va a permitir
adicionar productos a esa venta.
Vamos a agregar un nuevo formulario a la capa presentación donde va a estar todos los detalles o los ítems
de la compra. El formulario se va a llamar (frmdetalle), vamos a copiar todos los controles de frmventa.

Además, en el formulario frmcliente vamos a crear un textbox, con las siguientes propiedades:
- Name: txtflag
- Text: 0
- Visible: False
Programación Formulario frmventa:
En el evento dataListado_CellDoubleClick del datagridview de frmClientes

Ahora vamos a agregar los controles faltantes en el formulario frmdetalle_venta


Vamos a jalar todo el código de frmventas y lo vamos a pegar en frmdetalle_venta. Otra cosa que
haremos en frmventa_detalle vamos a quitar el botón editar, ya que no vamos a necesitar.
Solo vamos aumentar o quitar el stock.

Aquí viene el código de frmventa_detalle (vamos a reutilizar el código de frmventa)


Vamos a reutilizar código del botón Eliminar del formulario frmcliente y lo vamos a pegar en el botón quitar
artículo del formulario frmdetalle_venta

Además, vamos a dibujar una bandera en frmproducto.

Nosotros podemos seleccionar cantidades pero que o sean mayores a lo que está en el stock, esto lo vamos
a programar en el evento value_changed de los controles numericupdown de frmventa_detalle.
FrmClientes evento dataListado_CellDoubleClick del datagridview

Frmproducto en el evento del datalistado.


Video 13: Nos hace falta poder generar comprobantes para nuestra
aplicación.

Agregar lo que le hace falta al formulario

- Crear un procedimiento almacenado, pero antes vamos a generar una vista


- Ahora vamos a copiar la consulta para utilizarla en el procedimiento almacenado:

- Ahora nos pasamos a visual Studio.

Agregamos un botón que va a encargarse de generar el reporte de la venta:

Propiedades:
Name: btnimprimir
Text: Vacio
BackgroundImage: Imagen
Title: Stretch

En la carpeta de reporte, vamos hacer clic en agregar:


Vamos a suprimir la tabla que se generó para empezar el reporte desde cero.
Debo de arrastrarlo a la esquina derecha

Luego damos clic derecho/insertar/imagen


Finalmente el formulario se debería ver así:

Ahora dentro de la carpeta reporte voy a agregar un Windows Form: frmreportecomprobante


Seguidamente vamos a agregar un control al formulario llamado ReportViwer

Agregamos un Textbox al
formulario llamado txtidventa y en
su propiedad visible lo dejamos en
false.
Evento load del reporte.

Botón imprimir reporte


Ahora vamos a generar un nuevo reporte que me muestre los productos:
Quedaria maso menos así:

Ahora agregamos un Windows Form para que me muestre el comprobante dentro de la carpeta Reportes:
frmreporteproductos : Name
.:. Reporte Sistema Ventas .:. Text
Agregamos control ReportViwer…. (mismo pasos)

Configuramos el proyecto para iniciar con frmreporteproductos:

Video 14: Formulario Principal Login

Potrebbero piacerti anche