Buscar en este blog

lunes, 8 de septiembre de 2014

Formulario Acceso. Usuario y contraseña (I)

Un formulario muy básico que pide usuario y contraseña.  Si es correcto se entra en la aplicación, sino lo es, se cierra.
Posteriormente le iremos incrementando nuevas funcionalidades.


Primer enlace al ejemplo
Segundo enlace al ejemplo

martes, 2 de septiembre de 2014

Cambiar formato texto condicionado a un control de un informe

En relación a una pregunta en el foro, he creado este simple ejemplo, para que se pueda ver como hacer para que dependiendo de la longitud del texto de un campo, modifiquemos su fuente al imprimir un informe.
Es muy simple así que no lo voy a explicar, simplemente ver el código VBA que lleva el informe.´
En el solo he cambiado la fuente y el tamaño, pero igualmente se podría cambiar el color, cursiva, negrita, etc.

domingo, 20 de enero de 2013

Formulario por páginas.


En ocasiones, sobre todo cuando un formulario es muy grande, conviene mostrarlo al usuario página a página, es decir, "pantalla" a "pantalla". No es nada dificil y el efecto es bastante interesante. Como siempre, coloco un ejemplo lo más sencillo posible. A partir de él cada uno puede complicarlo lo que quiera.

Ejemplo

Utilizar el mismo código en varias Bases de Datos

Por lo general, tenemos una serie de códigos que utilizamos frecuentemente. Y la solución más usada es crear un módulo que copiamos en cada una de nuestras BD para que funcione en cada una de ellas. Pero hay una manera más fácil de hacerlo. Yo la uso y funciona estupendamente y sin problema alguno.
Creamos un nueva MDB, en ella insertamos los módulos que creamos necesarios y que contengan nuestras "pequeñas funciones". Posteriormente la convertimos a . Mde, Con eso nos aseguramos que nadie toque nuestro código. Luego sólo hace falta que desde la Bd que necesite el código, tenga una referencia hacia ella. (Yo, por ejemplo, utilizo una mde que he creado y de nombre "utilidades comunes"). Después cada Bd que creo nueva la referencio hacia ella, con lo cual no necesito volver a escribir las funciones, ni nada parecido.
Si no me he explicado suficientemente, comentármelo, un saludo a todos.

Imprimir el registro actual del formulario directamente


Aunque no es lo "normal", muchas veces se quiere imprimir el registro que actualmente tenemos en pantalla en un formulario. No desde un informe (que es lo "normal"), sino desde el mismo formulario y con ese formato.
Es una pregunta que se realiza mucho y nada más sencillo:
Creamos un botón con el asistente (la "varita mágica" seleccionada) y escogemos "imprimir registro". Listo. Cuando hagamos clic sobre el botón nos imprimirá sólo el registro que tenemos en pantalla.
O podríamos hacerlo mediante código:
CÓDIGO:
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,acMenuVer7
DoCmd.PrintOut acSelection

martes, 20 de marzo de 2012

VARIABLES PUBLICAS FACILES, SIN CODIGO

Para explicarme un poquito: Una variable es un "lugar" dónde podemos almacenar un dato, para luego poder usarlo en otra parte.  Si la variable está a "nivel formulario" durara lo que dure el formulario abierto, una vez se cierre, la variable desapare.  Cuando queremos, por ejemplo, desde un formulario, llamar al valor que se ha introducido en otro formulario que esta cerrado, no podemos hacer uso de esa variable, por lo que creamos una variable pública, (en un módulo).  De esta manera esta "siempre" a disposición... hasta que se cierre la aplicación.  Mucha gente se complica la vida para esta cuestión.  Una solución que no se suele ver, por lo fácil, es la que paso a exponer:
Tenemos una aplicación dónde vamos a introducir dos datos en un formulario y luego queremos que esos datos queden a disposición para usarlos más adelante (lógicamente hablo de un formulario independiente, ya que sino siempre podríamos recuperar el dato de la tabla, sin necesidad de ninguna variable).  Y eso es lo que podemos hacer: crear una tabla.
Creo una tabla con un sólo campo y un campo autonúmerico (ID). (Si voy a usar la tabla para más de una variable, puedo usar dos campos, uno para ponerle nombre a la variable y otro para guardarla).
A partir de ahí, puedo ir cambiando el valor de la "variable" (campo), desde cualquier parte de la aplicación y devolver el valor cuando lo necesite.  Y tiene otra ventaja, cuando cierre la aplicación y la vuelva a abrir, tendré disponible el último valor guardado en la variable.

martes, 25 de octubre de 2011

IMAGEN POR CADA REGISTRO AUTOMATICA Y SIN CARGAR LA BASE

