viernes, 28 de febrero de 2020

clase principal aplicacion seguridad

Imports DevExpress.Utils

Public Class Principal



#Region "Declaraciones"

    Private LABASE As String
    Private SERVIDOR As String
    Private mDtResultado As New DataTable
    Private ConeccionExitosa As Boolean
    Private ResuBoolean As Boolean = False
    Private LogueoExitoso As Boolean
    Private AvisarAlSalir As Boolean
    Private FrmRenovarAcceso As New RenovarAcceso
    Private FrmRenovarAccesoRemision As New RenovarAccesoRemision
    Private FrmEditarPermisos As New EditarABMpermisos
    Private FrmAgregarControl As New AgregarControl
    Private FrmCajaDeEntrada As New CajaDeEntrada
    Private FrmNuevoUsuario As New NuevoUsuario
    Private FrmModulo As New FormModulos   'NUEVO
    Private FrmABMAplicacion As New FormABMAplicaciones
    Private FrmABMEditarPermiso As New FormABMEditarPermiso


#End Region



#Region "Eventos"

    Private Sub BBI_AltaControles_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_AltaControles.ItemClick
        Try
            '  If ValidarCotraseña() Then "al quitar el comentario, se activa esta pantalla para quitar el acceso por clave"
            FrmAgregarControl = New AgregarControl
            FrmAgregarControl.ShowDialog()
            '  End If
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir 'Agregar Control'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    Private Sub BBI_PermisosPorPefil_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_PermisosPorPefil.ItemClick
        Try
            'If ValidarCotraseña() Then

            FrmEditarPermisos = New EditarABMpermisos
            FrmEditarPermisos.TipoIngreso = EditarABMpermisos.Tipo.Perfil
            FrmEditarPermisos.ShowDialog()
            'End If
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir 'Editar Permisos por Perfil'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

 

    Private Sub BBI_PermisosPorUsuario_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_PermisosPorUsuario.ItemClick
        Try
            'If ValidarCotraseña() Then
            FrmEditarPermisos = New EditarABMpermisos
            FrmEditarPermisos.TipoIngreso = EditarABMpermisos.Tipo.Usuario
            FrmEditarPermisos.ShowDialog()
            '  End If
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir 'Editar Permisos por Usuario'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    'Private Sub BBI_RenovarAcceso_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_RenovarAcceso.ItemClick
    '    Try
    '        FrmRenovarAcceso = New RenovarAcceso
    '        FrmRenovarAcceso.ShowDialog()
    '    Catch ex As Exception
    '        GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir 'Renovar Acceso'." & vbCrLf & ex.Message.ToString).ShowDialog()
    '    End Try
    'End Sub

    Private Sub BBI_Ingresos_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_NvoUsuario.ItemClick
        Try
            FrmNuevoUsuario = New NuevoUsuario
            FrmNuevoUsuario.ShowDialog()

        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir 'Gestión de Despachos'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub
 
    '-------------------------------
    Private Sub EjecutarPermisos()

        My.Application.DoEvents()
        'ControlesPermisos.DesactivarControlesAplicacion(Me) 'Desactivo todos los controles del formulario
        'ControlesPermisos.ActivarControlesPorPefil(Me, My.Application.IDAPLICACION, My.Application.IDPERFIL) 'Activo/Desactivo controles del formulario por perfil
        'ControlesPermisos.ActivarControlesPorUsuario(Me, My.Application.IDAPLICACION, My.Application.IDUSUARIO) 'Activo/Desactivo controles del formulario por usuario

    End Sub

    Private Sub Principal_Invalidated(sender As Object, e As InvalidateEventArgs) Handles Me.Invalidated

    End Sub
    '-------------------------------

    Private Sub Principal_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Try
            IniciarAplicacion()
            AgregarControlesAplicacion()
            EjecutarPermisos()
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir la aplicación. " & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    Private Function AgregarControlesAplicacion()
        Try
            ControlesPermisos.RegistrarControles(Me)
        Catch ex As Exception
        End Try
    End Function

    Private Sub Principal_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
        Try
            If AvisarAlSalir Then
                If Not GestorMensajes.MensajeConfirmacion(MensajeSistema.TipoDeMensaje.Adveretencia, "¿Está seguro que desea salir del sistema?. Todos los cambios no grabados se perderán.").DialogResult <> Windows.Forms.DialogResult.OK Then
                    e.Cancel = True
                Else
                    If LogueoExitoso Then
                        DesConectarUsuarioAAplicacion(My.Application.IDUSUARIO, My.Application.IDAPLICACION)
                    End If
                End If
            Else 'si no avisa al salir
                If LogueoExitoso Then
                    DesConectarUsuarioAAplicacion(My.Application.IDUSUARIO, My.Application.IDAPLICACION)
                End If
            End If
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al cerrar el formulario. " & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

#End Region

