Encuéntranos en Google+.
Working Into Binary
Ingeniería electrónica, lenguajes de programación, software, simulación, noticias, ofimática, ERP,...
Mostrando entradas con la etiqueta Access. Mostrar todas las entradas
Mostrando entradas con la etiqueta Access. Mostrar todas las entradas

Base de datos de códigos postales, municipios y demás (España)

19 septiembre, 2012
Aquí os traigo una serie de tablas con los códigos postales, municipios y provincias de España, junto con una tabla con los diferentes países del mundo. Es muy útil para realizar bases de datos, y es un recurso que en su momento me costo encontrar. Los datos están actualizados a este año.


Las tablas están guardadas como archivos de texto. Si queréis importarlas a Excel o Access, debéis hacerlo con un ancho de campo fijo. A cada tabla le acompaña un PDF con información sobre los diferentes campos de cada tabla.
Espero que os sea útil.

Como saber si un valor es múltiplo de otro en Excel con y sin Visual Basic

06 septiembre, 2012
Hoy veremos dos maneras de validar que un cierto valor se múltiplo de otro. El primer método es aplicable dentro del ámbito de Excel mediante la fórmula Residuo(). El segundo método, y más interesante para los que programamos en Visual Basic, es mediante el operador MOD, el cual nos sirve para cualquier aplicación que utilice VBA (Excel, Access, Word,...).
El primer método es utilizando la función Residuo. Tenemos la siguiente tabla de valores:


Vemos como en la primera columna tenemos los valores que queremos saber si son múltiplos o no de los valores que aparecen en la columna de la derecha. En la última columna obtenemos la respuesta Sí/No. Para obtener dicha respuesta, utilizamos la fórmula siguiente:

=SI(RESIDUO(A2;B2)=0;"Sí";"No")

La condición de que un valor sea múltiplo de otro es que el residuo de su cociente sea 0. La fórmula Residuo() nos da eso, el residuo del cociente de los dos valores que indiquemos en su argumento. Aplicamos esa condición mediante la fórmula Si() y ya tenemos nuestra respuesta.

Este es un método muy sencillo para saber si un valor es múltiplo de otro, pero es que en el caso de Visual Basic es igual de fácil. En Visual Basic utilizaremos el operador MOD. Su sintaxis es:

Residuo = Valor1 MOD Valor2

El operador MOD nos devuelve el residuo del cociente entre el Valor1 y el Valor2. Aplicamos la misma condición que antes, residuo igual a 0, y validamos:

Sub Check_Multiple()

Dim V1 As Double
Dim V2 As Double

V1 = 16
V2 = 2

If V1 Mod V2 = 0 Then
  MsgBox "El valor " & V1 & " ES múltiplo de " & V2 & ".", vbOKOnly + vbInformation
Else
  MsgBox "El valor " & V1 & " NO ES múltiplo de " & V2 & ".", vbOKOnly + vbInformation
End If

End Sub


De este modo disponemos de dos manera de validar que un valor sea múltiplo de otro.

Base de Datos de ejemplo Northwind 2007 para Access

05 septiembre, 2012

Para los futuros ejemplos para Excel o Access utilizaremos una base de datos basada en Access que ofrece Microsoft gratuitamente. Utilizaremos esta base de datos para realizar ejemplos sobre Access y sus tablas para realizar ejemplos en Excel (basta con hacer un "copiar y pegar" de las tablas al Excel).
Os dejo un enlace a la web de Microsoft donde os la podéis descargar sin ningún problema.

Enlace: Northwind 2007

(Nota: al abrir el archivo que descarguéis no esperéis tener la base de datos directamente abierta. Os mostrará la pantalla de inicio de Access y debéis de indicar que queréis crear una nueva base de datos, la cual se llamará Northwind 2007 por defecto. Aún así, al abrir Access, en la barra de la izquierda, aparece un enlace donde pone "Ejemplos". Si clicáis ahí también la encontraréis.)

e-Seminario de Access (Kung-Fu Access)

25 julio, 2012

Os traigo el vídeo de un e-seminario sobre Access impartido por el MVP Juan Soto. En este vídeo de 50 minutos, se muestran diferentes aspectos sobre Access como:
  • Variables temporales.
  • Utilización de enumeración en lugar de variables para una mejor lectura del código.
  • Utilización de clases para automatizar tareas frecuentes.
El seminario tubo lugar el 13 de julio y está en ingles apoyado gráficamente mediante una presentación en diapositivas y ejemplos prácticos en Access, por lo que se hace entendible incluso para aquellos que no dominen la lengua de Shakespeare.


Os dejo el vídeo y el enlace al web del autor del e-seminario.