Es una pregunta muy frecuente ¿Cómo puedo asignar una imagen a cada registro y que no haga aumentar el tamaño de la BD? . En principio almacenando la ruta en vez de la imagen, pero lo que planteo es algo más sencillo, en la cuál no hace falta ni almacenar la ruta dónde esta la foto.
Yo he puesto que lea los archivos que se encuentran en la carpeta "Fotos" que esta en la misma carpeta de la BD. Pero lógicamente eso se puede cambiar.
Para probarlo sólo tienes que introducir un nuevo registro y en el "nombre" pon el que quieras, por ejemplo "pepe".  Luego coge una foto, la que quieras que este en formato .jpg, y renombrala como "pepe.jpg". Ya esta.  No necesitas hacer nada más, al entrar en el registro de "Pepe" aparecerá su foto.



sábado, 15 de octubre de 2011

Formulario paginado

En ocasiones. sobre todo cuando un formulario es muy grande, conviene mostrarlo al usuario página a página, es decir, "pantalla" a "pantalla".  No es nada difícil y el efecto es bastante interesante.  Hay que dividir el formulario mediante "saltos de página" de manera que cada página tenga el mismo tamaño que las demás.  Cómo siempre coloco un ejemplo lo más sencillito posible, a partir de ahí, cada uno puede complicarlo lo que quiera.


Ejemplo

domingo, 2 de octubre de 2011

Menu y visor de documentos


Se trata de un formulario tipo Menu.  Utilizo el control "ficha" para hacerlo más sencillo y vistoso, pero también se podría hacer con etiquetas, botones de comando, imagenes...
Miralo, pruebalo, intenta adaptarlo a lo que quieras, con un poco de imaginación y buen gusto, se puede hacer un menu de lo más interesante.
En el apartado "Enlaces", no tiene porque ser un enlace a la Web, también puede ser un enlace a un archivo de tu equipo.
Dimensiona los controles como necesites, ya que cada uno tenemos una configuración de pantalla diferente.


También se podría cambiar de color las etiquetas al pasar el cursor por encima, etc..  Pero todo poco a poco y a medida que se vaya solicitando.
Si tienes alguna duda, sugerencia o lo que sea, visita Nuestro Foro (En el mismo ejemplo tienes el enlace)

Ejemplo

domingo, 11 de septiembre de 2011

Cursor "manita"

¿Quieres que al pasar el cursor por un botón, etiqueta, etc.. se muestre el cursor cómo una manita y no con la simple flecha".  Para ello hay código de sobra por Internet, pero para la mayoría de las ocasiones en la que lo necesitamos es mucho más sencillo.  El cursor en forma de "mano" se muestra por defecto siempre que hay un hipervinculo.  Pues bien, cuando no lo hay lo creamos. 
Imaginemos que tenemos en un formulario varios botones, los cuales en su evento clic tienen asociado determinado código o macro.  Basta con entrar en propiedades y en su propiedad Hipervinculo, dirigirlo al propio formulario.  Cuando se pasa el cursor por el botón cambia a "mano" y al hacer clic abre el formulario, como es el que está abierto no hace nada y posteriormente ejecuta el código o macro asociado.  Lo mismo para etiquetas, imágenes y alguna cosilla más.  Haced la prueba

domingo, 4 de septiembre de 2011

Autonumerico, Al no estar en la lista y rellenar campos desde un cuadro combinado

Pues sí, la verdad es que me he "liao".  Va un poco contra la filosofía de este blog, que es "las cosas de una en una y lo más fácil posible".  Bien es cierto que difícil no es, pero si he juntado al menos tres cosas en este ejemplo.
Antes de pasar al meollo del asunto, no fijarse en el diseño, simple dónde los haya, pero no era eso lo que interesaba.  Cuando interese ya haré un ejemplo de "diseño y presentación" de una aplicación.
Todo empezó por una pregunta de como hacer automáticamente, que si tenemos un talonario asociado a una persona, pongamos que empieza en 985 y acaba en 988, la primera venta que haga se le asigne el 986 y así consecutivamente hasta llegar al 988, púes ahí tendría que empezar un nuevo talonario cuya numeración no iría consecutiva.
Bueno me puse en ello y me fue planteando diversas situaciones y al final quedo esto:

1 -En el formulario principal aparece un cuadro combinado, al seleccionar uno de los códigos que  tiene un asesor, automáticamente rellena el resto de campos que corresponden a esa persona.
2 - Si se introduce un código que no existe, nos abrirá un formulario para crear uno nuevo.
3 . Si el asesor no tiene ningún talonario asignado, la parte de abajo del formulario nos aparecerá en blanco, dándonos la opción de asignarle uno nuevo.
     Una vez seleccionamos el talonario en el apartado inferior, ventas, podremos ir introduciendo las realizadas, dándole la aplicación un número consecutivo, siempre entre los que este el talonario, cerrando este apartado al llegar al final del talonario.

Esta pensada para que un mismo asesor pueda tener más de un talonario, sólo habría que crear un formulario aparte para ir introduciendolos.

martes, 30 de agosto de 2011

Cronómetro y etiquetas intermitentes


