domingo, 4 de agosto de 2013

Punto de Venta con VB y MySQL (3)

Aplicaciones de estilo MDI


En la entrada anterior Punto de venta con Visual Basic 2010 y MySQL y en Creación de la Base de Datos se mostró el diseño de los formularios que se utilizarán en la aplicación y la base de datos.
 
Una aplicación de tipo o estilo MDI (Multiple Document Interface), Interfaz de Documento Múltiple, se compone de un formulario principal, también denominado formulario MDI, que actuará como contenedor de otros formularios (documentos) abiertos durante el transcurso del programa, denominados formularios hijos o secundarios MDI.

A diferencia de lo que ocurría en versiones anteriores de VB, un formulario MDI admite los mismos controles que un formulario normal, aunque dada su orientación de formulario contenedor, se recomienda limitar los controles en un MDI a los estrictamente necesarios.

 El menú es el ejemplo más identificativo de control idóneo para un formulario MDI, ya que a través de sus opciones, podremos abrir los formularios hijos de la aplicación.

Perfeccionando al menú contenedor.

Abrimos el formulario frmPuntoVenta





Propiedad:

IsMdiContainer                  –  True

BackGroundImage             –   Insertamos logo de la empresa

BackGroundImageLayout –  Stretch

MaximizeBox                      –  False

MinimizeBox                       –  False

Size                                       –  900, 600

WindowState                      –  Normal






Perfeccionando a los formularios hijos

Abrimos al formulario producto: frmProducto


Propiedad:

IsMdiContainer  –  False

MaximizeBox      –  True

MinimizeBox       –  True

WindowState      –  Maximized

Hasta aquí lo dejo en esta entrega, más adelante seguiremos trabajando en esta aplicación.

Les dejo los enlaces para descargar el pdf de esta lección:

En Mega: Menú contenedor.

En DropBox: Menú contenedor


 

Cualquier duda o comentario no dudes en escribirme. 

Punto de Venta con VB y MySQL (2)

Creación de la Base de Datos en MySQL Server 5.1

En la entrada anterior Punto de venta con Visual Basic 2010 y MySQL se mostró el diseño de los formularios que se utilizarán en la aplicación.

Ahora se darán las sentencias para crear la base de datos, al cual se le pondrá el nombre de ferreteria.


Para crear la base de datos en MySQL es:

Create database ferreteria;

Use ferreteria;
Creación de las Tablas

CREATE  TABLE proveedor(


idproveedor INT NOT NULL AUTO_INCREMENT ,


nombrepro VARCHAR(255) NULL ,
direccion TEXT NULL ,


rfc VARCHAR(18) NULL ,


telefono VARCHAR(20) NULL ,


PRIMARY KEY (idproveedor))engine=myisam; 
  
 CREATE TABLE productos(


idproducto INT NOT NULL AUTO_INCREMENT ,


nombre varchar(100),


descripcion TEXT NULL ,


marca VARCHAR(45) NULL ,


precio DECIMAL(12,2) NULL ,


costo DECIMAL(12,2) NULL ,


minimo INT NULL ,  /*la cantidad mínima del producto*/


stok int,   /*cantidad en stok o en tienda*/


idproveedorpro INT NOT NULL , /*un producto es obtenido de un proveedor*/


index fkindex(idproveedorpro),


PRIMARY KEY (idproducto))engine=myisam;
  


CREATE TABLE almacen (


idalmacen INT NOT NULL AUTO_INCREMENT ,


cantidad INT NULL , 


idproductoalm int,


index fkindex(idproductoalm), /*un producto es guardado en almacén para después distribuir a tienda*/


PRIMARY KEY (idalmacen))engine=myisam;
  


CREATE TABLE compras ( /*comprando productos a un proveedor*/


idcompra INT NOT NULL AUTO_INCREMENT ,


fecha DATE NULL , /*fecha de la compra*/


cantidad_pro int, /*cantidad total de artículos comprados*/


total DECIMAL(12,2) NULL , /*total de dinero de los artículos comprados*/


idproductocom INT NOT NULL , 


index fkindex(idproductocom), /*conexión con los productos que necesitamos comprar*/


iddetcomprascom int,


index fkindex2(iddetcomprascom),/*una compra tiene un detalle*/



PRIMARY KEY (idcompra))engine=myisam;


