sábado, 30 de enero de 2010

miércoles, 20 de enero de 2010

Imprimir Facturas con Access

Si tenemos una Base de Datos para crear facturas con Access lo habitual es tener un Formulario de Facturas con un Subformulario de Ventas con las líneas de detalle, como el ejemplo inferior.



A la hora de imprimir esta factura podemos optar por dos opciones.

1. Usar un botón de comando para imprimir el registro actual. Esta es la opción más rápida de todas, pero tendremos el problema de que será muy difícil ajustar los campos para que entren en la anchura de un folio.

2. Crear dos consultas. Una consulta con los datos de la Factura y otra con los datos de las líneas de detalle. Si no queremos crear las consultas desde cero podemos obtenerlas a partir de los datos de la creación del Formulario; se abre el Formulario en Vista Diseño y se accede a su propiedad "Origen del Registro", una vez que estemos viendo la consulta la podemos guardar con el botón "Guardar Como...". Debemos hacer lo mismo con el Subformulario.

Debemos modificar la primera consulta para añadir en el criterio del campo Número de Factura el siguiente código: [Formularios]![Facturas]![Numero Factura] (asumiendo que nuestro formulario se llama Facturas y el campo Numero Factura). Con esto estamos obligando a que a la hora de generar el informe el Número de Factura que se va a imprimir deba coincidir con el Número de Factura que tenemos en ese momento en el Formulario de Facturas.

Ahora debemos crear un Informe con la primera consulta y estando en Vista Diseño de este Informe se arrastra la segunda Consulta (la del Subformulario) dentro del informe. Especificando que coincida el Número de Factura del informe con el de la consulta.

Después de esto ajustamos el diseño y el tamaño de los campos a nuestro gusto.

Finálmente vamos a poner un botón de comando en el Formulario de Facturas para que haga una Vista Previa del Informe.

Pasar valores de un formulario a otro en Access

Lo habitual es crear un botón en el formulario de destino que nos abra el formulario que contiene los datos.

En el formulario que va a pasar los datos crear un botón con el siguiente código en el evento "Al hacer clic":

Forms![FormularioDestino]![Subformulario]!Campo = Forms![FormularioOrigen]![Campo]
Docmd.Close

lunes, 18 de enero de 2010

Números de Factura en Formularios de Access

Todos sabemos que no podemos usar un campo Autonumérico como número de factura debido a las propiedas de no reutilización de este tipo de campos.

Una solución sencilla para los números de factura consiste en usar un campo de tipo Número y en el formulario usar la propiedad de "Valor predeterminado" para asignarle =[CurrentRecord], es decir que tome el valor del registro actual. De esta forma al crear una nueva factura automáticamente tomará como número el número del registro actual.

martes, 12 de enero de 2010

Guardar Fotos en Access 2007

Después de mucho tiempo he encontrado la forma que considero casi ideal para incluir imágenes en una Base de Datos de Access sin guardar la imagen dentro de la Base de Datos (es decir sin usar un Objeto OLE). La idea base es usar un campo que almacene la ruta de la imagen y un control de imagen que muestre en un formulario la imagen al que se refiere la ruta.
  1. En la tabla crear un campo de Tipo Texto que guardará la ruta de la imagen pongamos que se llama Foto.
  2. Crear el Formulario.
  3. Si se desea el campo Foto se puede ocultar el el Formulario ya que realmente no tenemos que escribir nada en él. 
  4. Incluir en el Formulario un Control de Imagen sin elegir ninguna imagen. 
  5. En su propiedad “Modo de cambiar tamaño de imagen” seleccionar Zoom.
  6. En su propiedad “Origen del Control” seleccionar de la lista Foto.
  7. Crear un Botón
  8. En el evento “Al hacer clic" del botón elegir Generador de Código
  9. Con el siguiente código conseguimos que al pulsar el botón se abra una ventana para seleccionar un archivo de imagen y le pase la ruta al campo Foto.


Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
If f.Show Then
Me.Foto.Value = f.SelectedItems(1)
Else
MsgBox "No se selección ningún archivo."
End If
Me.Refresh

Nota: en la tabla se almacena la información de la ruta de la imagen y la carpeta donde está guardada, así que no se puede cambiar la imagen de carpeta, por eso es recomendable tener todas las imágenes que usemos en nuestra base de datos dentro de la misma carpeta.

martes, 5 de enero de 2010

Cinema 2009



Espectacular vídeo resumen del cine del 2009 creado por Kees van Dijkhuizen.