Tironemota

VisualBasic

VisualBasic
30/08/2022

Buscar:
Contenido
ÍNDICE
Eliminar un registro
Funciones
Función DateAdd() Función para agregar o restar un intervalo de tiempo especificado de una fecha.
Función DatePart() En Vista SQL muestra intervalo de fecha
Función ParcFecha() En Cuadro de texto y consulta Vista Diseño muestra intervalo de fecha
Función MsgBox
Mostrar variable en MsgBox
Mostrar constante en MsgBox
Concatenar texto, variable y constante en MsgBox
Construir y diseñar un MsgBox
Prompt (Texto a mostrar en un MsgBox)
Buttons (Botones a mostrar en un MsgBox)
vbOKOnly (Muestra el botón Aceptar)
vbOKCancel (Muestra los botones Aceptar y Cancelar)
vbAbortRetryIgnore (Muestra los botones Anular, Reintentar y Omitir)
vbYesNoCancel (Muestra los botones Sí, No y Cancelar)
vbYesNo (Muestra los botones Sí y No)
vbRetryCancel (Muestra los botones Reintentar y Cancelar)
vbCritical (Muestra el icono de mensaje crítico)
vbQuestion (Muestra icono Consulta de advertencia)
vbExclamation (Muestra icono de mensaje de advertencia)
vbInformation (Muestra icono de mensaje de información)
vbDefaultButton1 (El primer botón es el predeterminado)
vbDefaultButton2 (El segundo botón es el predeterminado)
vbDefaultButton3 (El tercer botón es el predeterminado)
vbDefaultButton4 (El cuarto botón es el predeterminado)
vbApplicationModal (Aplicación Modal: el usuario debe responder al cuadro de mensaje antes de continuar trabajando en la aplicación actual)
vbSystemModal (Modal del sistema; todas las aplicaciones se suspenden hasta que el usuario responde al cuadro de mensaje)
vbMsgBoxHelpButton (Agrega el botón Ayuda al cuadro de mensaje)
vbMsgBoxSetForeground (Especifica la ventana del cuadro de mensaje como la ventana en primer plano)
vbMsgBoxRight (Se alinea el texto a la derecha)
vbMsgBoxRtlReading (Especifica que el texto debe mostrarse de derecha a izquierda en sistemas en hebreo y árabe)
Title (Texto que se muestra en la barra de título)
HelpFile (Archivo de ayuda)
Context (Expresión numérica que es el número de contexto de Ayuda asignado al tema de Ayuda correspondiente por el autor de la Ayuda)
Ventana emergente
Variables en MsgBox
vbCrLf (Salto de línea en MsgBox)
vbNewLine (Salto de línea en MsgBox)
DoCmd
Métodos de DoCmd
Argumentos de DoCmd
Constante de DoCmd

Funciones 30/08/2022

FunciónAcción
DateAdd()Función para agregar o restar un intervalo de tiempo especificado de una fecha.
DateAdd("d", 2, "17/01/2014") Resultado 19/01/2014
DateAdd("m", 2, "17/01/2014") Resultado 17/03/2014
DateAdd("m", -2, "17/01/2014") Resultado 17/11/2013
DatePart()En Vista SQL muestra intervalo de fecha
DatePart("d","15/8/2021") Resultado día: 15
DatePart("m","15/8/2021") Resultado mes: 8
DatePart("yyyy","15/8/2021") Resultado año: 2021
DatePart("yyyy",[FechaEnvio])
ParcFecha()En Cuadro de texto y consulta Vista Diseño muestra intervalo de fecha
ParcFecha("d";"15/8/2021") Resultado día: 15
ParcFecha("m";"15/8/2021") Resultado mes: 8
ParcFecha("aaaa";"15/8/2021") Resultado año: 2021
ParcFecha("aaaa";[FechaEnvio])

Eliminar un registro 24/11/2022

Controlar de una forma más eficaz a la hora de eliminar un registro en un formulario continuo si pulsamos la tecla "Supr"

La doble confirmación. Muchas veces ante un formulario o subformulario continuo a la hora de borrar una línea simplemente con marcarla y pulsar la tecla "Supr" es suficiente donde nos puede avisar o no de la eliminación de esa línea. Pero nosotros aprovechando esa interactuación a través de los MsgBox lo que pretendemos es asegurarnos que el usuario final está seguro que desea eliminar dicha línea y que no ha sido borrada por error.