CREATE TABLE detcompras(


iddetcompras int not null auto_increment,


cantidad_ind INT NULL ,  /*cantidad individual de cada producto*/


precio DECIMAL(12,2) NULL , /*precio de compra*/


subtotal decimal(12,2), /* total de la suma a pagar por ese producto*/


primary key(iddetcompras));
 
CREATE TABLE cliente (


idcliente INT NOT NULL AUTO_INCREMENT ,


nombre VARCHAR(255) NULL ,


direccion TEXT NULL ,


telefono VARCHAR(20) NULL ,


PRIMARY KEY (idcliente))engine=myisam;




CREATE TABLE empleado (


idempleado INT NOT NULL AUTO_INCREMENT ,


nombre VARCHAR(255) NULL ,


direccion varchar(255) NULL ,


telefono VARCHAR(20) NULL ,


usuario varchar(100),


contrasenia varchar(100),


sexo CHAR(2) NULL ,


fecha_nacimiento DATE NULL ,


cargo VARCHAR(30) NULL ,


PRIMARY KEY (idempleado))engine=myisam;
  


CREATE TABLE ventas ( /*ES ÚNICAMENTE PARA ALMACENAR TODO EL PROCESO DE VENTA DE UN PRODUCTO*/


idventa INT NOT NULL AUTO_INCREMENT ,    /*SI TIENE RELACIÓN CON EL EMPLEADO Y EL CLIENTE*/


fecha date,


total decimal(12,2), /* total de la suma a pagar por ese pro*/
      idclienteven int,


idempleadoven int,


Consec varchar(50) not null,


INDEX fkindex1(idclienteven),


INDEX fkindex2(idempleadoven),


PRIMARY KEY (idventa))engine=myisam;



CREATE TABLE detventas(


iddetventas varchar(50) not null,


cantidad INT NULL ,  /*cantidad individuall de cada producto*/


nombre varchar(255),


precio DECIMAL(12,2) NULL , /*precio de compra*/
subtotal DECIMAL(12,2),


iddetventasven int,


INDEX fkindex(iddetventasven),


primary key(iddetventas))engine=myisam;

Hasta aquí lo dejo en esta entrega, más adelante seguiremos trabajando en esta aplicación.

Les dejo los enlaces para descargar el pdf de esta lección:

En Mega: Creación de la Base de Datos

En DropBox: Creación de la Base de Datos


    Query de la Base de Datos 

Cualquier duda o comentario no dudes en escribirme.
  

Punto de Venta con Visual Basic 2010 y MySQL (1)

Diseño de un software para un ferretería

Este ejemplo puede ser aplicado para una tienda, zapatería, veterinaria y todo aquel negocio que venda algo.

Los formularios que se desarrollarán en VB.NET son:
  • Login
  • Menú contenedor
  • Proveedor
  • Productos
  • Clientes
  • Empleados
  • Punto de Venta
  • Reportes por ventas
  • Reportes por día
  • Reportes por fecha
En VB crear un nuevo proyecto y llamarlo Punto_de_Venta






Recuerden siempre guardar todo el proyecto cada vez que hagan algún cambio, ya sea con Ctrl + S o dando clic al ícono de tres disquetes, en la parte superior izquierda.

Formulario Login: frmLogin
Nomenclatura:
Título: lblTitulo
Usuario: lblUsuario
Contraseña: lblContrasenia
Imagen de usuario: picUsuario
Imagen de candado: picContrasenia
Botón aceptar: btnAceptar
Botón Salir: btnSalir
Imagen señor: picFerreteria


Como observarán, los controles están encerrados en un GroupBox.

Formulario Contenedor: frmPuntoVenta



 Insetar un control MenuStrip e ingresar las siguientes opciones:

Nomenclatura:
Menú Principal: mnuPrincipal
Menú Catálogos: mnuCatalogos
Menú Productos: mnuProductos
Menú Proveedor: mnuProveedor
Menú Empleado: mnuEmpleado
Menú Ventas: mnuVender
Menú Ventas: mnuVentas
Menú Reporte de ventas: mnuReportes
Menú Salir: mnuSalir



Agregamos un nuevo formulario Producto: frmProducto
 Nomenclatura
Recuerden ver la sección de Nomenclatura en Visual Basic para que los controles que se utilizarán en la aplicaciones tengan la nomenclatura correspondiente y no se pierdan cuando se coloque código.



Como observarán, tiene dos GroupBox, uno en donde están los Label y TextBox para ingresar datos, y otro, donde están los botones para trabajar con los datos.
El rectángulo que está abajo es un DataGridView y tiene por nombre dgvProducto,

Agregamos un nuevo formulario Proveedor: frmProveedor



Agregamos un nuevo formulario Cliente: frmCliente



Agregamos un nuevo formulario Empleado: frmEmpleado



Y por último, agregamos un nuevo formulario para Vender: frmVenta




Hasta aquí lo dejo en esta entrega, más adelante seguiremos trabajando en esta aplicación.



Les dejo los enlaces para descargar el pdf de esta lección:

En Mega: Ejemplo de un Punto de Venta.pdf

En DropBox: Ejemplo de un Punto de Venta


Descargar el query de la BD 

  Cualquier duda o comentario no dudes en escribirme.

Desarrollo de una aplicación con Visual Basic 2010, MySQL 5 y Crystal Reports

Muchas veces, los universitarios tienen que buscar en la web ejemplos de desarrollo de aplicaciones para escritorio en el lenguaje de VB.NET con acceso a base de datos y les es muy difícil hallar información detallada y en español.

Iré desarrollando, paso a paso un software de Punto de Venta para una ferretería, que puede ser adaptado a una tienda, a una zapatería, a una veterinaría y en todo comercio donde se venda algo.

Espero que con esta contribución puedas enriquecer tus conocimientos en programación y más adelante, compartas tus experiencias a otros en la red.

El desarrollo del software será específicamente en el lenguaje VB.NET, el Gestor de Base de Datos MySQL 5.1 y para la elaboración de Reportes Crystal Report.

Asumo que tienes conocimientos básicos de programación, de todas maneras, si tuvieras dudas concretas, no dudes en preguntar.

sábado, 3 de agosto de 2013

Nomenclatura en Visual Basic 2010


Convención para nombrar objetos en Visual Basic 2010

En ocasiones, cuando reviso los códigos de mis alumnos para ayudarlos en alguna duda, noto que los nombres de los controles de VB son como salen por default cuando lo  agregan en su formulario, lo cual resulta un poco difícil apoyarlos de manera rápida.






Sugiero que siempre que se pueda, cuando programen, utilicen nomenclatura para los nombres de los controles, pues de esa manera, es posible entender de manera ágil lo que se desea hacer en el proyecto.

Consiste en anteponer a los nombres de los controles un prefijo - generalmente - tres letras, correspondientes al  tipo de control. 



Luego, se prosigue con el nombre que mejor describa lo que el control hace, sin separaciones con caracteres especiales, sino especificando con mayúscula los nombres de las palabras que lo conforman.

 Objeto          Objeto en español          Prefijo 
Form                                     Formulario                                   frm
CheckBox                      Casilla de verificación                            chk
Button                                   Botón                                          btn
ComboBox                     Cuadro combinado                                cbo
Image                                  Imagen                                         img
Label                                   Etiqueta                                         lbl
PictureBox                     Cuadro de imagen                                 pic
TextBox                         Cuadro de texto                                    txt
DataGridView          Cuadrícula (o rejilla) para ver datos               dgv

Y así se puede ir dando el prefijo de todos los controles utilizados en VB 2010.

Complementación
Transcribo a continuación de la página de soporte de Microsoft la lista completa de prefijos de nombres de objeto estándar de MCS de los controles en Visual Basic: 


