SlideShare a Scribd company logo
1 of 16
Download to read offline
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 1 Versión: 20150212
EJEMPLO CON CONTROL DE PERMISOS O NIVELES DE USUARIO
MODIFICAR LAS PROPIEDADES DEL PROYECTO
Menú proyecto / propiedades de facturación (o como se llame el proyecto
Deshabilitamos  habilitar marco de trabajo de la aplicación.
En la opción OBJETO DE INICIO  sub main
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 2 Versión: 20150212
AHORA NECESITAREMOS UN MODULO
Lo primero que haremos será crear un Módulo con el siguiente código:
Module miModulo
Private usuarioAutenticado As Boolean = False ''para verificar si logró iniciar sesión
Private nombreDeUsuario As String
Private nivelDelUsuario As String
Public Sub Main()
'' habilitamos los estilos visuales
Application.EnableVisualStyles()
'' mostramos el usuario de login
Dim frmlogin As New frmAutenUsuar
frmlogin.ShowDialog()
If (usuarioAutenticado = True) Then
'' mostramos el formulario principal
Application.Run(frmPrincipal)
End If
End Sub
Public Property userAutenticado() As Boolean '' similar encapsulacion en poo
Get
Return usuarioAutenticado
End Get
Set(ByVal Value As Boolean)
usuarioAutenticado = Value
End Set
End Property
Public Property userNombre() As String ''USER NOMBRE ALMACENA EL NOMBRE DEL USUARIO
Get
Return nombreDeUsuario
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 3 Versión: 20150212
End Get
Set(ByVal value As String)
nombreDeUsuario = value
End Set
End Property
Public Property userNivel() As String ''USERNIVEL ALMACENA EL NIVEL DEL USUARIO
Get
Return nivelDelUsuario
End Get
Set(value As String)
nivelDelUsuario = value
End Set
End Property
End Module
AHORA CREAMOS EL FORMULARIO DE INGRESO Y LO CODIFICAMOS
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 4 Versión: 20150212
Imports MySql.Data
Imports MySql.Data.MySqlClient
Public Class frmAutenUsuar
Public intentos As Integer = 0 '' VARIABLE PARA CONTROLAR LOS INTENTOS DE LOGUE
'' LA FUNCION EXISTE USUARIO() ES LA ENCARGADA DE VERIFICAR SI EL USUARIO EXISTE EN LA BASE DE DATOS
Function existeusuario(ByVal usuario As String, ByVal password As String) As Boolean
Dim conexion As New MySqlConnection
Dim da As New MySqlDataAdapter
Dim ds As New DataSet
Dim consulta As String
Dim autenticado As Boolean = False
Try
conexion.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura;persist security info=false"
consulta = "select user, password, tipoUsuario from usuarios where user='" & usuario & "' and password ='" & password & "';"
conexion.Open()
da = New MySqlDataAdapter(consulta, conexion)
ds.Clear() '' LIMPIAMOS EL DATASET
da.Fill(ds, "usuarios") ''LLENAMOS EL DATAADAPTER CON EL CONTENIDO DE LA TABLA USUARIOS
If (ds.Tables("usuarios").Rows.Count() = 0) Then '' PREGUNTAMOS SI NO HUBO RESULTADOS PARA SABER SI EL USUARIO NO EXISTE
intentos = intentos + 1
If intentos > 2 Then
MessageBox.Show("Ha sobre pasado el numero de intentos permitidos", "Autenticación de Usuarios", MessageBoxButtons.OK)
Application.Exit()
Else
MessageBox.Show("Usuario y/o contraseña no válidos", "Autenticación de usuarios", MessageBoxButtons.OK)
txtusuario.Text = ""
txtpassword.Text = ""
txtusuario.Focus()
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 5 Versión: 20150212
End If
autenticado = False ''EL USUARIO NO SE AUTENTICÓ
Return (False) '' LA FUNCIÓN RETORNA QUE EL USUARIO NO EXISTE
Else
'' SI EL USUARIO EXISTE, ENTONCES PROCEDEMOS A CONSULTAR Y ALMACENAR LOS DATOS DEL USUARIO EN LAS PROPIEDADES QUE
'' CREAMOS EN EL MODULO COMO PROPERTY
Dim sqluser As MySqlCommand = New MySqlCommand
Dim sqlnivel As MySqlCommand = New MySqlCommand
sqluser.Connection = conexion
sqlnivel.Connection = conexion
sqluser.CommandText = "select user from usuarios where user = '" & usuario & "';"
userNombre = sqluser.ExecuteScalar()
sqlnivel.CommandText = "select tipoUsuario from usuarios where user = '" & usuario & "';"
userNivel = sqlnivel.ExecuteScalar()
MessageBox.Show("Bienvenido al Sistema " + userNombre + ". Su nivel de permisos es: " + userNivel, "Autenticación de
Usuarios", MessageBoxButtons.OK)
autenticado = True '' LA FUNCION DEVUELVE ENTONCES QUE EL USUARIO SI EXISTE Y SE PUEDE LOGUAR
userAutenticado = True
Return (True)
End If
Catch ex As Exception
MessageBox.Show("Ocurrió un error al intentar autenticarse. ERROR: ", "Autenticación de Usuarios", MessageBoxButtons.OK)
End Try
conexion.Close() '' CERRAMOS LA CONEXION DE LA BASE DE DATOS
Return (True)
End Function
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 6 Versión: 20150212
Private Sub btnSalir_Click(sender As System.Object, e As System.EventArgs) Handles btnSalir.Click
Application.Exit() ''DETENEMOS LA EJECUCIÓN DE LA APLICACIÓN
End Sub
Private Sub btnIngresar_Click(sender As System.Object, e As System.EventArgs) Handles btnIngresar.Click
'' SI EL USUARIO EXISTE, LE ENVIAMOS LOS DATOS DEL LOGUEO AL MODULO
If existeusuario(txtusuario.Text, txtpassword.Text) Then
miModulo.userAutenticado = True
Me.Close() ''CERRAMOS EL FORMULARIO DE INGRESO
End If
End Sub
End Class
AHORA CREAMOS EL FORMULARIO PRINCIPAL Y LO CODIFICAMOS
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 7 Versión: 20150212
Public Class frmPrincipal
Private Sub frmPrincipal_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
lblNivelUsuario.Text = userNivel
lblNomUsuario.Text = userNombre
End Sub
Private Sub SalirToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles SalirToolStripMenuItem.Click
Application.Exit()
End Sub
Private Sub ClientesToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ClientesToolStripMenuItem.Click
frmClientes.Show()
End Sub
End Class
ESTE ES EL FORMULARIO DESDE EL QUE TRABAJAREMOS LOS PERMISOS SEGÚN EL NIVEL DE USUARIO
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 8 Versión: 20150212
Public Class frmClientes
Dim conexion As New MySqlConnection
Dim da As New MySqlDataAdapter
Dim ds As New DataSet
Dim sqlcmd As New MySqlCommand
Dim consulta As String
Dim dr As MySqlDataReader
Private Sub llenarCombo()
Me.cboCedula.Items.Clear()
Dim con As New MySqlConnection
Try
con.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false"
con.Open()
consulta = "select cedulacliente from Clientes"
sqlcmd.CommandType = CommandType.Text
sqlcmd.Connection = con
sqlcmd.CommandText = consulta
dr = sqlcmd.ExecuteReader()
If dr.HasRows = True Then
While dr.Read()
Me.cboCedula.Items.Add(dr.GetValue(0))
End While
cboCedula.Text = cboCedula.Items(0)
End If
dr.Close() ''CERRAMOS EL DATAREADER
con.Close() ''CERRAMOS LA CONEXION CON LA BASE DE DATOS
Catch ex As Exception
MessageBox.Show("No se pudo cargar las cedulas. ERROR: " + ex.ToString)
End Try
End Sub
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 9 Versión: 20150212
Private Sub consultarCedula()
Try
conexion.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura;persist security info=false"
conexion.Open()
consulta = "Select * from clientes where cedulacliente = '" & cboCedula.Text & "';"
sqlcmd.CommandType = CommandType.Text
sqlcmd.Connection = conexion
sqlcmd.CommandText = consulta
dr = sqlcmd.ExecuteReader()
If dr.HasRows = True Then
While dr.Read()
Me.txtNombre.Text = dr(1)
Me.txtApellido.Text = dr(2)
Me.mskFecha.Text = dr(3).ToString()
Me.txtTelefono.Text = dr(4)
End While
End If
dr.Close()
conexion.Close()
Catch ex As Exception
MessageBox.Show("Error al llenar los datos. ERROR: " + ex.ToString)
End Try
End Sub
Private Sub cmdGuardar_Click(sender As System.Object, e As System.EventArgs) Handles cmdGuardar.Click
If Me.txtApellido.Text = "" Or cboCedula.Text = "" Or txtNombre.Text = "" Or mskFecha.Text = "" Or txtTelefono.Text = "" Then
MessageBox.Show("Debe llenar todos los campos para ingresar en la base de datos", "Administración de Clientes",
MessageBoxButtons.OK)
cboCedula.Focus()
Else
Dim conn As New MySqlConnection
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 10 Versión: 20150212
Try
conn.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false"
conn.Open()
sqlcmd.Connection = conn
Dim sentencia As String
Dim fecha As Date
fecha = CDate(mskFecha.Text)
sentencia = "insert into clientes (cedulaCliente,apellidoCliente,nombreCliente,fechaNac,telefonoCliente) values ("
sentencia = sentencia + "'" & cboCedula.Text & "', '" & txtApellido.Text & "', '" & txtNombre.Text & "', '" & Format(fecha,
"yyyy/MM/dd") & "', '" & txtTelefono.Text & "');"
sqlcmd.CommandText = sentencia
sqlcmd.ExecuteNonQuery()
MessageBox.Show("El registro se ingresó correctamente", "Administración de Clientes", MessageBoxButtons.OK)
Limpiar(Me)
mskFecha.Text = ""
cboCedula.Focus()
llenarCombo()
conn.Close()
Catch ex As Exception
MessageBox.Show("No se pudo ingresar el cliente en la base de datos. ERROR: " + ex.ToString, "Administración de Clientes",
MessageBoxButtons.OK)
cboCedula.Focus()
End Try
End If
End Sub
Private Sub frmClientes_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
With mskFecha
Me.mskFecha.ValidatingType = GetType(Date)
.Mask = "##/##/####"
End With
lblPermisos.Text = userNivel
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 11 Versión: 20150212
lblUsuario.Text = userNombre
llenarcombo()
consultarCedula()
End Sub
Private Sub cmdSalir_Click(sender As System.Object, e As System.EventArgs) Handles cmdSalir.Click
Me.Close()
End Sub
Private Sub cboCedula_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles cboCedula.KeyPress
If Asc(e.KeyChar) = 13 Then
cmdBuscar_Click(Nothing, Nothing)
End If
End Sub
Private Sub cboCedula_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles cboCedula.SelectedIndexChanged
consultarCedula()
End Sub
Private Sub cmdBuscar_Click(sender As System.Object, e As System.EventArgs) Handles cmdBuscar.Click
If Me.cboCedula.Text <> "" Then
Try
Dim datoEncontrado As String
Dim cedula As String
Dim sqlcedula As MySqlCommand = New MySqlCommand
Dim sqlnombre As MySqlCommand = New MySqlCommand
Dim sqlapellido As MySqlCommand = New MySqlCommand
Dim sqlfnac As MySqlCommand = New MySqlCommand
Dim sqltel As MySqlCommand = New MySqlCommand
Dim dr1 As MySqlDataReader
cedula = Me.cboCedula.Text
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 12 Versión: 20150212
conexion.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false"
conexion.Open()
consulta = "select cedulacliente from Clientes where cedulaCliente = '" & cedula & "';"
sqlcmd.CommandType = CommandType.Text
sqlcmd.Connection = conexion
sqlcmd.CommandText = consulta
dr1 = sqlcmd.ExecuteReader()
If dr1.HasRows = True Then
sqlcedula.Connection = conexion
sqlnombre.Connection = conexion
sqlapellido.Connection = conexion
sqlfnac.Connection = conexion
sqltel.Connection = conexion
dr1.Close()
sqlnombre.CommandText = "Select nombreCliente from clientes where cedulacliente = '" & cedula & "';"
datoEncontrado = sqlnombre.ExecuteScalar()
Me.txtNombre.Text = datoEncontrado
sqlapellido.CommandText = "Select apellidoCliente from clientes where cedulaCliente = '" & cedula & "';"
datoEncontrado = sqlapellido.ExecuteScalar()
Me.txtApellido.Text = datoEncontrado
sqlfnac.CommandText = "Select fechaNac from clientes where cedulaCliente = '" & cedula & "';"
datoEncontrado = sqlfnac.ExecuteScalar().ToString
Me.mskFecha.Text = datoEncontrado
sqltel.CommandText = "Select telefonoCliente from clientes where cedulaCliente = '" & cedula & "';"
datoEncontrado = sqltel.ExecuteScalar()
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 13 Versión: 20150212
Me.txtTelefono.Text = datoEncontrado
Else
MessageBox.Show("La Cedula " + cedula + " No Existe!!")
cboCedula.Text = Nothing
cboCedula.Focus()
End If
conexion.Close()
Catch ex As Exception
MessageBox.Show("No se pudo buscar la cédula. ERROR: " + ex.ToString)
End Try
Else
MessageBox.Show("Por favor escriba la cedula del cliente que desea buscar!", "Búsqueda de Cliente", MessageBoxButtons.OK)
Me.cboCedula.Focus()
End If
End Sub
Private Sub cmdLimpiar_Click(sender As System.Object, e As System.EventArgs) Handles cmdLimpiar.Click
txtApellido.Text = Nothing
txtNombre.Text = Nothing
txtTelefono.Text = Nothing
cboCedula.Text = Nothing
mskFecha.Text = Nothing
lblEdad.Text = Nothing
cboCedula.Focus()
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 14 Versión: 20150212
End Sub
Private Sub cmdEliminar_Click(sender As System.Object, e As System.EventArgs) Handles cmdEliminar.Click
If Me.cboCedula.Text <> "" Then
If userNivel = "Administrador" Then
Dim conex As New MySqlConnection
Try
conex.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false"
conex.Open()
Dim Sqleliminar As MySqlCommand = New MySqlCommand()
Sqleliminar.Connection = conex
Sqleliminar.CommandType = CommandType.Text
Sqleliminar.CommandText = "delete from clientes where cedulaCliente = '" & cboCedula.Text & "';"
Sqleliminar.ExecuteNonQuery()
MessageBox.Show("El registro se eliminó correctamente", "Clientes", MessageBoxButtons.OK)
cmdLimpiar_Click(Nothing, Nothing)
Catch ex As Exception
MessageBox.Show("El cliente no se encontró, Por favor verifique el código...", "Clientes", MessageBoxButtons.OK)
Me.cboCedula.Focus()
End Try
conex.Close()
llenarCombo()
Else
MessageBox.Show("El usuario " + userNombre + "no tiene permisos suficientes para ejecutar esta accion", "Eliminar Cliente",
MessageBoxButtons.OK)
End If
Else
MessageBox.Show("Por favor escriba el código del cliente que desea eliminar.", "Eliminar Cliente", MessageBoxButtons.OK)
Me.cboCedula.Focus()
End If
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 15 Versión: 20150212
End Sub
Private Sub cmdModificar_Click(sender As System.Object, e As System.EventArgs) Handles cmdModificar.Click
If Me.cboCedula.Text <> "" Then
If userNivel = "Administrador" Then
Dim cxn As New MySqlConnection
Dim c As New MySqlConnection
Try
Dim sqlActualizar As String
Dim sqlced As MySqlCommand = New MySqlCommand
Dim ced As String
Dim drActualizar As MySqlDataReader
ced = Me.cboCedula.Text
cxn.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false"
cxn.Open()
consulta = "select cedulacliente from Clientes where cedulaCliente = '" & ced & "';"
sqlcmd.CommandType = CommandType.Text
sqlcmd.Connection = cxn
sqlcmd.CommandText = consulta
drActualizar = sqlcmd.ExecuteReader()
If drActualizar.HasRows = True Then
Dim fecha As Date
fecha = CDate(mskFecha.Text)
sqlActualizar = "Update clientes set nombreCliente = '" & txtNombre.Text & "', apellidoCliente ='" & txtApellido.Text
& "',"
sqlActualizar += " fechaNac ='" & Format(fecha, "yyyy/MM/dd") & "', telefonoCliente = '" & txtTelefono.Text & "'
where cedulaCliente = '" & cboCedula.Text & "';"
Dim cmdactualizar As MySqlCommand = New MySqlCommand
cmdactualizar.CommandType = CommandType.Text
cmdactualizar.Connection = c
c.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false"
Ronald Toscano Pretelt MisClases.Hol.Es
=========================================================================================================================================================================
pág. 16 Versión: 20150212
c.Open()
cmdactualizar.CommandText = sqlActualizar
cmdactualizar.ExecuteNonQuery()
MessageBox.Show("Los Datos se actualizaron correctamente")
Else
MessageBox.Show("La Cedula " + ced + " No Existe!!")
cboCedula.Text = Nothing
cboCedula.Focus()
End If
drActualizar.Close()
cxn.Close()
c.Close()
Catch ex As Exception
MessageBox.Show("No se pudo modificar los datos. ERROR: " + ex.ToString)
End Try
Else
MessageBox.Show("El usuario " + userNombre + "no tiene permisos suficientes para ejecutar esta accion", "Eliminar Cliente",
MessageBoxButtons.OK)
End If
Else
MessageBox.Show("Por favor escriba la cedula del cliente que desea buscar!", "Búsqueda de Cliente", MessageBoxButtons.OK)
Me.cboCedula.Focus()
End If
End Sub
End Class

More Related Content

What's hot

Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Mario Jorge Pereira
 
jQuery sans jQuery
jQuery sans jQueryjQuery sans jQuery
jQuery sans jQuerygoldoraf
 
Documentacion edderson callpa_ortiz
Documentacion edderson callpa_ortizDocumentacion edderson callpa_ortiz
Documentacion edderson callpa_ortizEdderson J. Ortiz
 
Jquery Introduction Hebrew
Jquery Introduction HebrewJquery Introduction Hebrew
Jquery Introduction HebrewAlex Ivy
 
Semana 12 interfaces gráficas de usuario
Semana 12   interfaces gráficas de usuarioSemana 12   interfaces gráficas de usuario
Semana 12 interfaces gráficas de usuarioTerryJoss
 
Belajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data MahasiswaBelajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data MahasiswaAgus Haryanto
 
Pantalla acceso al sistema
Pantalla acceso al sistemaPantalla acceso al sistema
Pantalla acceso al sistemaJaziel Torres
 

What's hot (11)

Web components v1 intro
Web components v1 introWeb components v1 intro
Web components v1 intro
 
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
 
jQuery sans jQuery
jQuery sans jQueryjQuery sans jQuery
jQuery sans jQuery
 
Documentacion edderson callpa_ortiz
Documentacion edderson callpa_ortizDocumentacion edderson callpa_ortiz
Documentacion edderson callpa_ortiz
 
Jquery Introduction Hebrew
Jquery Introduction HebrewJquery Introduction Hebrew
Jquery Introduction Hebrew
 
Sis quiz
Sis quizSis quiz
Sis quiz
 
Semana 12 interfaces gráficas de usuario
Semana 12   interfaces gráficas de usuarioSemana 12   interfaces gráficas de usuario
Semana 12 interfaces gráficas de usuario
 
Test
TestTest
Test
 
Belajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data MahasiswaBelajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data Mahasiswa
 
Pantalla acceso al sistema
Pantalla acceso al sistemaPantalla acceso al sistema
Pantalla acceso al sistema
 
Jquery ui, ajax
Jquery ui, ajaxJquery ui, ajax
Jquery ui, ajax
 

Viewers also liked

Class calendar
Class calendarClass calendar
Class calendarkfoley306
 
Curriculum vitae Nico van Willigen
Curriculum vitae Nico van WilligenCurriculum vitae Nico van Willigen
Curriculum vitae Nico van WilligenNico Van Willigen
 
Penn Valley Church Announcements 5 29-16
Penn Valley Church Announcements 5 29-16Penn Valley Church Announcements 5 29-16
Penn Valley Church Announcements 5 29-16PennValleyChurch
 
Carrie Albright: Shortcuts & Winding Paths: Using Excel to Save Time & Gain I...
Carrie Albright: Shortcuts & Winding Paths: Using Excel to Save Time & Gain I...Carrie Albright: Shortcuts & Winding Paths: Using Excel to Save Time & Gain I...
Carrie Albright: Shortcuts & Winding Paths: Using Excel to Save Time & Gain I...DFWSEM
 
Curso de introducion y manejo basico del spss
Curso de introducion y manejo basico del spssCurso de introducion y manejo basico del spss
Curso de introducion y manejo basico del spsstonhonw
 
SAP EP ADMIN Online Training and Placement Support @ Crescent IT Solutions
SAP EP ADMIN Online Training and Placement Support @ Crescent IT SolutionsSAP EP ADMIN Online Training and Placement Support @ Crescent IT Solutions
SAP EP ADMIN Online Training and Placement Support @ Crescent IT SolutionsCrescent IT Solutions
 
T7 scanning texts
T7   scanning textsT7   scanning texts
T7 scanning textsmecteam7
 

Viewers also liked (12)

Class calendar
Class calendarClass calendar
Class calendar
 
Actividad de aprendizaje 8
Actividad de aprendizaje 8Actividad de aprendizaje 8
Actividad de aprendizaje 8
 
Curriculum vitae Nico van Willigen
Curriculum vitae Nico van WilligenCurriculum vitae Nico van Willigen
Curriculum vitae Nico van Willigen
 
Brown v. Board of Education
Brown v. Board of EducationBrown v. Board of Education
Brown v. Board of Education
 
Penn Valley Church Announcements 5 29-16
Penn Valley Church Announcements 5 29-16Penn Valley Church Announcements 5 29-16
Penn Valley Church Announcements 5 29-16
 
Carrie Albright: Shortcuts & Winding Paths: Using Excel to Save Time & Gain I...
Carrie Albright: Shortcuts & Winding Paths: Using Excel to Save Time & Gain I...Carrie Albright: Shortcuts & Winding Paths: Using Excel to Save Time & Gain I...
Carrie Albright: Shortcuts & Winding Paths: Using Excel to Save Time & Gain I...
 
Evaluación unidad 1
Evaluación unidad 1Evaluación unidad 1
Evaluación unidad 1
 
Curso de introducion y manejo basico del spss
Curso de introducion y manejo basico del spssCurso de introducion y manejo basico del spss
Curso de introducion y manejo basico del spss
 
Universal hdmi adapter ring
Universal hdmi adapter ringUniversal hdmi adapter ring
Universal hdmi adapter ring
 
SAP EP ADMIN Online Training and Placement Support @ Crescent IT Solutions
SAP EP ADMIN Online Training and Placement Support @ Crescent IT SolutionsSAP EP ADMIN Online Training and Placement Support @ Crescent IT Solutions
SAP EP ADMIN Online Training and Placement Support @ Crescent IT Solutions
 
T7 scanning texts
T7   scanning textsT7   scanning texts
T7 scanning texts
 
GOOD GOVERNANCE-PRINCIPLES
GOOD GOVERNANCE-PRINCIPLESGOOD GOVERNANCE-PRINCIPLES
GOOD GOVERNANCE-PRINCIPLES
 

Ejemplo con control de permisos o niveles de usuario

  • 1. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 1 Versión: 20150212 EJEMPLO CON CONTROL DE PERMISOS O NIVELES DE USUARIO MODIFICAR LAS PROPIEDADES DEL PROYECTO Menú proyecto / propiedades de facturación (o como se llame el proyecto Deshabilitamos  habilitar marco de trabajo de la aplicación. En la opción OBJETO DE INICIO  sub main
  • 2. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 2 Versión: 20150212 AHORA NECESITAREMOS UN MODULO Lo primero que haremos será crear un Módulo con el siguiente código: Module miModulo Private usuarioAutenticado As Boolean = False ''para verificar si logró iniciar sesión Private nombreDeUsuario As String Private nivelDelUsuario As String Public Sub Main() '' habilitamos los estilos visuales Application.EnableVisualStyles() '' mostramos el usuario de login Dim frmlogin As New frmAutenUsuar frmlogin.ShowDialog() If (usuarioAutenticado = True) Then '' mostramos el formulario principal Application.Run(frmPrincipal) End If End Sub Public Property userAutenticado() As Boolean '' similar encapsulacion en poo Get Return usuarioAutenticado End Get Set(ByVal Value As Boolean) usuarioAutenticado = Value End Set End Property Public Property userNombre() As String ''USER NOMBRE ALMACENA EL NOMBRE DEL USUARIO Get Return nombreDeUsuario
  • 3. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 3 Versión: 20150212 End Get Set(ByVal value As String) nombreDeUsuario = value End Set End Property Public Property userNivel() As String ''USERNIVEL ALMACENA EL NIVEL DEL USUARIO Get Return nivelDelUsuario End Get Set(value As String) nivelDelUsuario = value End Set End Property End Module AHORA CREAMOS EL FORMULARIO DE INGRESO Y LO CODIFICAMOS
  • 4. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 4 Versión: 20150212 Imports MySql.Data Imports MySql.Data.MySqlClient Public Class frmAutenUsuar Public intentos As Integer = 0 '' VARIABLE PARA CONTROLAR LOS INTENTOS DE LOGUE '' LA FUNCION EXISTE USUARIO() ES LA ENCARGADA DE VERIFICAR SI EL USUARIO EXISTE EN LA BASE DE DATOS Function existeusuario(ByVal usuario As String, ByVal password As String) As Boolean Dim conexion As New MySqlConnection Dim da As New MySqlDataAdapter Dim ds As New DataSet Dim consulta As String Dim autenticado As Boolean = False Try conexion.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura;persist security info=false" consulta = "select user, password, tipoUsuario from usuarios where user='" & usuario & "' and password ='" & password & "';" conexion.Open() da = New MySqlDataAdapter(consulta, conexion) ds.Clear() '' LIMPIAMOS EL DATASET da.Fill(ds, "usuarios") ''LLENAMOS EL DATAADAPTER CON EL CONTENIDO DE LA TABLA USUARIOS If (ds.Tables("usuarios").Rows.Count() = 0) Then '' PREGUNTAMOS SI NO HUBO RESULTADOS PARA SABER SI EL USUARIO NO EXISTE intentos = intentos + 1 If intentos > 2 Then MessageBox.Show("Ha sobre pasado el numero de intentos permitidos", "Autenticación de Usuarios", MessageBoxButtons.OK) Application.Exit() Else MessageBox.Show("Usuario y/o contraseña no válidos", "Autenticación de usuarios", MessageBoxButtons.OK) txtusuario.Text = "" txtpassword.Text = "" txtusuario.Focus()
  • 5. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 5 Versión: 20150212 End If autenticado = False ''EL USUARIO NO SE AUTENTICÓ Return (False) '' LA FUNCIÓN RETORNA QUE EL USUARIO NO EXISTE Else '' SI EL USUARIO EXISTE, ENTONCES PROCEDEMOS A CONSULTAR Y ALMACENAR LOS DATOS DEL USUARIO EN LAS PROPIEDADES QUE '' CREAMOS EN EL MODULO COMO PROPERTY Dim sqluser As MySqlCommand = New MySqlCommand Dim sqlnivel As MySqlCommand = New MySqlCommand sqluser.Connection = conexion sqlnivel.Connection = conexion sqluser.CommandText = "select user from usuarios where user = '" & usuario & "';" userNombre = sqluser.ExecuteScalar() sqlnivel.CommandText = "select tipoUsuario from usuarios where user = '" & usuario & "';" userNivel = sqlnivel.ExecuteScalar() MessageBox.Show("Bienvenido al Sistema " + userNombre + ". Su nivel de permisos es: " + userNivel, "Autenticación de Usuarios", MessageBoxButtons.OK) autenticado = True '' LA FUNCION DEVUELVE ENTONCES QUE EL USUARIO SI EXISTE Y SE PUEDE LOGUAR userAutenticado = True Return (True) End If Catch ex As Exception MessageBox.Show("Ocurrió un error al intentar autenticarse. ERROR: ", "Autenticación de Usuarios", MessageBoxButtons.OK) End Try conexion.Close() '' CERRAMOS LA CONEXION DE LA BASE DE DATOS Return (True) End Function
  • 6. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 6 Versión: 20150212 Private Sub btnSalir_Click(sender As System.Object, e As System.EventArgs) Handles btnSalir.Click Application.Exit() ''DETENEMOS LA EJECUCIÓN DE LA APLICACIÓN End Sub Private Sub btnIngresar_Click(sender As System.Object, e As System.EventArgs) Handles btnIngresar.Click '' SI EL USUARIO EXISTE, LE ENVIAMOS LOS DATOS DEL LOGUEO AL MODULO If existeusuario(txtusuario.Text, txtpassword.Text) Then miModulo.userAutenticado = True Me.Close() ''CERRAMOS EL FORMULARIO DE INGRESO End If End Sub End Class AHORA CREAMOS EL FORMULARIO PRINCIPAL Y LO CODIFICAMOS
  • 7. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 7 Versión: 20150212 Public Class frmPrincipal Private Sub frmPrincipal_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load lblNivelUsuario.Text = userNivel lblNomUsuario.Text = userNombre End Sub Private Sub SalirToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles SalirToolStripMenuItem.Click Application.Exit() End Sub Private Sub ClientesToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ClientesToolStripMenuItem.Click frmClientes.Show() End Sub End Class ESTE ES EL FORMULARIO DESDE EL QUE TRABAJAREMOS LOS PERMISOS SEGÚN EL NIVEL DE USUARIO
  • 8. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 8 Versión: 20150212 Public Class frmClientes Dim conexion As New MySqlConnection Dim da As New MySqlDataAdapter Dim ds As New DataSet Dim sqlcmd As New MySqlCommand Dim consulta As String Dim dr As MySqlDataReader Private Sub llenarCombo() Me.cboCedula.Items.Clear() Dim con As New MySqlConnection Try con.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false" con.Open() consulta = "select cedulacliente from Clientes" sqlcmd.CommandType = CommandType.Text sqlcmd.Connection = con sqlcmd.CommandText = consulta dr = sqlcmd.ExecuteReader() If dr.HasRows = True Then While dr.Read() Me.cboCedula.Items.Add(dr.GetValue(0)) End While cboCedula.Text = cboCedula.Items(0) End If dr.Close() ''CERRAMOS EL DATAREADER con.Close() ''CERRAMOS LA CONEXION CON LA BASE DE DATOS Catch ex As Exception MessageBox.Show("No se pudo cargar las cedulas. ERROR: " + ex.ToString) End Try End Sub
  • 9. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 9 Versión: 20150212 Private Sub consultarCedula() Try conexion.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura;persist security info=false" conexion.Open() consulta = "Select * from clientes where cedulacliente = '" & cboCedula.Text & "';" sqlcmd.CommandType = CommandType.Text sqlcmd.Connection = conexion sqlcmd.CommandText = consulta dr = sqlcmd.ExecuteReader() If dr.HasRows = True Then While dr.Read() Me.txtNombre.Text = dr(1) Me.txtApellido.Text = dr(2) Me.mskFecha.Text = dr(3).ToString() Me.txtTelefono.Text = dr(4) End While End If dr.Close() conexion.Close() Catch ex As Exception MessageBox.Show("Error al llenar los datos. ERROR: " + ex.ToString) End Try End Sub Private Sub cmdGuardar_Click(sender As System.Object, e As System.EventArgs) Handles cmdGuardar.Click If Me.txtApellido.Text = "" Or cboCedula.Text = "" Or txtNombre.Text = "" Or mskFecha.Text = "" Or txtTelefono.Text = "" Then MessageBox.Show("Debe llenar todos los campos para ingresar en la base de datos", "Administración de Clientes", MessageBoxButtons.OK) cboCedula.Focus() Else Dim conn As New MySqlConnection
  • 10. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 10 Versión: 20150212 Try conn.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false" conn.Open() sqlcmd.Connection = conn Dim sentencia As String Dim fecha As Date fecha = CDate(mskFecha.Text) sentencia = "insert into clientes (cedulaCliente,apellidoCliente,nombreCliente,fechaNac,telefonoCliente) values (" sentencia = sentencia + "'" & cboCedula.Text & "', '" & txtApellido.Text & "', '" & txtNombre.Text & "', '" & Format(fecha, "yyyy/MM/dd") & "', '" & txtTelefono.Text & "');" sqlcmd.CommandText = sentencia sqlcmd.ExecuteNonQuery() MessageBox.Show("El registro se ingresó correctamente", "Administración de Clientes", MessageBoxButtons.OK) Limpiar(Me) mskFecha.Text = "" cboCedula.Focus() llenarCombo() conn.Close() Catch ex As Exception MessageBox.Show("No se pudo ingresar el cliente en la base de datos. ERROR: " + ex.ToString, "Administración de Clientes", MessageBoxButtons.OK) cboCedula.Focus() End Try End If End Sub Private Sub frmClientes_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load With mskFecha Me.mskFecha.ValidatingType = GetType(Date) .Mask = "##/##/####" End With lblPermisos.Text = userNivel
  • 11. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 11 Versión: 20150212 lblUsuario.Text = userNombre llenarcombo() consultarCedula() End Sub Private Sub cmdSalir_Click(sender As System.Object, e As System.EventArgs) Handles cmdSalir.Click Me.Close() End Sub Private Sub cboCedula_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles cboCedula.KeyPress If Asc(e.KeyChar) = 13 Then cmdBuscar_Click(Nothing, Nothing) End If End Sub Private Sub cboCedula_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles cboCedula.SelectedIndexChanged consultarCedula() End Sub Private Sub cmdBuscar_Click(sender As System.Object, e As System.EventArgs) Handles cmdBuscar.Click If Me.cboCedula.Text <> "" Then Try Dim datoEncontrado As String Dim cedula As String Dim sqlcedula As MySqlCommand = New MySqlCommand Dim sqlnombre As MySqlCommand = New MySqlCommand Dim sqlapellido As MySqlCommand = New MySqlCommand Dim sqlfnac As MySqlCommand = New MySqlCommand Dim sqltel As MySqlCommand = New MySqlCommand Dim dr1 As MySqlDataReader cedula = Me.cboCedula.Text
  • 12. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 12 Versión: 20150212 conexion.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false" conexion.Open() consulta = "select cedulacliente from Clientes where cedulaCliente = '" & cedula & "';" sqlcmd.CommandType = CommandType.Text sqlcmd.Connection = conexion sqlcmd.CommandText = consulta dr1 = sqlcmd.ExecuteReader() If dr1.HasRows = True Then sqlcedula.Connection = conexion sqlnombre.Connection = conexion sqlapellido.Connection = conexion sqlfnac.Connection = conexion sqltel.Connection = conexion dr1.Close() sqlnombre.CommandText = "Select nombreCliente from clientes where cedulacliente = '" & cedula & "';" datoEncontrado = sqlnombre.ExecuteScalar() Me.txtNombre.Text = datoEncontrado sqlapellido.CommandText = "Select apellidoCliente from clientes where cedulaCliente = '" & cedula & "';" datoEncontrado = sqlapellido.ExecuteScalar() Me.txtApellido.Text = datoEncontrado sqlfnac.CommandText = "Select fechaNac from clientes where cedulaCliente = '" & cedula & "';" datoEncontrado = sqlfnac.ExecuteScalar().ToString Me.mskFecha.Text = datoEncontrado sqltel.CommandText = "Select telefonoCliente from clientes where cedulaCliente = '" & cedula & "';" datoEncontrado = sqltel.ExecuteScalar()
  • 13. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 13 Versión: 20150212 Me.txtTelefono.Text = datoEncontrado Else MessageBox.Show("La Cedula " + cedula + " No Existe!!") cboCedula.Text = Nothing cboCedula.Focus() End If conexion.Close() Catch ex As Exception MessageBox.Show("No se pudo buscar la cédula. ERROR: " + ex.ToString) End Try Else MessageBox.Show("Por favor escriba la cedula del cliente que desea buscar!", "Búsqueda de Cliente", MessageBoxButtons.OK) Me.cboCedula.Focus() End If End Sub Private Sub cmdLimpiar_Click(sender As System.Object, e As System.EventArgs) Handles cmdLimpiar.Click txtApellido.Text = Nothing txtNombre.Text = Nothing txtTelefono.Text = Nothing cboCedula.Text = Nothing mskFecha.Text = Nothing lblEdad.Text = Nothing cboCedula.Focus()
  • 14. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 14 Versión: 20150212 End Sub Private Sub cmdEliminar_Click(sender As System.Object, e As System.EventArgs) Handles cmdEliminar.Click If Me.cboCedula.Text <> "" Then If userNivel = "Administrador" Then Dim conex As New MySqlConnection Try conex.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false" conex.Open() Dim Sqleliminar As MySqlCommand = New MySqlCommand() Sqleliminar.Connection = conex Sqleliminar.CommandType = CommandType.Text Sqleliminar.CommandText = "delete from clientes where cedulaCliente = '" & cboCedula.Text & "';" Sqleliminar.ExecuteNonQuery() MessageBox.Show("El registro se eliminó correctamente", "Clientes", MessageBoxButtons.OK) cmdLimpiar_Click(Nothing, Nothing) Catch ex As Exception MessageBox.Show("El cliente no se encontró, Por favor verifique el código...", "Clientes", MessageBoxButtons.OK) Me.cboCedula.Focus() End Try conex.Close() llenarCombo() Else MessageBox.Show("El usuario " + userNombre + "no tiene permisos suficientes para ejecutar esta accion", "Eliminar Cliente", MessageBoxButtons.OK) End If Else MessageBox.Show("Por favor escriba el código del cliente que desea eliminar.", "Eliminar Cliente", MessageBoxButtons.OK) Me.cboCedula.Focus() End If
  • 15. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 15 Versión: 20150212 End Sub Private Sub cmdModificar_Click(sender As System.Object, e As System.EventArgs) Handles cmdModificar.Click If Me.cboCedula.Text <> "" Then If userNivel = "Administrador" Then Dim cxn As New MySqlConnection Dim c As New MySqlConnection Try Dim sqlActualizar As String Dim sqlced As MySqlCommand = New MySqlCommand Dim ced As String Dim drActualizar As MySqlDataReader ced = Me.cboCedula.Text cxn.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false" cxn.Open() consulta = "select cedulacliente from Clientes where cedulaCliente = '" & ced & "';" sqlcmd.CommandType = CommandType.Text sqlcmd.Connection = cxn sqlcmd.CommandText = consulta drActualizar = sqlcmd.ExecuteReader() If drActualizar.HasRows = True Then Dim fecha As Date fecha = CDate(mskFecha.Text) sqlActualizar = "Update clientes set nombreCliente = '" & txtNombre.Text & "', apellidoCliente ='" & txtApellido.Text & "'," sqlActualizar += " fechaNac ='" & Format(fecha, "yyyy/MM/dd") & "', telefonoCliente = '" & txtTelefono.Text & "' where cedulaCliente = '" & cboCedula.Text & "';" Dim cmdactualizar As MySqlCommand = New MySqlCommand cmdactualizar.CommandType = CommandType.Text cmdactualizar.Connection = c c.ConnectionString = "server=localhost; user=root; password=toor; database=bdFactura; persist security info= false"
  • 16. Ronald Toscano Pretelt MisClases.Hol.Es ========================================================================================================================================================================= pág. 16 Versión: 20150212 c.Open() cmdactualizar.CommandText = sqlActualizar cmdactualizar.ExecuteNonQuery() MessageBox.Show("Los Datos se actualizaron correctamente") Else MessageBox.Show("La Cedula " + ced + " No Existe!!") cboCedula.Text = Nothing cboCedula.Focus() End If drActualizar.Close() cxn.Close() c.Close() Catch ex As Exception MessageBox.Show("No se pudo modificar los datos. ERROR: " + ex.ToString) End Try Else MessageBox.Show("El usuario " + userNombre + "no tiene permisos suficientes para ejecutar esta accion", "Eliminar Cliente", MessageBoxButtons.OK) End If Else MessageBox.Show("Por favor escriba la cedula del cliente que desea buscar!", "Búsqueda de Cliente", MessageBoxButtons.OK) Me.cboCedula.Focus() End If End Sub End Class