#Region "Funciones"

    Private Function ValidarCotraseña() As Boolean
        ResuBoolean = False
        FrmCajaDeEntrada = New CajaDeEntrada
        FrmCajaDeEntrada.Cargar("  Ingrese contraseña", True)
        FrmCajaDeEntrada.ShowDialog()
        If FrmCajaDeEntrada.Resultado = "desarrollo007" Then
            ResuBoolean = True
        End If
        Return ResuBoolean
    End Function


    Private Sub IniciarAplicacion()
        My.Application.DoEvents()

        ValidarVersiones(My.Application.IDAPLICACION)
        InfoBD()
        InfoUsuario()

        LogueoExitoso = False
        AvisarAlSalir = True
        If ConectarUsuarioAAplicacionSinSeguridad(My.Application.IDUSUARIO, My.Application.IDAPLICACION, My.Computer.Name.ToString, My.Application.Info.Version.ToString) = False Then
            Me.Close()
        Else
            LogueoExitoso = True
        End If
    End Sub

    Private Sub ValidarVersiones(ByVal unIdAplicacion As Integer)
        'Try
        '    mDtResultado = New DataTable
        '    mDtResultado = ConexionSQL.EjecutarSP("SP_MAESTRO_VERSIONES_LEER", unIdAplicacion)

        '    If Not IsNothing(mDtResultado) Then
        '        If mDtResultado.Rows(0).Item("VERSIONACTUAL") = My.Application.Info.Version.ToString Then
        '            'Ok tiene la version actual
        '        Else
        '            If mDtResultado.Rows(0).Item("VERSIONANTERIOR") = My.Application.Info.Version.ToString Then
        '                'Tiene la versión anterior
        '                If mDtResultado.Rows(0).Item("URGENTE") = 0 Then
        '                    'No es urgente
        '                Else
        '                    'La actualización debe ser inmediatamente
        '                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Adveretencia, "Su versión está desactualizada, por favor salga del Sigma y vuelva a ingresar.").ShowDialog()

        '                    Application.ExitThread()
        '                End If
        '            Else
        '                'Tiene una versión no registrada - mail a sistemas
        '                'objRemRN = New RemisionRN
        '                'EnviarMail("desarrollo@mimo.com.ar", "Sigma - Versión no registrada", "URGENTE. La computadora " & My.Computer.Name & " (usuario " & My.Application.IDUSUARIO & ") posee una versión no registrada de la aplicación: " & My.Application.Info.AssemblyName & " (" & VVidaplic & "). version: " & My.Application.Info.Version.ToString)

        '                GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Adveretencia, "Su versión no está registrada. Envío de email automático a Sistemas.").ShowDialog()
        '                Application.ExitThread()
        '            End If
        '        End If
        '    Else
        '        GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Adveretencia, "Ocurrio un error al validar la versión, se cerrará la aplicación. ").ShowDialog()
        '        Application.ExitThread()
        '    End If
        'Catch ex As Exception
        '    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Adveretencia, "Ocurrio un error al validar la versión, se cerrará la aplicación. " & vbCrLf & ex.Message.ToString).ShowDialog()
        '    Application.ExitThread()
        'End Try
    End Sub

    Private Function ChequearUsuarioConectado() As Boolean
        ResuBoolean = False
        mDtResultado = New DataTable
        mDtResultado = ConexionSQL.EjecutarSP("SP_PLUS_REMISION_CHEQUEAR_USUARIO_CONECTADO", My.Application.IDUSUARIO)
        If Not IsNothing(mDtResultado) Then
            If mDtResultado.Rows(0).Item(0) = 0 Then
                ResuBoolean = False
            Else
                ResuBoolean = True
            End If
        End If
        Return ResuBoolean
    End Function

    Private Function ConectarUsuarioAAplicacionSinSeguridad(ByVal unUsuario As Integer, ByVal unaAplicacion As Integer, ByVal unaPC As String,
                                         ByVal unaVersion As String) As Boolean
        mDtResultado = New DataTable
        ResuBoolean = False
        mDtResultado = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_CONECTAR_USUARIO_A_APLICACION_SIN_BLOQUEO", unUsuario, unaAplicacion, unaPC, unaVersion)
        If Not IsNothing(mDtResultado) Then
            ' 1 - INSERTO CORRECTAMENTE
            '-1 - FALLO EL INSERT
            ' 2 - HIZO EL UPDATE DEL ESTADO CORRECTAMENTE
            '-2 - FALLO EL UPDATE DEL ESTADO
            Select Case mDtResultado.Rows(0).Item(0)
                Case 1
                    ResuBoolean = True
                Case -1
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "Falló el ingreso del dato en la tabla 'HERRAMIENTAS_SIGMA_USUARIOS_CONECTADOS'").ShowDialog()
                Case 2
                    ResuBoolean = True
                Case -2
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "Falló la actualización del dato en la tabla 'HERRAMIENTAS_SIGMA_USUARIOS_CONECTADOS'").ShowDialog()
            End Select
        Else
            ResuBoolean = False
        End If

        Return ResuBoolean
    End Function

    Private Function DesConectarUsuarioAAplicacion(ByVal unUsuario As Integer, ByVal unaAplicacion As Integer) As Boolean
        ResuBoolean = False
        mDtResultado = New DataTable
        mDtResultado = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_DESCONECTAR_USUARIO_A_APLICACION", unUsuario, unaAplicacion)
        If Not IsNothing(mDtResultado) Then
            If mDtResultado.Rows(0).Item(0) = True Then
                ResuBoolean = True
            End If
        End If
        Return ResuBoolean
    End Function


    Public Sub InfoBD()
        If UCase(ConexionSQL.ObtenerBase) <> "SIGMA" Then
            LABASE = " | Base: " & UCase(ConexionSQL.ObtenerBase)
            SERVIDOR = " | Servidor: " & IIf(UCase(ConexionSQL.ObtenerServidor) = "SR01SIG01", "PRODUCCIÓN", "TESTING")
        Else
            LABASE = ""
            'SERVIDOR = " | Servidor: " & UCase(objRemRN.ppServidor)
            SERVIDOR = " | Servidor: " & IIf(UCase(ConexionSQL.ObtenerServidor) = "SR01SIG01", "PRODUCCIÓN", "TESTING")
        End If

        BarStaticItem_BASE.Caption = SERVIDOR & LABASE & " | Versión  " & My.Application.Info.Version.ToString

        'Cargo la infro al supertip
        Dim sTooltip2 As SuperToolTip = New SuperToolTip
        Dim args As SuperToolTipSetupArgs = New SuperToolTipSetupArgs
        args.Title.Text = "Mensaje del sistema"
        args.Contents.Text = "Usted se encuentra en: " & vbCrLf & SERVIDOR & LABASE & vbCrLf & " | Versión  " & My.Application.Info.Version.ToString
        args.Contents.Image = My.Resources.database_32x32
        'args.Footer.Text = "Equipo de sistemas"
        sTooltip2.Setup(args)

        ' Assign the created SuperToolTip to a BarItem.
        BarStaticItem_BASE.SuperTip = sTooltip2
    End Sub


    Private Sub InfoUsuario()
        BSI_Usuario.Caption = ObtenerUsuarioLogueado(My.Application.IDUSUARIO)
        'Cargo la infro al supertip
        Dim sTooltip3 As SuperToolTip = New SuperToolTip
        Dim args As SuperToolTipSetupArgs = New SuperToolTipSetupArgs
        args.Title.Text = "Mensaje del sistema"
        args.Contents.Text = "El usuario logueado es: " & BSI_Usuario.Caption
        args.Contents.Image = My.Resources.customer_32x32
        'args.Footer.Text = "Equipo de sistemas"
        sTooltip3.Setup(args)
        ' Assign the created SuperToolTip to a BarItem.
        BSI_Usuario.SuperTip = sTooltip3
    End Sub

    Private Function ObtenerUsuarioLogueado(ByVal idUsuario As Integer) As String
        mDtResultado = New DataTable
        mDtResultado = ConexionSQL.EjecutarSP("SP_PLUS_REMISION_OBTENER_USUARIO_LOGUEADO", idUsuario)
        If Not IsNothing(mDtResultado) Then
            Return mDtResultado.Rows(0).Item(0)
        Else
            Return Nothing
        End If
    End Function