Private Sub Form_Delete(Cancel As Integer)
    DoCmd.SetWarnings False ' Desactivo los mensajes de error del sistema
    Dim mensa, mensa1 As String ' Declaro las variables
    mensa = MsgBox("¿Esta seguro que desea eliminar el registro de este expediente?", vbExclamation + vbYesNo, "Eliminar") ' Primera Pregunta
    If mensa = vbYes Then
        mensa1 = MsgBox("¿Realmente desea ELIMINAR el registro de este expediente?", vbExclamation + vbYesNo, "Eliminar") ' Segunda Pregunta
        If mensa1 = vbYes Then
            Exit Sub
        Else
            Cancel = -1
        End If
    Else
        Cancel = -1
    End If
End Sub

Seleccionamos la línea que deseamos eliminar y al pulsar en la tecla Supr nos hace una primera pregunta.

[Pulsar-tecla-Supr]

Si decimos que NO, sale del evento y no pasa nada, si pulsamos en SI nos hace una segunda pregunta.

[Pulsar-tecla-Supr]

En este caso, si pulsamos en NO no pasará nada, pero si pulsamos en en SI, entonces el registro seleccionado desaparecerá.

Las cajas de mensaje devuelven un valor el que se podrá almacenar en una variable. El valor devuelto por esta función dependerá del botón que se halla pulsado:

Botón pulsadoValor de retorno
Aceptar1
Cancelar2
Anular3
Reintentar4
Ignorar5
Si6
No7

MsgBox 23/11/2022

Función MsgBox

Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve un número entero que indica en qué botón hizo clic el usuario.

Para crear una ventana emergente utilizamos la palabra reservada MsgBox

[Ventana-emergente]

Para mostrar el valor de una variable:

[Variable-en-MsgBox]

Para mostrar el valor de una constante:

[Constante-en-MsgBox]

Para concatenar un texto con una variable y una constante:

[Concatenar-texto-con-variable]
Construir y diseñar en su forma más simple

Sintaxis: MsgBox(Prompt,[Buttons As VbMsgBoxStyle = vbOKOnly],[Title],[HelpFile],[Context]) As VbMsgBoxResult

La estructura básica para mostrar en MsgBox es así:

[Estructura-de-MsgBox]

Los MsgBox tienen tres argumentos fundamentales: Prompt, Buttons y Title

Prompt (Texto a mostrar)

Este argumento es obligatorio configurarlo y representa el texto que mostrará nuestro mensaje. La longitud máxima del mensaje es de aproximadamente 1024 caracteres, dependiendo del ancho de los caracteres utilizados. Si el mensaje consta de más de una línea, puede separar las líneas utilizando un carácter de retorno de carro ( Chr (13) ), un carácter de salto de línea ( Chr (10) ) o una combinación de caracteres de retorno de carro - salto de línea ( Chr (13) y Chr (10) ) entre cada línea.

[MsgBox(prompt)]

Buttons (Botones)

Este es opcional y en él configuramos el como queremos que se muestre el mensaje, cuantos botones ha de llevar, el icono que mostrará y cual será el botón predeterminado. Si se omite, el valor predeterminado para los botones es 0. En este argumento se pueden usar uno o varios de los siguientes valores a la vez según nuestras necesidades:

Buttons = vbOKOnly

Muestra el botón Aceptar. Su valor es 0. Predeterminado.

[vbOKOnly]

Buttons = vbOKCancel

Muestra los botones Aceptar y Cancelar. Su valor es 1.

[vbOKCancel]

Buttons = vbAbortRetryIgnore

Muestra los botones Anular, Reintentar y Omitir. Su valor es 2

[vbAbortRetryIgnore]

Buttons = vbYesNoCancel

Muestra los botones Sí, No y Cancelar. Su valor es 3.

[vbYesNoCancel]

Buttons = vbYesNo

Muestra los botones Sí y No. Su valor es 4

[vbYesNo]

Buttons = vbRetryCancel

Muestra los botones Reintentar y Cancelar. su valor es 5.