Cómo centrar controles en los formularios de Access

21 julio, 2012

No existe un "botón" para centrar los controles de un formulario de Access indistintamente del tamaño que éste tenga. Únicamente nos da las opciones de delimitarlos respecto izquierda o derecha y arriba o abajo. Para centrar los controles hay que pasar obligatoriamente por el uso de VBA. Aún así, es fácil su implementación y podremos hacerla en no más de cuatro líneas y media.
Imaginemos que tenemos un formulario llamada "frmEjemplo" y dentro de este formulario tenemos un control, por ejemplo un label (etiqueta), llamado "lblCentrado", que es el control que queremos que se centre automáticamente en el formulario indistintamente de el tamaño de éste último. Con este código, además, lograremos que el control se coloque automáticamente en el centro del formulario aunque  lo re-dimensionemos.
Para empezar el código lo introduciremos directamente en el formulario. Para ello, abrimos el formulario en vista diseño. Después, teniendo seleccionado el formulario, en la ventana Propiedades, entramos en la pestaña Eventos. Nos situamos en cualquiera de ellos que esté vacío y clicamos sobre el botón con tres puntos suspensivos que nos aparece al lado. En el cuadro que nos salta, seleccionamos Generador de código y clicamos en Aceptar. Automáticamente, apareceremos en el editor de VBA dentro del formulario en cuestión. Al final del todo agregamos el siguiente código:

Private Sub Form_Resize()
  Me.lblCentrado.Top=Me.WindowHeight/2
  Me.lblCentrado.Left=Me.WindowWidth/2
End Sub

El código se ejecuta para el evento Resize. Este evento tiene lugar cundo se inicia el formulario y cuando éste es re-dimensionado. Podéis observar como no aparece el nombre del formulario frmEjemplo por ningún lado. Hacemos referencia a él mediante el comando Me. Dentro de la macro tenemos únicamente dos líneas de código.
La primera línea establece la propiedad Top del control lblCentrado. La propiedad Top indica la posición de la esquina superior izquierda del control respecto el borde superior del formulario. Para que quede centrado utilizamos la propiedad del formulario WindowHeight, que nos indica la altura total del formulario. Para situar el control en el centro, fijamos la propiedad Top del control con un valor igual a la mitad de la altura del formulario, es decir, la mitad de WindowHeight.
La segunda línea establece la propiedad Left del control lblCentrado. La propiedad Left indica la posición de la esquina superior izquierda del control respecto el borde izquierdo del formulario. Para que quede centrado utilizamos la propiedad del formulario WindowWidth, que nos indica la anchura total del formulario. Para situar el control en el centro, fijamos la propiedad Left del control con un valor igual a la mitad de la anchura del formulario, es decir, la mitad de WindowWidth.

Si introducimos este código el control quedará cerca del centro del formulario, pero no exactamente en el centro. Eso es debido a que las propiedades Top y Left toman como referencia la esquina superior izquierda del control para situarlo en el formulario. Para corregir esto, haremos que la propiedad Top tome el mismo valor que antes, pero quitándole la mitad de lo que mide de altura el el control. Para corregir la parte del Left, hacemos que tome el mismo valor que antes, pero quitándole la mitad de la anchura del control. El código quedaría de la siguiente manera:

Private Sub Form_Resize()
  Me.lblcentrado.Top=Me.WindowHeight/2-Me.lblcentrado.Height/2
  Me.lblcentrado.Left=Me.WindowWidth/2-Me.lblcentrado.Width/2
End Sub

Pero si introducimos este código, puede darse el caso en que reduzcamos tanto la ventana que Me.WindowHeight sea más pequeño de Me.lblCentrado.Height y la propiedad Top tome valores negativos. Esto no ocasionará un error en la ejecución del código (lo mismo para la propiedad Left). Para solventar esto, debemos controlar la ejecución del código con un If de tal manera que, si el formulario toma un tamaño que ocasiona valores negativos para las propiedades Top y Left, el código no sea ejecutado. En el caso extremo, el código quedaría finalmente de la siguiente manera:


Private Sub Form_Resize()
  If Me.WindowHeight/2-Me.lblcentrado.Height/2>=0 Then
    Me.lblcentrado.Top=Me.WindowHeight/2-Me.lblcentrado.Height/2
  End If

  If Me.WindowWidth/2-Me.lblcentrado.Width/2>=0 Then
    Me.lblcentrado.Left=Me.WindowWidth/2-Me.lblcentrado.Width/2
  End If
End Sub

De esta manera logramos tener un control situado justo en el centro de un formulario de Access. Ahora solo se debe adaptar el código a las necesidades particulares de cada uno.