#End Region




    Private Sub BBI_Usuarios_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_Aplicaciones.ItemClick
        Try
            FrmRenovarAcceso = New RenovarAcceso
            FrmRenovarAcceso.ShowDialog()
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir 'Renovar Acceso'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub


    Private Sub BBI_Usuarios_Remision_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_Usuarios_Remision.ItemClick
        Try
            FrmRenovarAccesoRemision = New RenovarAccesoRemision
            FrmRenovarAccesoRemision.ShowDialog()
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir 'Renovar Acceso'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_GeneradorHash.ItemClick
        GeneradorSeed.ShowDialog()
    End Sub

    Private Sub BBI_Ajustes_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_Modulos.ItemClick
        Try
            FrmModulo = New FormModulos 'FormABModulos
            FormModulos.ShowDialog()
        Catch es As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al Intentar abrir 'Nuevo Modulo'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try

    End Sub

    Private Function ex() As Object
        Throw New NotImplementedException
    End Function


    Private Sub ABModulos_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_ABModulos.ItemClick
        Try
            FrmModulo = New FormModulos
            FormModulos.ShowDialog()
        Catch es As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al Intentar abrir 'Nuevo Modulo'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    Private Sub ABMAplicacion_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_ABMAplicacion.ItemClick
        Try
            FrmABMAplicacion = New FormABMAplicaciones
            FormABMAplicaciones.ShowDialog()
        Catch es As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al Intentar abrir 'Nuevo Modulo'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub


    Private Sub BBI_GestionPerfil_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_GestionPerfil.ItemClick
        Try
            FrmABMEditarPermiso = New FormABMEditarPermiso
            FormABMEditarPermiso.ShowDialog()
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir Modulo." & ex.ToString).ShowDialog()
        End Try
    End Sub

    Private Sub RibbonControl_Click(sender As Object, e As EventArgs) Handles RibbonControl.Click

    End Sub
End Class

clase editar permisos completa

Public Class EditarABMpermisos



