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

No hay comentarios:

Publicar un comentario

Nube de datos