Prefix    Object Type                           Example
-------------------------------------------------------
ani       Animation button                      aniMailBox
bed       Pen Bedit                             bedFirstName
cbo       Combo box and drop down list box      cboEnglish
chk       Checkbox                              chkReadOnly
clp       Picture clip                          clpToolbar
cmd (3d)  Command button (3D)                   cmdOk (cmd3dOk)
com       Communications                        comFax
ctr       Control (when specific type unknown)  ctrCurrent
dat       Data control                          datBiblio
dir       Directory list box                    dirSource
dlg       Common dialog control                 dlgFileOpen
drv       Drive list box                        drvTarget
fil       File list box                         filSource
frm       Form                                  frmEntry
fra (3d)  Frame (3d)                            fraStyle (fra3dStyle)
gau       Gauge                                 gauStatus
gpb       Group push button                     gpbChannel
gra       Graph                                 graRevenue
grd       Grid                                  grdPrices
hed       Pen Hedit                             hedSignature
hsb       Horizontal scroll bar                 hsbVolume
img       Image                                 imgIcon
ink       Pen Ink                               inkMap
key       Keyboard key status                   keyCaps
lbl       Label                                 lblHelpMessage
lin       Line                                  linVertical
lst       List box                              lstPolicyCodes
mdi       MDI child form                        mdiNote
mpm       MAPI message                          mpmSentMessage
mps       MAPI session                          mpsSession
mci       MCI                                   mciVideo
mnu       Menu                                  mnuFileOpen
opt (3d)  Option Button (3d)                    optRed (opt3dRed)
ole       OLE control                           oleWorksheet
out       Outline control                       outOrgChart
pic       Picture                               picVGA
pnl3d     3d Panel                              pnl3d
rpt       Report control                        rptQtr1Earnings
shp       Shape controls                        shpCircle
spn       Spin control                          spnPages
txt       Text Box                              txtLastName
tmr       Timer                                 tmrAlarm
vsb       Vertical scroll bar                   vsbRate

viernes, 2 de agosto de 2013

¿Existe un mejor lenguaje para programar?

Una de las preguntas más frecuentes en los foros para principiantes es “¿Cómo iniciarse en programación?”, “¿Qué lenguaje de programación aprender primero?” o "¿Cuál es el mejor lenguaje de programación?"


Para intentar ser objetivo, me he basado en las opiniones sobre estas preguntas de los foros de programación.

Hay lenguajes de propósito general y para tareas muy específicas. Algunos son de muy bajo nivel y otros de alto nivel. Todos tienen pros y contras y es común que los universitarios no sepan decidir cuál es el bueno.

La realidad es que todos los lenguajes pueden ser buenos, pero hay unos que sin duda son mejores, hay lenguajes gratuitos, las hay de paga con licencias de prueba y las hay para estudiantes (que viene siendo una versión limitada comparada con la de paga).

Si hay que elegir mejores o peores, creo que su elección sería por su costo y licenciamiento.
Prefiero lenguajes abiertos, donde se va a encontrar documentación, código en mayor cantidad y calidad.

Los lenguajes abiertos permiten mejor su difusión al igual que nuevas actualizaciones, las comunidades son más grandes.
Tienen un menor costo, no hay que pagar licencias por los entornos de desarrollo y llegado el caso de ser necesario por sus servidores. Esto hace más accesible.



¿Lenguaje orientado a objetos?  ¿Multiplataforma?  ¿Con máquina virtual?  ¿Interfaz de usuario?
¿Acceso a una base de datos? ¿Si es así, cuál? 

Para desarrollo web utilizaría: Ruby, Python, Perl, Java o PHP.
Para desarrollo de Aplicaciones: Java, C, C++, C#, VB.NET
Para Administración de Sistemas: Perl, Python.

En cuanto al desarrollo de aplicaciones (o software o programas de escritorio) sin lugar a dudas C# es muy bueno, pero si empiezas a programar en .Net quizas te sea mas fácil Visual Basic.Net al final y por mi experiencia, acabarás utilizando los dos lenguajes siempre dependerá del proyecto que tengas que hacer o mantener en algún cliente.