#Region "Movimiento del Formulario"

    'Declaraciones API Windows
    Private Declare Function SendMessage _
     Lib "user32" _
     Alias "SendMessageA" ( _
         ByVal hwnd As Integer, _
         ByVal wMsg As Integer, _
         ByVal wParam As Integer, _
         ByRef lParam As Object) As Integer

    Private Declare Function ReleaseCapture Lib "user32" () As Integer

    ' constantes / variables 
    Private Const WM_NCLBUTTONDOWN As Integer = &HA1
    Private Const HTCAPTION As Integer = 2

    Sub Mover_Formulario(ByVal frm As Form)
        ReleaseCapture()
        'cambiar el puntero 
        Me.Cursor = Cursors.SizeAll

        If Me.WindowState = FormWindowState.Normal Then
            Dim ret As Integer = SendMessage( _
                                               frm.Handle.ToInt32, _
                                               WM_NCLBUTTONDOWN, _
                                               HTCAPTION, 0)

        End If

        'reestablecer el cursor al soltar 
        Me.Cursor = Cursors.Default

    End Sub



    'Evento del Formulario para soltar *************************************************************************
    Private Sub MensajeSistema_KeyDown( _
     ByVal sender As Object, _
     ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        If e.KeyCode = Keys.Escape Then Me.Close()

    End Sub


    'Muevo desde el Formulario *************************************************************************
    Private Sub MensajeSistema_MouseDown( _
        ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown

        If e.Button = Windows.Forms.MouseButtons.Left Then
            ' pasar el formulario como parámetro 
            Mover_Formulario(Me)
        End If
    End Sub

    'Muevo desde la barra *************************************************************************
    Private Sub TSMenu_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TSMenu.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            ' pasar el formulario como parámetro 
            Mover_Formulario(Me)
        End If
    End Sub


#End Region



#Region "Declaraciones"

    Public Enum Tipo
        Perfil
        Usuario
    End Enum

    Public TipoIngreso As Tipo
    Private mDt As New DataTable
    Private IdAplicacionSeleccionada As Integer
    Private IdAplicacionSel As Integer
    Private IdPerfilSel As Integer
    Private IdUsuarioSel As Integer
    Private IdControlSel As Integer
    Private VisibleSel As Boolean
    Private ActivoSel As Boolean

#End Region



#Region "Funciones"

    Private Sub ListarPerfiles()
        mDt = New DataTable
        mDt = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_PERFILES")
        If Not IsNothing(mDt) Then
            GLUE_Perfiles.Properties.DataSource = mDt
        Else
            GLUE_Perfiles.Properties.DataSource = Nothing
        End If
    End Sub

    Private Sub ListarUsuarios()
        mDt = New DataTable
        mDt = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_USUARIOS")
        If Not IsNothing(mDt) Then
            GLUE_Usuarios.Properties.DataSource = mDt
        Else
            GLUE_Usuarios.Properties.DataSource = Nothing
        End If
    End Sub

    Private Sub ListarControlesPorPerfil()
        If (Not IsNothing(GLUE_Aplicaciones.EditValue)) And (Not IsNothing(GLUE_Perfiles.EditValue)) Then
            mDt = New DataTable
            mDt = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_DE_CONTROLES_POR_PERFIL", GLUE_Aplicaciones.EditValue, GLUE_Perfiles.EditValue)
            If Not IsNothing(mDt) Then
                GcPermisos.DataSource = mDt
            Else
                GcPermisos.DataSource = Nothing
            End If
        Else
            GcPermisos.DataSource = Nothing
        End If
    End Sub

    Private Sub GrabarPermisosPorPerfil()
        IdAplicacionSel = GLUE_Aplicaciones.EditValue
        IdPerfilSel = GLUE_Perfiles.EditValue
        For i As Integer = 0 To GvPermisos.RowCount - 1
            IdControlSel = GvPermisos.GetRowCellValue(i, "IDCONTROL")
            VisibleSel = GvPermisos.GetRowCellValue(i, "VISIBLE")
            ActivoSel = GvPermisos.GetRowCellValue(i, "ACTIVO")
            ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_INGRESAR_PERMISO_POR_PERFIL", IdControlSel, IdAplicacionSel, IdPerfilSel, VisibleSel, ActivoSel)
        Next
        CargarControlesPerfil(IdAplicacionSel, IdPerfilSel)
    End Sub
    '----------------------------------------------
    Private Sub CargarControlesPerfil(ByVal iAplicacion As Integer, ByVal iperfil As Integer)
        'objInformesRN.SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_CONTROLES_POR_PERFIL(My.Application.IDAPLICACION, My.Application.IDPERFIL)
        'mDtListadoControles = objInformesRN.Tabla

        Dim aDtListaControlPerfil = New DataTable
        aDtListaControlPerfil = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_CONTROLES_POR_PERFIL", iAplicacion, iperfil)
        CambiarControlPorSeguridad(aDtListaControlPerfil)
    End Sub

    Public Sub CambiarControlPorSeguridad(ByRef mdtListadocontroles1 As DataTable)
        Dim Ncontrol As String
        Dim Cactivo As Boolean
        Dim Cvisible As Boolean
        For i As Integer = 0 To mdtListadocontroles1.Rows.Count - 1
            Ncontrol = mdtListadocontroles1.Rows(i).Item("NOMBRECONTROL")
            Cvisible = mdtListadocontroles1.Rows(i).Item("VISIBLE")
            Cactivo = mdtListadocontroles1.Rows(i).Item("ACTIVO")
            If Cactivo = False Or Cvisible = False Then
                ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_MODIFICAR_ESTADO_CONTROLES_POR_USUARIO", My.Application.IDAPLICACION, Ncontrol, Cactivo, Cvisible, My.Application.IDUSUARIO)
            End If
        Next
    End Sub
    '----------------------------------------


    Private Sub ListadoDeControlesPorUsuario()
        mDt = New DataTable
        mDt = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_DE_CONTROLES_POR_USUARIO", GLUE_Aplicaciones.EditValue, GLUE_Usuarios.EditValue)
        If Not IsNothing(mDt) Then
            GcPermisos.DataSource = mDt
        Else
            GcPermisos.DataSource = Nothing
        End If
    End Sub

    Private Sub GrabarPermisosPorUsuario()
        IdAplicacionSel = GLUE_Aplicaciones.EditValue
        IdUsuarioSel = GLUE_Usuarios.EditValue
        For i As Integer = 0 To GvPermisos.RowCount - 1

            IdControlSel = GvPermisos.GetRowCellValue(i, "IDCONTROL")
            VisibleSel = GvPermisos.GetRowCellValue(i, "VISIBLE")
            ActivoSel = GvPermisos.GetRowCellValue(i, "ACTIVO")
            ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_INGRESAR_PERMISO_POR_USUARIO", IdControlSel, IdAplicacionSel, IdUsuarioSel, VisibleSel, ActivoSel)
        Next
        ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LIMPIAR_LISTADO_CONTROLES_POR_USUARIO", IdAplicacionSel, IdUsuarioSel)
    End Sub

    Private Sub IniciarAplicacion()
        ListarControles() 'carga listado de aplicaciones
        If TipoIngreso = Tipo.Perfil Then
            PanelUsuario.Enabled = False
            PanelUsuario.Visible = False
            ListarPerfiles()
        ElseIf TipoIngreso = Tipo.Usuario Then
            PanelPerfil.Enabled = False
            PanelPerfil.Visible = False
            ListarUsuarios()
        End If
    End Sub

    Private Sub ListarControles()
        mDt = New DataTable
        mDt = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_APLICACIONES")
        If Not IsNothing(mDt) Then
            GLUE_Aplicaciones.Properties.DataSource = mDt
        Else
            GLUE_Aplicaciones.Properties.DataSource = Nothing
        End If
    End Sub

#End Region



#Region "Eventos"

    Private Sub BTCancelar_Click(sender As Object, e As EventArgs) Handles BTCancelar.Click
        Me.Close()
    End Sub

    Private Sub TSB_Maximizar_Click(sender As Object, e As EventArgs) Handles TSB_Maximizar.Click
        If Me.WindowState = FormWindowState.Maximized Then
            Me.WindowState = FormWindowState.Normal
        Else
            Me.WindowState = FormWindowState.Maximized
        End If
    End Sub

    Private Sub EditarPermisos_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            IniciarAplicacion()
            validarChebox()
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al listar controles por perfil." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    Private Sub GLUE_Aplicaciones_EditValueChanged(sender As Object, e As EventArgs) Handles GLUE_Aplicaciones.EditValueChanged
        Try
            ListarControlesPorPerfil()
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al listar controles por perfil." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    Private Sub GLUE_Perfiles_EditValueChanged(sender As Object, e As EventArgs) Handles GLUE_Perfiles.EditValueChanged
        Try
            ListarControlesPorPerfil()
            validarChebox()
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al listar controles por perfil." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    Private Sub BtnGrabar_Click(sender As Object, e As EventArgs) Handles BtnGrabar.Click
        Try
            If GvPermisos.RowCount > 0 Then
                If IsNothing(GLUE_Aplicaciones.EditValue) Then
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: no se ha seleccionado una aplicación válida.").ShowDialog()
                    Exit Sub
                End If
                If TipoIngreso = Tipo.Perfil Then
                    If IsNothing(GLUE_Perfiles.EditValue) Then
                        GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: no se ha seleccionado un perfil válido.").ShowDialog()
                        Exit Sub
                    End If
                    GrabarPermisosPorPerfil()
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Correcto, "Se grabó correctamente.").ShowDialog()
                    Me.Close()
                ElseIf TipoIngreso = Tipo.Usuario Then
                    If IsNothing(GLUE_Usuarios.EditValue) Then
                        GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: no se ha seleccionado un usuario válido.").ShowDialog()
                        Exit Sub
                    End If
                    GrabarPermisosPorUsuario()
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Correcto, "Se grabó correctamente").ShowDialog()
                    Me.Close()
                End If
            Else
                GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: selección no válida.").ShowDialog()
            End If
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar grabar." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    Private Sub GLUE_Usuarios_EditValueChanged(sender As Object, e As EventArgs) Handles GLUE_Usuarios.EditValueChanged
        Try
            ListadoDeControlesPorUsuario()
            validarChebox()
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar listar controles por usuario." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