Un pequeño ejemplo de cómo crear un cronómetro en un formulario y que al llegar a "0" realice algo, cerrar el formulario, la aplicación....
También he añadido como manejar una etiqueta intermitente o que cambie de color.  ¿Las utilidades?, las que cada uno considere, pero son muchas... sobre todo lo del cronómetro.

sábado, 20 de agosto de 2011

Al entrar en un control situar el cursor en el lugar que queramos

     Cuando entramos en un control, a veces, queremos que el cursor se sitúe en un determinada posición: al principio, al final, en el 3º o 5º carácter o que seleccione todo el campo.
        Access en el menú opciones, nos da la oportunidad de decirle cómo queremos que se comporte (al inicio, al final o seleccionar todo el campo). Pero eso es para toda la aplicación y podemos querer cambiarlo para un determinado control.
         En el evento "al entrar" del control en cuestión, pondremos:

Para ponerse al inicio:                   SetOption "Behavior Entering Field", 1
Para ponerse al inicio:                   SetOption "Behavior Entering Field", 2
Para seleccionar todo el campo:  SetOption "Behavior Entering Field", 0

        Esto sirve para cuándo tabulamos, no cuándo hacemos click con el ratón en el campo.
Para eso tenemos:
Me.nombrecontrol.SelStart = 0

        A partir de aquí, podemos ir cambiando el 0 por el número de carácteres que queremos que se situe el cursor.  Si en vez de 0 ponemos 3 el cursor quedara así:

 kep|asada

         Y esto lo hará tanto al tabular como al hacer click con el ratón.
Si lo que queremos es que seleccione todo el control (ya que no tenemos que saber su longitud) añadiriamos otra línea a la anterior:


Me.nombrecontrol.SelStart = 0
Me.nombrecontrol.SelLength = Len (Me.nombrecontrol)







lunes, 25 de julio de 2011

Autonumerar registros de un subformulario por cada registro de un formulario



¿Cómo autonumerar los registros de un subformulario para cada registro del formulario?, Yo lo haría así  utilizando DMax.




Descargar ejemplo

Rellenar campo automático con valor en otra tabla

Después de varias preguntas similares  he realizado el siguiente ejemplo para que se vea como se puede rellenar un control de un formulario automáticamente con el valor del campo de una tabla en la que no está basada el formulario y realizando un filtro.


Descargar ejemplo

lunes, 18 de julio de 2011

Informe con parámetros desde formulario

Tras la petición de Shimpia, pasa a poner un sencillito ejemplo de cómo introducir parámetros en un formulario y elaborar un informe con los mismos.  Dejo la consulta para que se pueda ver claramente, pero aunque la eliminéis seguirá funcionando, ya que el informe lleva la sentencia SQL en el origen del control.
Consta de una tabla de ejemplo, una consulta para sacar los registros que deseamos, un formulario independiente, dónde introducimos los parámetros, y el informe en cuestión.
Si queréis ver algo más al respecto, escribir un comentario a esta entrada.
P.D.: El cuadro de lista sólo está para que veaís los registros que contiene la tabla y así podaís probar.
Descargar ejemplo

lunes, 20 de junio de 2011

Imprimir informe registro actual y solicitar número de copias

Suelen ser frecuentes ambas preguntas, y no es nada complicado.
Aunque en este caso se utiliza código VBA, son sólo 3 líneas como mucho y a poco que se miren, se entiende perfectamente (esta explicado).
Sí pruebas el ejemplo cuidado, ya que cuando pongas el número de copias a imprimir en el imputbox, si le das aceptar, te las imprimirá.

Descargar ejemplo

sábado, 18 de junio de 2011

Formularios divididos en Access 2003

Se trata de "emular" lo que en versiones posteriores (a partir de Access 2007) es fácil y se hace con el asistente.  En Access 2003 podemos hacerlo más o menos así.
Agradecer a ENRIQUE su ayuda para solucionar un pequeño error.
Descargar ejemplo

miércoles, 1 de junio de 2011

Cuadros combinados encadenados y cuadro de lista



Se trata de un sencillo ejemplo de cómo crear dos cuadros combinados encadenados, es decir, que el segundo muestre unos determinados registros según lo que se ha seleccionado en el primero.  También hay un cuadro de lista para poder escoger un valor y que se muestre en el segundo cuadro combinado.
** Revisado para evitar problemas entre versiones
Descargar ejemplohttps://skydrive.live.com/redir.aspx?cid=bcbfd6593cb87709&resid=BCBFD6593CB87709!146

martes, 31 de mayo de 2011

Pasar registros de una tabla a otra y posteriormente eliminarlos

Ejemplo de cómo pasar registros de una tabla a otra y posteriormente eliminarlos de la tabla actual. 
Para que no de conflicto con la clave, hay que evitar pasar esta a la tabla principal.


 Descargar ejemplo

Crear un saldo continuo en un informe



Ejemplo de como crear en un informe un "saldo continuo".  Sólo hay que crear en el mismo un campo independiente que realice el cálculo y poner su propiedad "Suma continua" a "sobre el grupo".
Descargar enlace