[vbRetryCancel]

Buttons = vbCritical

Muestra el icono de mensaje crítico. Su valor es 16.

[vbCritical]

Buttons = vbQuestion

Muestra icono Consulta de advertencia. Su valor es 32

[vbQuestion]

Buttons = vbExclamation

Muestra icono de mensaje de advertencia. Su valor es 48

[vbExclamation]

Buttons = vbInformation

Muestra icono de mensaje de información. Su valor es 64.

[vbInformation]

Buttons = vbDefaultButton1

El primer botón es el predeterminado. Su valor es 0.

Buttons = vbDefaultButton2

El segundo botón es el predeterminado. Su valor es 256.

Buttons = vbDefaultButton3

El tercer botón es el predeterminado. Su valor es 512.

Buttons = vbDefaultButton4

El cuarto botón es el predeterminado. Su valor es 768.

Buttons = vbApplicationModal

Aplicación Modal; el usuario debe responder al cuadro de mensaje antes de continuar trabajando en la aplicación actual. Su valor es 0.

Buttons = vbSystemModal

Modal del sistema; todas las aplicaciones se suspenden hasta que el usuario responde al cuadro de mensaje. Su valor es 4096.

Buttons = vbMsgBoxHelpButton

Agrega el botón Ayuda al cuadro de mensaje. Su valor es 16384.

[vbMsgBoxHelpButton]

Buttons = vbMsgBoxSetForeground

Especifica la ventana del cuadro de mensaje como la ventana en primer plano. Su valor es 65536.

Buttons = vbMsgBoxRight

Se alinea el texto a la derecha. Su valor es 524288.

Buttons = vbMsgBoxRtlReading

Especifica que el texto debe mostrarse de derecha a izquierda en sistemas en hebreo y árabe. Su valor es 1048576.

Valores devueltos
ConstanteValorDescripción
vbOK1Aceptar
vbCancel2Cancelar
vbAbort3Anular
vbRetry4Reintentar
vbIgnore5Ignorar
vbYes6Si
vbNo7No

Title (Título Opcional)

Es el texto que se muestra en la barra de título, si se omite se mostrará el título de la aplicación.

msgbox "Texto en la barra de título," & Chr(13) & "si se omite se mostrará el título de la aplicación." & Chr(13) & "Microsoft Access", vbExclamation
[Título-Opcional]
msgbox "Texto en la barra de título," & Chr(13) & "como ejemplo es:" & Chr(13) & "TIRONEMOTA", vbExclamation, "TIRONEMOTA"
[Título-Opcional]

Ayuda contextual

  • HelpFile (Archivo de ayuda): Opcional. Expresión de cadena que identifica el archivo de ayuda que se utilizará para proporcionar ayuda contextual para el cuadro de diálogo. Si se proporciona un archivo de ayuda, también se debe proporcionar contexto.
  • Context (Contexto): Opcional. Expresión numérica que es el número de contexto de Ayuda asignado al tema de Ayuda correspondiente por el autor de la Ayuda. Si se proporciona contexto , también se debe proporcionar el Archivo de ayuda.

Y otro punto muy interesante a favor de este argumento es que, en función de los botones que hayamos elegido mostrar en el mensaje de texto, una vez que nuestro usuario pulse uno de ellos, la aplicación devolverá un valor que podremos capturar y actuar en consecuencia. Vamos a verlos:

ConstanteValorDescripción
vbOK1Aceptar
vbCancel2Cancelar
vbAbort3Anular
vbRetry4Reintentar
vbIgnore5Ignorar
vbYes6Si
vbNo7No

El valor de la izquierda es el que devuelve la aplicación cuando pulsemos el botón de la derecha.

Añadiéndo interacción con el usuario

Por ejemplo, tenemos un botón para enviarle un email, no vamos a entrar aquí en como se envía el email, pero intentando informar al usuario de lo que estamos haciendo nos vamos a cerciorar de que es eso lo que realmente quiere hacer así que le mostraremos un MsgBox preguntando "¿Realmente quiere enviar el email?". En este caso el MsgBox tendrá dos botones "" o "No" y en función de lo que pulse el usuario enviaremos el email o simplemente cerraremos el mensaje sin hacer nada.