#End Region




    Private Sub CB_ActivarTodos_CheckedChanged(sender As Object, e As EventArgs) Handles CHB_ActivarTodos.CheckedChanged
        Try
            If IsNothing(GLUE_Aplicaciones.EditValue) Then
                GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: no se ha seleccionado una aplicación válida.").ShowDialog()
                Exit Sub
            End If

            If TipoIngreso = Tipo.Perfil Then
                If IsNothing(GLUE_Perfiles.EditValue) Then
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: no se ha seleccionado un perfil válido.").ShowDialog()
                    Exit Sub
                End If
            ElseIf TipoIngreso = Tipo.Usuario Then

                If IsNothing(GLUE_Usuarios.EditValue) Then
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: no se ha seleccionado un Usuario válido.").ShowDialog()
                    Exit Sub
                End If
            End If


            IdAplicacionSel = GLUE_Aplicaciones.EditValue
            IdPerfilSel = GLUE_Perfiles.EditValue

            If CHB_ActivarTodos.Checked = False Then
                For i As Integer = 0 To GvPermisos.RowCount - 1
                    GvPermisos.SetRowCellValue(i, "ACTIVO", False)
                Next
            Else
                For i As Integer = 0 To GvPermisos.RowCount - 1
                    GvPermisos.SetRowCellValue(i, "ACTIVO", True)
                Next
            End If

        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR RB001: al intentar Seleccionar todo los registros visibles." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try

    End Sub
    Sub validarChebox()
        Try

            If Not IsNothing(GLUE_Perfiles.EditValue) Or Not IsNothing(GLUE_Usuarios.EditValue) Then
                CHB_VisibleTodos.Enabled = True
                CHB_ActivarTodos.Enabled = True
            Else
                CHB_VisibleTodos.Enabled = False
                CHB_ActivarTodos.Enabled = False
            End If
            '  CHB_VisibleTodos.Checked = False
            '  CHB_ActivarTodos.Checked = False

        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR CH0024: " & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

    Private Sub CHB_VisibleTodos_CheckedChanged(sender As Object, e As EventArgs) Handles CHB_VisibleTodos.CheckedChanged
        Try

            If IsNothing(GLUE_Aplicaciones.EditValue) Then
                GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: no se ha seleccionado una aplicación válida.").ShowDialog()
                Exit Sub
            End If

            If TipoIngreso = Tipo.Perfil Then
                If IsNothing(GLUE_Perfiles.EditValue) Then
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: no se ha seleccionado un perfil válido.").ShowDialog()
                    Exit Sub
                End If
            ElseIf TipoIngreso = Tipo.Usuario Then

                If IsNothing(GLUE_Usuarios.EditValue) Then
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: no se ha seleccionado un Usuario válido.").ShowDialog()
                    Exit Sub
                End If
            End If
            IdAplicacionSel = GLUE_Aplicaciones.EditValue
            IdPerfilSel = GLUE_Perfiles.EditValue
            If CHB_VisibleTodos.Checked = False Then
                For i As Integer = 0 To GvPermisos.RowCount - 1
                    GvPermisos.SetRowCellValue(i, "VISIBLE", False)
                Next
            Else
                For i As Integer = 0 To GvPermisos.RowCount - 1
                    GvPermisos.SetRowCellValue(i, "VISIBLE", True)
                Next
            End If
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR RB001: al intentar Seleccionar todo los registros visibles." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try

    End Sub
