Punto de Venta Visual Basic (Parte 1)

Siguiente Ejercicio
Requisitos
  • Visual Studio 2010
  • Microsoft Access 2007/2010
Diseño de la Base de datos Creamos una base de datos en Access con las siguientes características:
Creación del Proyecto Creamos un proyecto llamado PVenta2012 a través de Visual Studio 2010:
Organizamos nuestro proyecto:
Agregaremos tres carpetas y eliminaremos el formulario predeterminado (Form1.vb) pues no lo necesitamos. Además, a las carpetas les agregamos dos formularios y un módulo respectivamente, como se muestra en la imagen. Formulario de Inicio de Sesión (frmLogin.vb) Agregamos dos directivas:
Imports System.Data
Imports System.Data.OleDb
Agregamos las siguientes variables:
    Dim Intentos As Integer = 0
    Public Shared UserLogin As String
    Public Shared Nombre As String
    Public Shared Apellidos As String
    Public Shared Ventas As Boolean
    Public Shared Reportes As Boolean
    Public Shared Administrar As Boolean
    Public Shared Catalogos As Boolean
    Public Shared Acceso As Boolean
Ponemos el siguiente código en modMain.vb:
Module modMain
    Public CnnStr As String =
     "Provider=Microsoft.ACE.OLEDB.12.0;" & _
           "Data Source=C:\Users\ddi-gcastillo\" & _
           "Documents\tyrodeveloper\PVenta2012\PVenta2012.accdb;" & _
           "Persist Security Info=False;"
    Sub Main()
        Dim _frmLogin As New frmLogin
        _frmLogin.StartPosition = FormStartPosition.CenterScreen
        Application.Run(_frmLogin)
        If (frmLogin.Acceso = True) Then
            Dim _mdiMain As New mdiMain
            _mdiMain.StartPosition = FormStartPosition.CenterScreen
            _mdiMain.WindowState = FormWindowState.Maximized
            Application.Run(_mdiMain)
        Else
            Application.Exit()
        End If
    End Sub
End Module
Regresamos a frmLogin.vb, escribimos la siguiente función:
    Protected Function Login() As Boolean
        Dim cnn As New OleDbConnection(CnnStr)
        Try
            cnn.Open()
            Dim cmd As New OleDbCommand
            cmd.Connection = cnn
            cmd.CommandText = "SELECT * FROM USERS " & _
                " WHERE USER_LOGIN=@user_login " & _
                " AND USER_PASSWORD=@user_password"
            cmd.Parameters.Add("@user_login", OleDbType.VarChar, _
                               50).Value = txtUserLogin.Text
            cmd.Parameters.Add("@user_password", OleDbType.VarChar, _
                               255).Value = txtUserPassword.Text
            Dim dr As OleDbDataReader = cmd.ExecuteReader
            If dr.Read Then
                UserLogin = dr("USER_LOGIN").ToString()
                Nombre = dr("NOMBRE").ToString()
                Apellidos = dr("APELLIDOS").ToString()
                Ventas = CBool(dr("VENTAS"))
                Reportes = CBool(dr("REPORTES"))
                Administrar = CBool(dr("ADMINISTRAR"))
                Catalogos = CBool(dr("CATALOGOS"))
            Else
                Intentos += 1
                Throw (New Exception( _
                       "Nombre de Usuario o contraseña incorrectos"))
            End If
            dr.Close()
            Return True
        Catch ex As Exception
            Throw (ex)
        Finally
            cnn.Close()
        End Try
    End Function
Luego ponemos el código del botón “Aceptar”:
    Private Sub btnOk_Click(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                        Handles btnOk.Click
        Try
            If (Intentos >= 3) Then
                Acceso = False
                MessageBox.Show("Numero de Intentos Excedidos", _
                                "Información del Sistema", _
                                MessageBoxButtons.OK, _
                                MessageBoxIcon.Error)
                Me.Close()
            Else
                Acceso = Login()
                If (Acceso) Then
                    Me.Close()
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Información del Sistema", _
                            MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
A continuación configuramos el proyecto, nos vamos a las propiedades y establecemos el objeto inicial:

12 comentarios:

  1. esta muy interesante tu programa estoy siguiendolo espero tu nueva actualizacion para reportes gracias

    ResponderEliminar
  2. No pusiste como luce el form del login ni que elementos debe de llevar a excepción del botón, uhm... muy buena guía por cierto pero sólo ese detalle.

    ResponderEliminar
  3. upsssn espero y me sirva si no ya vali

    ResponderEliminar
  4. Rafael Torres Hipólito10 de agosto de 2012, 12:28

    Hola buenas tardes.

    Excelente tu trabajo. Justo es lo que andaba buscando. Ahora me falta entenderlo para realmente considerar que he aprendido.

    Gracias por ser tan generoso (a)

    ResponderEliminar
  5. Esta muy bueno eso se puede utilizar como para guardar tan bien a la base de datos en access.

    ResponderEliminar
  6. EXCELENTE PERO M DA UN ERROR EN Public Shared

    ResponderEliminar
  7. Hola! Quisiera saber los tipos de los campos de la base de datos

    ResponderEliminar
  8. Hola! Quisiera saber los tipos de los campos de la base de datos

    ResponderEliminar
  9. hola Juan Gabriel Castillo

    como puedo actualizar la cantidad de ventas

    ResponderEliminar
  10. Hola Juan Gabriel castillo buenos

    Días tu aplicación de ejemplo es muy buena me gusta la entiendo y la he realizado me sale muy bien claro q me toco declara algunas variable que no estaban definidas y bn ya me guarda la venta y todo pero me gustaría que me dieras un tic par que el descuento se reste al momento de la venta mostrarlo
    Resolví la opción de hacer la venta de varios productos con el mismo código y el en la misma venta el código de usted no tiene este tic de segmentos de códigos para crear compatibilidad y estabilidad al usuario

    ResponderEliminar
    Respuestas
    1. Hola, gracias por tu comentario.
      Si me explicas detalladamente como es que definirás el descuento, yo te explico como mostrarlo (ya descontado). aunque pienso que en el momento que definas como lo mostrarás será muy sencillo hacer que se muestre correctamente.
      Saludos

      Eliminar
    2. una pregunta en que carpeta guardas el documento de access en el proyecto de VB m sale este error:
      C:\Users\Alvin\" & _ "Documents\Visual Studio 2012\Projects\PVenta2012\PVenta2012.accdb;" & _
      "Persist Security Info=False;"

      Eliminar