Base para un sistema C# - (Parte 2)


En el ejercicio anterior nos quedamos en el diseño de la clase "clsUsuario" y escribimos el código correspondiente.

Ahora, lo que haremos será modificar la clase "clsPrincipal", le agregaremos las siguientes líneas:

public static string CnnStr
{
    get
    {
        string fileName =
            String.Format("{0}\\BaseSistema.accdb", 
            Application.StartupPath);
        if (File.Exists(fileName))
        {
            return (String.Format("Provider=Microsoft.ACE.OLEDB.12.0; " +
                " Data Source={0}; Jet OLEDB:Database Password=;" +
                " Persist Security Info=False;", fileName));
        }
        else
        {
            throw (new Exception(String.Format("No se encontró\n{0}", 
                fileName)));
        }
    }
}
static bool exit = false;
public static Boolean Exit
{
    get { return exit; }
    set { exit = value; }
}

Con éstas líneas, lo que vamos a lograr es, primero, que nuestro sistema sea capaz de ubicar la base de datos en el mismo directorio en el que se encuentra el ejecutable, segundo, le daremos la posibilidad de conocer si es el momento de salir o no.

Una vez hecho esto, procedemos a escribir el código de nuestro formulario de login, agregamos las siguientes líneas:

int Intentos = 0;
public static Clases.clsUsuario usuario = new Clases.clsUsuario();

Luego, ponemos el código del botón "Aceptar":

try
{
    if (Intentos >= 3)
    {
        MessageBox.Show("Limite de intentos excedidos", 
            "Información del Sistema", 
            MessageBoxButtons.OK, MessageBoxIcon.Error);
        this.Close();
    }
    else
    {
        Intentos += 1;
        usuario.IniciarSesion (txtUserLogin.Text, txtUserPassword.Text);
        if (usuario.SUCCESS)
        {
            this.Close();
        }
    }
}
catch (Exception ex) {
    MessageBox.Show(ex.Message, "Información del Sistema", 
        MessageBoxButtons.OK, MessageBoxIcon.Error); 
}

Este sería el código del "Form_Load":

Clases.clsPrincipal.Exit = true;

Y éste el código del botón "Cancelar":

Clases.clsPrincipal.Exit = true;
this.Close();

Luego de haber hecho esto, solo debemos modificar la clase "clsPrincipal", para que controle el flujo del programa, agregamos el siguiente código:

[STAThread]
static void Main()
{
    while (!exit)
    {
        //Remover cuando el sistema esté pagado

        Application.EnableVisualStyles();
        Formularios.frmLogin loginForm = new Formularios.frmLogin();
        loginForm.StartPosition = FormStartPosition.CenterScreen;
        Application.Run(loginForm);

        if (Formularios.frmLogin.usuario.SUCCESS == true)
        {
            Formularios.frmPrincipal mainForm =
                new Formularios.frmPrincipal();
            Application.Run(mainForm);
        }
        else
        {
            Application.Exit();
        }
    }
}

Ahora, debemos poner mucha atención de modicar la clase "clsUsuario", para especificar la cadena de conexión, ubiquemos el método "Iniciar Sesión", la siguiente línea:

OleDbConnection cnnLogin = new OleDbConnection("");

Deberá quedar así:

OleDbConnection cnnLogin = new OleDbConnection(Clases.clsPrincipal.CnnStr);

Copiar ahora la base de datos al directorio del ejecutable.



Si hicimos todo bien, el sistema debería funcionar bien al ejecutarlo, solo nos faltaría agregar las siguientes líneas al "Form_Load" del formulario "frmPrincipal":

//Ventas
btnVentas.Visible = frmLogin.usuario.VENTA;
//Almacén
separadorAlmacen.Visible = frmLogin.usuario.ALMACEN;
btnEntradas.Visible = frmLogin.usuario.ALMACEN;
btnSalidas.Visible = frmLogin.usuario.ALMACEN;
//Reportes
mnuReportes.Visible = frmLogin.usuario.REPORTES;
//Catalogos
mnuCatalogos.Visible = frmLogin.usuario.CATALOGOS;
//Administrar
mnuAdministrar.Visible = frmLogin.usuario.ADMINISTRAR;

Listo, hemos terminado.

Ejemplo de ejecución:





ANTERIOR

2 comentarios:

  1. AYUDENME a resolver una pequeña ERROR donde Application.StartupPath lo q pasa es un error q no reconoce esta extension de comando.

    ResponderEliminar