End Class

SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_CONTROLES_POR_PERFIL

USE [SIGMAMIRROR]
GO
/****** Object:  StoredProcedure [dbo].[SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_CONTROLES_POR_PERFIL]    Script Date: 28/2/2020 18:12:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_CONTROLES_POR_PERFIL]
@IDAPLICACION INT,
@IDPERFIL INT
AS

SELECT PMSC.NombreControl AS 'NOMBRECONTROL',
PMSP.visible AS 'VISIBLE',
PMSP.enable AS 'ACTIVO'
FROM PLUS_MAESTRO_SEGURIDAD_PERMISOS PMSP
INNER JOIN PLUS_MAESTRO_SEGURIDAD_CONTROLES PMSC ON PMSP.idControl = PMSC.IdControl
INNER JOIN dbo.PLUS_MAESTRO_SEGURIDAD_PERMISOS_POR_USUARIO AS pmsppu ON pmsppu.idControl = PMSC.IdControl
WHERE PMSP.idAplicacion =  @IDAPLICACION
AND PMSP.idPerfil = @IDPERFIL
AND PMSP.activo = 1
AND pmsppu.activo = 1

SP_HERRAMIENTAS_SIGMA_SEGURIDAD_MODIFICAR_ESTADO_CONTROLES_POR_USUARIO

USE [SIGMAMIRROR] ya esta registrado en el servidor productivo
GO
/****** Object:  StoredProcedure [dbo].[SP_HERRAMIENTAS_SIGMA_SEGURIDAD_MODIFICAR_ESTADO_CONTROLES_POR_USUARIO]    Script Date: 28/2/2020 17:31:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[SP_HERRAMIENTAS_SIGMA_SEGURIDAD_MODIFICAR_ESTADO_CONTROLES_POR_USUARIO]
@idaplicacion INT,
@nombrecontrol varchar(300),
@activo BIT,
@visible BIT,
@usuario INT

AS
DECLARE @idcontroles INT =(SELECT idcontrol FROM plus_maestro_seguridad_controles WHERE NombreControl=@nombrecontrol)
IF @idcontroles <> 0
begin
UPDATE PLUS_MAESTRO_SEGURIDAD_PERMISOS_POR_USUARIO SET enable=@activo,visible=@visible WHERE idControl=@idcontroles AND idUsuario=@usuario AND idAplicacion=@idaplicacion
end

jueves, 27 de febrero de 2020

Uso del tipo de dato Enum vb.net

#Region "Declaraciones"

    Public Enum Tipo
        Perfil
        Usuario
    End Enum

    Public TipoIngreso As Tipo
    Private mDt As New DataTable
    Private IdAplicacionSeleccionada As Integer
    Private IdAplicacionSel As Integer
    Private IdPerfilSel As Integer
    Private IdUsuarioSel As Integer
    Private IdControlSel As Integer
    Private VisibleSel As Boolean
    Private ActivoSel As Boolean


#End Region
decisiones donde se asigna

Private Sub IniciarAplicacion()
        ListarControles() 'carga listado de aplicaciones
        If TipoIngreso = Tipo.Perfil Then
            PanelUsuario.Enabled = False
            PanelUsuario.Visible = False
            ListarPerfiles()
        ElseIf TipoIngreso = Tipo.Usuario Then
            PanelPerfil.Enabled = False
            PanelPerfil.Visible = False           
            ListarUsuarios()
        End If
    End Sub
funciones donde se asigna

Private Sub BBI_PermisosPorPefil_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_PermisosPorPefil.ItemClick
        Try
            'If ValidarCotraseña() Then

            FrmEditarPermisos = New EditarABMpermisos
            FrmEditarPermisos.TipoIngreso = EditarABMpermisos.Tipo.Perfil
            FrmEditarPermisos.ShowDialog()
            'End If
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir 'Editar Permisos por Perfil'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub




  Private Sub BBI_PermisosPorUsuario_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_PermisosPorUsuario.ItemClick
        Try
            'If ValidarCotraseña() Then
            FrmEditarPermisos = New EditarABMpermisos
            FrmEditarPermisos.TipoIngreso = EditarABMpermisos.Tipo.Usuario
            FrmEditarPermisos.ShowDialog()
            '  End If
        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Errores, "#ERROR: al intentar abrir 'Editar Permisos por Usuario'." & vbCrLf & ex.Message.ToString).ShowDialog()
        End Try
    End Sub

miércoles, 26 de febrero de 2020

RECORRER Menu System.Windows.Forms.ToolStripMenuItem

    Private Sub RegistroItems()
        Dim Menu As System.Windows.Forms.ToolStripMenuItem
        Dim SubMenu As System.Windows.Forms.ToolStripDropDownItem
        Dim submenu_ As System.Windows.Forms.ToolStripItem
        Dim I, H As Integer
        Dim NombreControl, DescripcionControl As String
        Try
            objInformesRN = New InformesRN.InformesRN
            objInformesRN.InicializarBase()
            For Each Menu In Me.MenuStrip1.Items
                NombreControl = Menu.Name
                DescripcionControl = Menu.Tag
                If DescripcionControl = "" Then
                    DescripcionControl = "Menu,Sin Definir"
                End If
                objInformesRN.ControlesMenuInsertar(My.Application.IDAPLICACION, NombreControl, DescripcionControl)

                For I = 0 To Menu.DropDownItems.Count - 1
                    If Menu.DropDownItems.Item(I).GetType().FullName = "System.Windows.Forms.ToolStripMenuItem" Then '---->Menu
                        SubMenu = Menu.DropDownItems.Item(I) '--->opciones del menu

                        NombreControl = SubMenu.Name
                        DescripcionControl = SubMenu.Tag
                        If DescripcionControl = "" Then
                            DescripcionControl = "SubMenu,Sin Definir"
                        End If
                        objInformesRN.ControlesMenuInsertar(My.Application.IDAPLICACION, NombreControl, DescripcionControl)

                        For H = 0 To SubMenu.DropDownItems.Count - 1
                            If SubMenu.DropDownItems.Item(H).GetType().FullName = "System.Windows.Forms.ToolStripMenuItem" Then '---->Menu
                                submenu_ = SubMenu.DropDownItems.Item(H) '--->opciones del menu

                                NombreControl = submenu_.Name
                                DescripcionControl = submenu_.Tag
                                If DescripcionControl = "" Then
                                    DescripcionControl = "OpcMenu,Sin Definir"
                                End If
                                objInformesRN.ControlesMenuInsertar(My.Application.IDAPLICACION, NombreControl, DescripcionControl)
                            End If
                        Next
                    End If
                Next
            Next
        Catch ex As Exception
            MessageBox.Show("#ERROR RC002, No se pudo realizar el registro de los controles: " + ex.ToString)
        End Try

    End Sub

Clase ConexionSQL.vb , aplicación seguridad.

Imports System.Data.SqlClient

Public Class ConexionSQL


#Region "Declaraciones"

    Private Shared StrCon As String = ""
    Private Shared mCon As SqlConnection
    Private Shared mDs As New DataSet
    Private Shared mDa As New SqlDataAdapter
    Private Shared mDt As New DataTable
    Private Shared mCom As New SqlCommand
    Private Shared ObjAccesoArchivo As New AccesoArchivo
    Private Shared ObjAccesoBD As AccesoXML
    Private Shared Servidor, Base As String
    Private Shared mDtResultado As New DataTable
    Private Shared i As Integer

#End Region


#Region "Funciones"

    Public Shared Function ExecuteDataset(ByVal unCommandText As String) As DataSet
        Try
            mDs = New DataSet
            mCon = New SqlConnection(StrCon)
            mDa = New SqlDataAdapter(unCommandText, mCon)
            mCon.Open()
            mDa.Fill(mDs)
            Return mDs
        Catch ex As Exception
            MsgBox("Ocurrio un error en funcion DATASET. " & ex.Message.ToString)
            Return Nothing
        Finally
            mCon.Close()
            mCon.Dispose()
        End Try
    End Function

    Public Shared Function ExecuteDataTable(ByVal unCommandText As String) As DataTable
        Try
            mDt = New DataTable
            mCon = New SqlConnection(StrCon)
            mDa = New SqlDataAdapter(unCommandText, mCon)
            mCon.Open()
            mDa.Fill(mDt)
            Return mDt
        Catch ex As Exception
            MsgBox("Ocurrio un error en funcion DATATABLE. " & ex.Message.ToString)
            Return Nothing
        Finally
            mCon.Close()
            mCon.Dispose()
        End Try
    End Function

    Public Shared Function ObtenerBase() As String
        Return Base
    End Function

    Public Shared Function ObtenerServidor() As String
        Return Servidor
    End Function


#Region "RN"

    Public Shared Function EjecutarSP(ByVal unStoredProcedure As String, ParamArray param() As String) As DataTable
        mDtResultado = New DataTable
        EjecutarStoredProcedure(unStoredProcedure, param)
        mDtResultado = mDt
        Return mDtResultado
    End Function

    Public Shared Function EjecutarSP(ByVal unStoredProcedure As String) As DataTable
        mDtResultado = New DataTable
        EjecutarStoredProcedure(unStoredProcedure)
        mDtResultado = mDt
        Return mDtResultado
    End Function

#End Region


#Region "BD"

    Private Shared Sub EjecutarStoredProcedure(ByVal unStoredProcedure As String, ParamArray parametro() As String)
        InicializarDatos()
        Ejecutar(unStoredProcedure, parametro)
    End Sub

    Private Shared Sub EjecutarStoredProcedure(ByVal unStoredProcedure As String)
        InicializarDatos()
        Ejecutar(unStoredProcedure)
    End Sub

    Private Shared Sub InicializarDatos()
        mCon = New SqlConnection
        ObjAccesoArchivo = New AccesoArchivo
        mCon.ConnectionString = ObjAccesoArchivo.Conn.ConnectionString
        ObjAccesoBD = New AccesoXML
        Base = ObjAccesoBD.BaseDatos
        Servidor = ObjAccesoBD.Servidor
    End Sub

    Public Shared Function Ejecutar(Procedimiento As String, ParamArray Parametro() As Object) As DataTable
        Try
            i = 0
            mCon.Open()
            mCom = New SqlCommand
            mCom.CommandText = Procedimiento
            mCom.CommandType = CommandType.StoredProcedure
            mCom.Connection = mCon
            mDt = New DataTable
            SqlCommandBuilder.DeriveParameters(mCom)
            For i = 0 To Parametro.Length
                If i > 0 Then
                    CType(mCom.Parameters(i), SqlParameter).Value = Parametro(i - 1)
                End If
            Next
            mDt = CargarDataTable(mCom.ExecuteReader)
            Return mDt
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Mensaje de Sistema")
            mDt = Nothing
            Return mDt
        Finally
            mCon.Close()
        End Try
    End Function

    Private Shared Function CargarDataTable(ByVal Rst As SqlDataReader) As DataTable
        mDt = New DataTable
        Try
            If Rst.HasRows Then
                mDt.Load(Rst)
            Else
                mDt = Nothing
            End If
            Return mDt
        Catch ex As Exception
            Return mDt
        Finally
            Rst.Close()
        End Try
    End Function

#End Region


#End Region


End Class

Clase SQLconexion

Imports System.Data.SqlClient

Public Class ConexionSQL


#Region "Declaraciones"

    Private Shared StrCon As String = ""
    Private Shared mCon As SqlConnection
    Private Shared mDs As New DataSet
    Private Shared mDa As New SqlDataAdapter
    Private Shared mDt As New DataTable
    Private Shared mCom As New SqlCommand
    Private Shared ObjAccesoArchivo As New AccesoArchivo
    Private Shared ObjAccesoBD As AccesoXML
    Private Shared Servidor, Base As String
    Private Shared mDtResultado As New DataTable
    Private Shared i As Integer

#End Region


#Region "Funciones"

    Public Shared Function ExecuteDataset(ByVal unCommandText As String) As DataSet
        Try
            mDs = New DataSet
            mCon = New SqlConnection(StrCon)
            mDa = New SqlDataAdapter(unCommandText, mCon)
            mCon.Open()
            mDa.Fill(mDs)
            Return mDs
        Catch ex As Exception
            MsgBox("Ocurrio un error en funcion DATASET. " & ex.Message.ToString)
            Return Nothing
        Finally
            mCon.Close()
            mCon.Dispose()
        End Try
    End Function

    Public Shared Function ExecuteDataTable(ByVal unCommandText As String) As DataTable
        Try
            mDt = New DataTable
            mCon = New SqlConnection(StrCon)
            mDa = New SqlDataAdapter(unCommandText, mCon)
            mCon.Open()
            mDa.Fill(mDt)
            Return mDt
        Catch ex As Exception
            MsgBox("Ocurrio un error en funcion DATATABLE. " & ex.Message.ToString)
            Return Nothing
        Finally
            mCon.Close()
            mCon.Dispose()
        End Try
    End Function

    Public Shared Function ObtenerBase() As String
        Return Base
    End Function

    Public Shared Function ObtenerServidor() As String
        Return Servidor
    End Function


#Region "RN"

    Public Shared Function EjecutarSP(ByVal unStoredProcedure As String, ParamArray param() As String) As DataTable
        mDtResultado = New DataTable
        EjecutarStoredProcedure(unStoredProcedure, param)
        mDtResultado = mDt
        Return mDtResultado
    End Function

    Public Shared Function EjecutarSP(ByVal unStoredProcedure As String) As DataTable
        mDtResultado = New DataTable
        EjecutarStoredProcedure(unStoredProcedure)
        mDtResultado = mDt
        Return mDtResultado
    End Function

#End Region


#Region "BD"

    Private Shared Sub EjecutarStoredProcedure(ByVal unStoredProcedure As String, ParamArray parametro() As String)
        InicializarDatos()
        Ejecutar(unStoredProcedure, parametro)
    End Sub

    Private Shared Sub EjecutarStoredProcedure(ByVal unStoredProcedure As String)
        InicializarDatos()
        Ejecutar(unStoredProcedure)
    End Sub

    Private Shared Sub InicializarDatos()
        mCon = New SqlConnection
        ObjAccesoArchivo = New AccesoArchivo
        mCon.ConnectionString = ObjAccesoArchivo.Conn.ConnectionString
        ObjAccesoBD = New AccesoXML
        Base = ObjAccesoBD.BaseDatos
        Servidor = ObjAccesoBD.Servidor
    End Sub

    Public Shared Function Ejecutar(Procedimiento As String, ParamArray Parametro() As Object) As DataTable
        Try
            i = 0
            mCon.Open()
            mCom = New SqlCommand
            mCom.CommandText = Procedimiento
            mCom.CommandType = CommandType.StoredProcedure
            mCom.Connection = mCon
            mDt = New DataTable
            SqlCommandBuilder.DeriveParameters(mCom)
            For i = 0 To Parametro.Length
                If i > 0 Then
                    CType(mCom.Parameters(i), SqlParameter).Value = Parametro(i - 1)
                End If
            Next
            mDt = CargarDataTable(mCom.ExecuteReader)
            Return mDt
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Mensaje de Sistema")
            mDt = Nothing
            Return mDt
        Finally
            mCon.Close()
        End Try
    End Function

    Private Shared Function CargarDataTable(ByVal Rst As SqlDataReader) As DataTable
        mDt = New DataTable
        Try
            If Rst.HasRows Then
                mDt.Load(Rst)
            Else
                mDt = Nothing
            End If
            Return mDt
        Catch ex As Exception
            Return mDt
        Finally
            Rst.Close()
        End Try
    End Function

#End Region


#End Region


End Class

Limpiar Memory Stream



memoryStream = new MemoryStream(memoryStream.Capacity());

memoryStream.SetLength(0);

Los mail de oulook no se pueden reenviar.

 cuando en el asunto poseen un caracter especial por ejemplo @#$ los correos no salen y no te muestra ningun correo de rebote, especialmente...