2013-09-22

Incompatibilidad de Excel con consulta de Access usando NZ

En la entrada anterior tratamos el cálculo de expresiones con valores nulos en Access. Una consecuencia imprevista al usar la función NZ() en una consulta de Access es que Excel no permite usar como origen de datos consultas que incluyan dicha fórmula. Si tratamos de importarla, y vamos a la ficha Datos, grupo Obtener datos externos y clic en Desde Access, la consulta no aparecerá listada en el cuadro de diálogo Seleccionar tabla.


Si tratamos de importarla De otras fuentes, Desde Microsoft Query listará la consulta pero al tratar de incorporar sus campos no dará un error.


Se me ocurren varias soluciones al problema:

1.Transformar la consulta de selección y crear una tabla con los resultados. El inconveniente es que crea una tabla innecesaria que duplica la información contenida en la tabla original.

2. Utilizar otra fórmula alternativa a NZ. Usamos la fórmula SiInm y EsNulo para comprobar si el campo es nulo. Si es verdad que devuelva un cero y, si es falso, el campo.
CVble: nz([Coste_variable])  'Expresión con NZ
CVble: SiInm(EsNulo([Coste_variable]);0;[Coste_variable]) 'Sin función NZ
SQL:
IIf(IsNull([Coste_variable]),0,[Coste_variable]) AS CVble
3. Diseñar una tabla donde sea obligatoria la entrada de datos en el campo. Evitaremos nulos pues nos forzará a introducir un valor, p. ej., ceros en lugar de nulos. Podemos modificar una tabla existente haciendo clic con el botón derecho sobre la tabla y clic sobre Vista Diseño. Elegimos el campo deseado y en la propiedad Requerido seleccionamos :


4. Crear una consulta de actualización para sustituir los valores nulos por ceros, y a continuación cambiar el diseño de la tabla para que ese campo sea requerido (ver solución anterior).


En SQL:
UPDATE Costes SET Costes.Coste_variable = 0
WHERE (((Costes.Coste_variable) Is Null));
Dejando de lado la primera opción por ineficiente, la número dos es la más rápida y recomendable si disponemos de poco tiempo. Las soluciones tres y cuatro son complementarias, nos permiten solucionar definitivamente el problema en la base de datos con nulos.

En general, y salvo que sea absolutamente necesario, en el diseño de la tabla debemos prevenir la existencia de valores nulos siguiendo los pasos de la solución tres. De esta manera, con un buen diseño inicial de nuestra base de dato, podemos evitar futuros comportamientos indeseados y ahorrarnos mucho tiempo.

Entradas relacionadas:

Cálculo de expresiones con valores nulos en Ms Access

2013-09-19

Cálculo de expresiones con valores nulos en Ms Access

Un error frecuente entre usuarios principiantes es incluir en expresiones o fórmulas campos que incluyen algún valor nulo. Y en Access cuando los cálculos incluyen un valor nulo, el resultado es nulo:

En la columna CTotal vemos el cálculo del coste total para los tres primeros conceptos es correcto, pero no para el último, devolviendo un nulo en lugar de 500. Para evitar este comportamiento causado por los nulos usamos la función NZ(). Tenemos dos opciones, o bien en cada campo que pudiera contener nulos introducimos la función NZ, o bien en el total alrededor de cada campo sumado:

Si queremos que CVble muestre ceros en lugar de nulos: CVble: nz([Coste_variable];0):

Entradas relacionadas:

Incompatibilidad de Excel con consulta de Access usando NZ

2013-09-15

Seleccionar objetos y panel de selección en Excel

En Excel cuando seleccionamos una forma o un objeto tenemos dos opciones:

1. Mantener presionada la tecla MAYÚS o CTRL mientras hacemos clic en los objetos.
2. En la ficha Inicio, en el grupo Edición, y clic en Seleccionar objetos.


A continuación puedes ver los dos métodos:

El primer método no es práctico cuando tenemos multitud de objetos. Además corremos el riesgo de no seleccionar algún objeto del área deseada.

Estos dos métodos sólo permiten seleccionar las formas u objetos visibles en una hoja. En cualquier caso es recomendable activar el panel de selección para ver la lista de los objetos de la hoja y su visibilidad.


Desde el panel de selección podemos cambiar el nombre, ordenar, mostrar, ocultar y seleccionar varios objetos (CTRL presionado mientras hacemos clic en los objetos). El panel se puede desanclar y adaptar su tamaño:
Como extra para finalizar, un atajo para seleccionar todos las formas u objetos de una hoja: seleccionamos cualquier objeto y presionamos CTRL+MAYÚS+Barra espaciadora

2013-09-10

Insertar una imagen GIF en Ms Excel

Para insertar una imagen GIF en Excel, vamos a la ficha Programador y hacemos clic sobre Insertar y luego sobre el icono Más controles:

En el desplegable seleccionamos Microsoft Web Browser y presionamos Aceptar:


A continuación con el cursor crea un marco para tu imagen. Luego podrás ajustar su tamaño al de la imagen. Sobre el objeto creado, haz clic con el botón derecho y luego sobre Ver código.

Inserta el siguiente código, con la ruta completa de la imagen.
Private Sub Worksheet_Activate()
WebBrowser1.Navigate "C:\Users\nubededatos\Desktop\insertarimagen.gif"  
End Sub 
También puedes indicar URL de la imagen:
Private Sub Worksheet_Activate()
WebBrowser1.Navigate "http://kevinburg.com/tumblr/fm2ugifs/train-repeat-615.gif"
End Sub
Finalmente en la ficha Programador desactiva el Modo diseño, haciendo clic sobre el mismo.


Para ajustar el tamaño del marco de la imagen activa de nuevo el modo diseño y arrastra los controladores de tamaño redondos sin colorear que aparecen alrededor del objeto.

Un ejemplo del resultado final. Una imagen gif con la evolución del ratio de fertilidad y la esperanza de vida:

Google's Public Data Explorer - World Bank
Entradas relacionadas:
Insertar una imagen GIF en Ms Excel

2013-09-05

Generar campo autonumérico aleatoriamente en Ms Access

Title En Ms Access los nuevos valores de un campo autonumérico pueden ser generados incrementalmente (por defecto) o aleatoriamente. Para cambiar el modo de generar los nuevos valores, en la vista diseño de la tabla, seleccionar en el desplegable Nuevos valores la opción Aleatoriamente.


Access nos avisa de la irreversibilidad del cambio:


En la tabla, cada vez que comencemos a escribir un nuevo registro se generará un número aleatorio entre -2.147.483.648 y 2.147.483.647.

Como es natural, los números aleatorios asignados a los registros son fijos y no se recalculan (p. ej.: como al usar la función ALEATORIO en Excel). Como mencionamos antes, no es posible revertir la manera de generar nuevos valores de un campo autonumérico de aleatorio a incremental.


En tal caso, deberíamos eliminar dicho campo autonumérico y crear uno nuevo. Si es posible cambiar de incremental a aleatorio.

Entradas relacionadas

Nube de datos