Crear un punto de venta (3 de 10)

InicioAnteriorSiguienteFinal

Pantalla para administrar los usuarios del sistema

Continuamos con el proyecto proTienda_MATRICULA.

Contenido:

• Diseño de las pantallas
• Programación

Recordemos que en el primer ejercicio creamos un formulario para que los usuarios inicien sesión en la aplicación. En esta ocasión crearemos un formulario que nos permita administrar a los usuarios que tengan derecho a los recursos del sistema.

Diseño de las Pantallas:

Agregaremos un formulario al cual nombraremos frmUsers.

A continuación agregaremos un ToolStrip al formulario recién creado, Etiquetas, Cajas de Texto y casillas de verificación como se muestra a continuación.

El formulario frmUsers, deberá quedar como se muestra:




Según la información de la siguiente tabla:



Los botones del ToolStrip (barUsers), de izquierda a derecha:



Por un momento dejaremos este formulario para hacer algunas adecuaciones a mdiMain. Le agregaremos un MenuStrip para que quede como se muestra a continuación:



Según la información de la siguiente tabla:



Los menús del MenuStrip deberán ser como se muestra en la siguiente tabla:



Al menú mnuArchivo se le agregarán tres submenús, como se muestra en la siguiente imagen:



Según la información de la siguiente tabla:



Al menú mnuAdministrar se le agregará un submenú, como se muestra en la siguiente imagen:



Según la información de la siguiente tabla:




Programación:

Empezamos con mdiMain. Hacemos sobre clic sobre el formulario y escribimos el siguiente código en el Form_Load:

//Form_Load
this.Text = "Módulo de Control de Ventas, usuario: " +
frmLogin._NOMBRE + " " +
frmLogin._PATERNO + " " +
frmLogin._MATERNO;
mnuVentas.Enabled = frmLogin._VENTAS;
mnuAdministrar.Enabled = frmLogin._ADMINISTRAR;
mnuReportes.Enabled = frmLogin._REPORTES;
mnuConsultas.Enabled = frmLogin._CONSULTAS;
mnuCatalogos.Enabled = frmLogin._CATALOGOS;


El código anterior se encarga de habilitar o deshabilitar los menús, siempre dependiendo de los permisos que tenga el usuario que inició sesión en el sistema.

Hacemos doble clic sobre el submenú “Usuarios del sistema” (mnuUsuarios), accedemos a su código y le ponemos el siguiente:

Forms.frmUsers _frmUsers = new frmUsers();
_frmUsers.MdiParent = this;
_frmUsers.StartPosition = FormStartPosition.Manual;
_frmUsers.Show();


Hacemos doble clic sobre el submenú “Salir del sistema” (mnuSalir) para ponerle el siguiente código:

this.Close();


Lo más interesante que hemos logrado hasta aquí es la parte de los permisos. Si recordamos lo que hicimos en frmLogin, en la función fnLogin, en la parte en donde le damos los valores para los permisos; bueno, pues estos permisos se ven reflejados en esta pantalla. De esta manera podemos observar una manera fácil de lograr que los objetos compartan sus valores y lograr que interactuen entre ellos.
Posteriormente podremos ver mejores muestras de interacción entre los objetos, por ahora, puedo decir que hemos aprendido a leer los valores contenidos en las variables public static.
Quizá para muchos es complicado comprender el código aquí expuesto. Mis disculpas a todos aquellos en quienes no he logrado hacer llegar la idea del código que se presenta aquí. Ni el mas experto de los programadores nació con el conocimiento, en algunas ocasiones nos vemos en la necesidad de practicar con el código de otros para poder salir adelante con el trabajo.
Me he dispuesto a preparar este tutorial para que se den cuenta todos los conocimientos que se requieren para la realización de un simple punto de venta.

Ahora seguiremos con frmUsers. El código aquí mostrado es simple aunque algo extenso. En la sección de las directivas:

using System.Data.OleDb;
using System.Data;


En la sección de declaraciones:

//Las variables van aqui
static OleDbConnection cnnUsers;
static OleDbDataAdapter daUsers;
static OleDbCommandBuilder cbUsers;
DataSet dsUsers = new DataSet("dsUsers");
CurrencyManager cmUsers;


//Aquí el Form_Load 
this.Closing +=
new System.ComponentModel.
CancelEventHandler(frmUsers_Closing);
cnnUsers = new OleDbConnection(Class.clsMain.CnnStr);
daUsers = new OleDbDataAdapter();
daUsers.SelectCommand = new OleDbCommand("SELECT *" +
" FROM USERS", cnnUsers);
cbUsers = new OleDbCommandBuilder(daUsers);
if (cnnUsers.State == ConnectionState.Open)
cnnUsers.Close();
cnnUsers.Open();
dsUsers.Clear();
daUsers.Fill(dsUsers, "USERS");
txtUSER_LOGIN.DataBindings.Add("Text", dsUsers,
"USERS.USER_NAME");
txtPASSWORD.DataBindings.Add("Text", dsUsers,
"USERS.USER_PASSWORD");
txtPATERNO.DataBindings.Add("Text", dsUsers,
"USERS.PATERNO");
txtMATERNO.DataBindings.Add("Text", dsUsers,
"USERS.MATERNO");
txtNOMBRE.DataBindings.Add("Text", dsUsers,
"USERS.NOMBRE");
chkADMINISTRAR.DataBindings.Add("Checked", dsUsers,
"USERS.ADMINISTRAR", false);
chkVENTAS.DataBindings.Add("Checked", dsUsers,
"USERS.VENTAS", true);
chkREPORTES.DataBindings.Add("Checked", dsUsers,
"USERS.REPORTES", true);
chkCATALOGOS.DataBindings.Add("Checked", dsUsers,
"USERS.CATALOGOS", true);
chkCONSULTAS.DataBindings.Add("Checked", dsUsers,
"USERS.CONSULTAS", true);
chkDESHACER_VENTA.DataBindings.Add("Checked", dsUsers,
"USERS.DESHACER_VENTA", true);
cmUsers = (CurrencyManager)this.BindingContext[dsUsers, "USERS"];
cnnUsers.Close();


