Buscar este blog

domingo, 21 de noviembre de 2010

Excel query pierde valores

Hace relativamente corto tiempo tuve un problema un poco dificil de resolver con MS excel. Estaba realizando cargas masivas a una base de datos SQL Server a partir de un archivo excel en mi PC de desarrollo (32 bits), aparentemente la carga pasaba correctamente y no se presentaban problemas. Pero al llevar mi script para la carga al servidor del cliente (64 bits) y luego ejecutar otro script de verificacion de duplicados, detecte mas de 300 registros duplicados, lo cual me parecio muy extraño.

Revise mi archivo excel para comprobar los duplicados reportados en el cliente y efectivamente habian varios registros duplicados. Entonces me apresure a ejecutar un query directo sobre el archivo excel en mi pc de desarrollo y vi que una columna siempre aparecia con valores null a pesar que en algunas celdas si tenia valores numericos.

Luego de investigar un poco me encontre con que el driver de MS Excel para 32 bits intenta obtener el tipo de dato de la columna que se esta seleccionando a partir de un numero determinado de filas definido en el regedit. Al parecer si no encuentra valores en esa columna hasta alcanzar el numero de fila definido en el regedit le asigna un valor texto, y cuando mas adelante en el query encuentra numeros los coloca como null. Esto me di cuenta porque edite el archivo excel y coloque como tipo de dato de la columna, texto, y modifique el valor de una celda hasta que apareciera el bendito triangulo verde en la esquina de la celda. Volvi a lanzar el query y solo me mostro valor en esa columna para la celda que habia modificado.

Para solucionar este problema tuve que modificar el parametro del regedit que se encuentra en el siguiente key "
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel ", el nombre del parametro es "TypeGuessRows" el valor de este parametro por defecto es 8, lo tuve que colocar en 0 para que tome todas las filas del excel para determinar el tipo de dato de la columna. Con este cambio realizado ya no perdi los valores que se encontraban en las celdas del excel.

No hay comentarios:

Publicar un comentario