[MsgBox-Interación-usuario]

Combinado tres opciones:

  • vbYesNo: Mostraremos dos botones "" y "No"
  • vbQuestion: El icono será el de interrogación
  • vbDefaultButton1: de los dos botones, el primero de ellos "" será el que esté seleccionado por defecto al abrir el MsgBox. Esto permitirá, con solo pulsar intro, aceptar el mensaje.

La toma de decisiones la vamos a realizar a través de un SELECT CASE al que le vamos a pasar el botón que hemos pulsado en nuestro MsgBox. Esto quiere decir que, al llamar al MsgBox dentro de un SELECT CASE, en cuanto pulsemos "Sí" (vbYes) o "No" (vbNo) y se cierre el MsgBox, nuestro SELECT CASE tomará el valor del botón pulsado.

Private Sub btnEmail_Click()
    'Llamamos el MsgBox directamente desde el SELECT CASE
    Select Case MsgBox("¿Realmente quiere enviar el email?", vbYesNo Or vbQuestion Or vbDefaultButton1, "Tironemota")
        Case vbYes
            'Que hacer si se pulsa Yes
            MsgBox "Email enviado"
        Case vbNo
            'Que hacer si se pulsa No
            MsgBox "No enviado"
    End Select
End Sub
[MsgBox-Si-ó-No]

Otro ejemplo, supongamos que estamos mandando el email y a mitad del proceso tenemos un error y no se puede enviar, podríamos informar al usuario con un MsgBox de que ha ocurrido un error y darle la opción de Anular todo el proceso, Reintentar enviarlo de nuevo o Ignorar el error y seguir la ejecución del programa:

Private Sub btnEmail_Click()
    'Llamamos el MsgBox directamente desde el SELECT CASE
    Select Case MsgBox("A ocurrido un error durante el envio del email." & vbCrLf & "¿Qué  desea hacer?", vbAbortRetryIgnore Or vbExclamation Or vbDefaultButton1, "Tironemota")
        Case vbAbort
            'Que hacer si se pulsa Anular
            MsgBox "Anular"
        Case vbRetry
            'Que hacer si se pulsa Reintentar
            MsgBox "Reintentar"
        Case vbIgnore
            'Que hacer si se pulsa Ignorar
            MsgBox "Ignorar"
    End Select
End Sub
[MsgBox]

Como se puede observar hemos cambiado el icono del MsgBox para que sea más representativo de que ha ocurrido un error y hemos añadido un tercer botón, también hemos insertado un salto de línea para hacerlo más legible lo que hemos hecho con & vbCrLf &.

En este caso, según el botón que pulsemos, el MsgBox devolverá:

  • vbAbort
  • vbRetry
  • vbIgnore

Variables en MsgBox 08/10/2022

'Declaro variables
Dim Texto, Estilo, Titulo, Mostrar, Repuesta
'Texto a mostrar
Texto = "Ejemplo de uso de variables"
' Muestra los botones Sí y No, icono de mensaje de información
' y segundo botón es el predeterminado.
Estilo = vbYesNo + vbInformation + vbDefaultButton2
' Texto que se muestra en la barra de título.
Titulo = "MsgBox Ejemplo"
' Mostrar mensaje.
Mostrar = MsgBox(Texto, Estilo, Titulo)
' Si el usuario eligió sí
If Mostrar = vbYes Then
    ' Realizar alguna acción
    Repuesta = "Yes"
    MsgBox "Pulsaste el botón Si", , "Tutoriales Tironemota"
' Si el usuario eligió no
Else
    ' Realizar alguna acción
    Repuesta = "No"
    MsgBox "Pulsaste el botón No", , "Tutoriales Tironemota"
End If
MsgBox-con-variables

Salto de línea en MsgBox 24/11/2022

En un mensaje muy largo o por estetica requerimos que el texto se muestre en más de una línea, para lograr esto usamos & para concatenar y vbCrLf.

MsgBox "Primera línea" & vbCrLf & "Segunda línea" & vbCrLf & "Tercera línea."

Otra opción es vbNewLine

msgbox "Primera línea" & vbNewLine & "Segunda línea" + (vbNewLine) + "Tercera línea."