teclear el siguiente código, tal como se muestra:

void frmUsers_Closing(object sender, 
System.ComponentModel.CancelEventArgs e){
try{
if (cnnUsers.State == ConnectionState.Open)
cnnUsers.Close();
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}


En btnNuevo:

            //Agregar un registro
cmUsers.AddNew();


En btnCancelar:

            //Cancelar
cmUsers.CancelCurrentEdit();


En btnGrabar:

//Grabar
try{
cmUsers.EndCurrentEdit();
if (cnnUsers.State == ConnectionState.Open)
cnnUsers.Close();
cnnUsers.Open();
daUsers.Update(dsUsers, "USERS");
cnnUsers.Close();
}
catch (Exception ex) {
MessageBox.Show(ex.Message + "" + ex.StackTrace);
}


En btnEliminar:

//Eliminar
try{
DialogResult Resp = new DialogResult();
Resp = MessageBox.Show("¿Desea Eliminar al usuario?",
"Eliminar", MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (Resp == DialogResult.Yes)
{
cmUsers.RemoveAt(cmUsers.Position);
if (cnnUsers.State == ConnectionState.Open)
cnnUsers.Close();
cnnUsers.Open();
daUsers.Update(dsUsers, "USERS");
cnnUsers.Close();
}
}
catch (Exception ex){
MessageBox.Show(ex.Message);
}


Para btnInicio:

            //Navegar al 1er registro
cmUsers.Position = 0;


Para btnAnterior:

            //Navegar un registro hacia atraz          
cmUsers.Position -= 1;


Para btnSiguiente:

            //Navergar un registro hacia adelante
cmUsers.Position += 1;


Para btnFinal:

            //Navegar al último registro
cmUsers.Position =
cmUsers.Count - 1;


Para btnCerrar:

this.Close();


Hasta aquí llegamos.

Suerte y hasta la próxima...

12 comentarios:

  1. hola estoy interesado en tu tutorial!!
    me gustaria que subieras las pantallas!
    o que me lo mandaras por correo seria de mucha ayuda gracias!!!!

    kaim_e@hotmail.com

    ResponderEliminar
  2. HOLA ME INTERESA ESA PARTE E ADMINISTRACION DE MENUS PARA DETERMINADO USUARIO ME GUSTARIA UN EJEMPLO CON UNA BASE DE DATOS PARA GENERARLO YO MISMO ME GUSTARIA QUE ME AYUDES Y ME ENVIES UN EJEMPLO CLARO DE COMO REALIZAR ESA PARTE GRACCIIIIAAASSSSS
    MI CORREO ES
    richardt_2000@hotmail.com

    ResponderEliminar
  3. holaamigo tu tutorial esta exlente entendible tienes todo para que me o venas o pases gracias lajaurianike@hotmail.com

    ResponderEliminar
  4. amigo, gracias por los tutoriales esto me ha hecho en realidad aprender aprogramas mas, estoy teniendo un problema, y deseo una ayuda como puede uno cambiar los estilos de los formularios incluyendo el de los bordes estoy buscando informacion de esto cualquier ayuda mandar email a la direccion elruffo@gmail.com

    gracias mil.....

    ResponderEliminar
  5. Hola amigo, me llamo Juan Jose, te doy las gracias por poner tu conocimiento al servicio de los demas y me gusto mucho haber encontrado este sitio en la web.
    Me gustaria que me enviaras el tutorial del punto de ventas, mi correo es juanjo_saire@hotmail.com te agradezco de ante mano.

    ResponderEliminar
  6. HOLA EN QUE PARTE VA ESTE CODIGO SOY NUEVO EN ESTO.

    void frmUsers_Closing(object sender, System.ComponentModel.CancelEventArgs e){ try{ if (cnnUsers.State == ConnectionState.Open) cnnUsers.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); }}

    ResponderEliminar
  7. Alguien lo a intentado hacer en SQL Server 2008 ya que el archivo del labellink te conecta a la base de datos pero de acces espero su ayuda y gracias este es mi correo yotuel_my@hotmail.com

    ResponderEliminar
  8. Alguien me podria facilitar la base de datos??

    S_Juanito@outlook.com

    ResponderEliminar
  9. Yo voy ya en el paso 6 y no le habia probado el programa cuando le doy el usuario y el password me manda que la base de datos no existe y le doy buscar y selecciono la base de datos y sigue diciendo que la base de datos no existe y dice fnLogin no se ha inicializado la propiedad ConnectionString alguien le sale lo mismo?

    ResponderEliminar
  10. Disculpa yo ya hize todo como lo indicas, pero al iniciar depuración me dice que debe de selecionar la ruta de depuración o modificar OutputPath y AssemblyName

    Espero y pueden ayudarme Gracias

    ResponderEliminar
  11. Recientemente descubrí un software para tiendas de juguetes que realmente ha cambiado mi manera de administrar las ventas. Es sorprendente cómo una herramienta especializada puede hacer la diferencia en la eficiencia del día a día. Les recomiendo echar un vistazo a Aizu Lite para experimentar esta mejora en sus negocios.

    ResponderEliminar