Agradezco tus comentarios

Me encantaría conocer tus impresiones acerca de los distintos ejemplos o artículos de este blog, si te es posible deja un comentario en mi libro de visitas. En cambio para preguntas o problemas con alguno de los ejemplos, te ruego me las formules en el foro de Access en grupos Emagister o en en el foro de Access y VBA.

jueves, 3 de enero de 2008

CAPITULO 2.- FUNCIONES DATE, FORMAT. INSTRUCCIÓN IF... THEN... ELSE. SELECT CASE

En el capítulo anterior usábamos la función MsgBox para mostrar un cuadro de mensaje. En este capítulo vamos a ver algunas funciones mas. Comenzaremos con la función Date (Devuelve la
fecha actual).


Para ello abrimos un formulario nuevo y le llamamos frmPrincipal, le ponemos un cuadro de texto independiente al que vamos a llamar txtFecha.


Es posible que te preguntes como se decide el nombre a poner a cada control, en principio exceptuando las palabras reservadas se le puede poner cualquiera, no obstante sería buena idea seguir las convenciones de nomenclatura de Visual Basic. (aunque yo no te aseguro que las siga siempre en el presente tutorial.)


Si has seguido el capítulo anterior ya conoces el Evento "Al abrir" del formulario, pues bien en ese mismo evento vamos a poner lo siguiente:


Forms!frmPrincipal!txtFecha = Date


Básicamente le estaríamos diciendo que en un formulario (Forms) que se llama frmPrincipal y en el campo txtFecha ponga la fecha actual y para eso utilizamos la función Date que nos devuelve la fecha actual.


Tal y como lo hemos escrito funcionaría correctamente, no obstante Access posee algunas palabras clave que son bastante útiles. En este caso vamos a usar la palabra clave Me. Me proporciona una forma de referirse a una instancia específica de la clase donde se está ejecutando el código. Y dicho esto en cristiano, si nos referimos al formulario donde se está ejecutando el código podemos referirnos al mismo con dicha palabra, o lo que es lo mismo podemos sustituir Forms!frmPrincipal por Me, por ello vamos a volver a escribir la instrucción anterior así:



Me.txtFecha = Date


Si nos estuviéramos refiriendo a un formulario distinto al que estamos escribiendo el código, tendríamos que utilizar la forma completa


Ahora sí. Cerramos, guardamos cambios y al abrir, en el campo txtFecha, nos aparece la fecha
actual
. Puedes probar a sustituir Date por Now o por Time y apreciar las diferencias que se producen.


Debería quedarte algo así:




Esto sigue siendo muy fácil ¿No te parece? Seguimos.



En programación, una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no en función del valor de una condición. La más conocida de todas es If...Then...Else que podría traducirse como Si esto es cierto Entonces haz esto En caso contrario haz esto otro


Pues bien, vamos a crear otro cuadro de texto y vamos a llamarle txtFechaPrueba, lo seleccionamos, vamos a sus propiedades...Eventos y en este caso vamos a utilizar uno que se llama "Después de Actualizar" y vamos a escribir en el mismo lo siguiente:


If Me.txtFechaPrueba = Date
Then

MsgBox "Has introducido la fecha actual"
Else
MsgBox "Has introducido una fecha distinta de la actual"
End If


Con esto le estaríamos diciendo Si lo que escribas en el campo txtFechaPrueba es igual a la fecha actual (Date) Entonces muestra un mensaje que ponga "Has introducido la fecha actual",
En caso contrario
muestra un mensaje que diga "Has introducido una fecha distinta de la actual".


Si probamos tal y como está en estos momentos desgraciadamente no va a funcionar adecuadamente, el problema es que VBA considera las fechas en Formato Americano (bueno esto merece un capítulo aparte, dado que no siempre lo hace así), pero lo más probable es que considere la fecha que hemos introducido como mes/día/año y como para nosotros lo normal es día/mes/año, pues vamos a encontrarnos con problemas, para solucionarlo vamos a aplicarle a la función Date la función Format de esta forma:


Format(Date,"dd/mm/yyyy")


Ahora sustituimos la primera línea anterior y la dejamos de la siguiente forma:
If Me.txtFechaPrueba = Format(Date, "dd/mm/yyyy")
Then

MsgBox "Has introducido la fecha actual"
Else
MsgBox "Has introducido una fecha distinta de la actual"
End If



Y ahora sí. Si en el campo ponemos por ejemplo 10/04/2009 y le damos a enter, si es la fecha actual nos mostrará el primer mensaje y en caso contrario el segundo.



Imagen de como debería de quedar:




SELECT CASE...

La ayuda de Access la define de esta forma:


Ejecuta uno de varios grupos de instrucciones, dependiendo del valor de una expresión.


Para este ejemplo vamos a crear un formulario con dos campos independientes a los que vamos a llamar "dorsal" y "posición"


Nuestro propósito va a ser escribir un número en el campo "dorsal" y que se escriba automáticamente en el campo "posición", la posición a la que representa ese dorsal.


Para ello necesitaríamos algo así:


Después de actualizar el campo dorsal


Caso de que sea 1

Posición = portero

Caso de que sea 2

Posición = Defensa

Caso de que sea 5

Posición = Medio

Caso de que sea 9

Posición = Delantero

Caso de que no sea ninguno de los mencionados

Posición = Posición no definida.


Ahora vamos a hacerlo utilizando Select Case.
Para ello nos vamos al evento "Despues de actualizar" del campo "dorsal" y escribimos lo siguiente:


Select Case dorsal
Case 1
Me.puesto = "Portero"
Case 2
Me.puesto = "Defensa"
Case 5
Me.puesto = "Medio"
Case 9
Me.puesto = "Delantero"
Case Else
Me.puesto = "Posición no definida"
End Select



Así es como debe de quedar





CAPITULO 1.- FUNCIÓN MSGBOX CAPITULO 3.- LAS VARIABLES


2 comentarios:

  1. Exelente Muchas desde, Honduras Centroamérica "Gracias me ha servido muchisimo"

    ResponderEliminar