jueves, 14 de mayo de 2009

Origen del problema "The data source control failed to execute the update command"

Origen de los ERRORES
"The data source control failed to execute the update command"

"The data source control failed to execute the insert command"

Este dichoso error, me ha traído bastantes problemas, los cuales, explico mas adelante.
Tras conseguir un entorno funcional MOSS 2007 recién instalado y configurado en Inglés.

Escenario:
Hemos tratado de migrar una aplicación confeccionada y programada para WSS3 SP1.
La migración se realizó correctamente creando un site template sin contenido, (.STP)
Realicé un upload del STP generado en el WSS3 SP1.
He creado un nuevo sitio en el MOSS 2007, usando el site template recién subido (Que aparece en la pestaña de Custom Templates, en el apartado de crear nuevo sitio)




Resultado:
Las listas se han creado correctamente, incluso unos customSpFields que hemos usado.
Al acceder a las páginas Custom que estaban implementadas, los web part producen errores porque el GUID de las listas usadas para los formularios custom no se cambian automáticamente, esto procuce errores al acceder a las páginas que usan los GUID antiguos de listas que referencian a otras con LookupFields (Generalmente son las entidades principales del modelo de datos)



Método de resolución empleado:
Realizar un listado en Excel con los nombres , GUID de lista antiguos y los nuevos GUID del sitio recién creado.
Usando el Sharepoint Designer, realicé un reemplazo masivo de los GUID nuevos por buscando los antiguos.
Este procedimiento FUNCIONA y ya podemos ver los formularios custom con los webparts funcionando correctamente.

Para migrar los datos de las listas Maestras, hemos programado un WebPart de Sincronización entre bases de datos, y un Job por estar conectado a una base de datos de MySQL. Optamos por ésta alternativa, mejor que por el uso de una ETL comercial o Biztalk.

Se cargan las listas maestras que alimentan combos y pickers.... todo funcionó correctamente.

Al hacer el test de la aplicación nos encontramos con estos síntomas:

Al editar (desde un EDITFORM) los campos Fecha, intercambian el día por el mes cada vez que se guarda :(
Es justo aquí donde se produce el dichoso error "The data source control failed to execute the update command".


He buscado hasta exprimir a Google, y he encontrado 3 opciones entre ellas apuntan a realizar un WorkArround (Rodear el problema sin solucionarlo), las cuales indico a continuación:


Opción 1- Usando el renderizado del campo como un "date picker" en vez de un "list form field".
Opción 2- Renderizando el campo como textbox y posteriormente, mediante javascript, le ponemos código de un Calendario OpenSource de javascript. (Esto funciona correctamente pero no deja de ser un WorkArround)
Opción 3- La configuración regional esta mal ajustada.


Personalmente no me gustan los workarround. sobre todo si en el otro entorno (WSS3SP1) funciona bien .¿Porque aquí no?
He indagado bastante y todo apunta, a que el problema es que la configuración regional (culture) por defecto es "en-US", y que esté es el problema:
Sharepoint intenta guardar MM/DD/YYYY, cuando realmente tendría que hacerlo con el formato DD/MM/YYYY.
Lo he comprobado porque si guardas una fecha con el día mayor que 12 por ejemplo 25/5/2009 se produce el error, si guardas la fecha con el dia por ejemplo 10/1/2009, se guarda como 1/10/2009 ademas si lo vuelves a editar y guadar se cambia de nuevo por 1/10/2009.



Solución:
Paso 1 - Cambiar la configuración regional del RootSite por "es-SP" Español (España) y International Sort

Paso 2 - Crear de nuevo el subsitio usando la plantilla y repetir la operación de reemplazo de GUID

Nota: Si ya has creado el sitio, por el motivo que sea, ocurre que no se ajusta correctamente la configuración regional por mucho que la cambies, por lo que hay BORRARLO y CREARLO de nuevo.

Esto es un bug de WSS3 por lo que hay que instalar :
http://support.microsoft.com/kb/949749
Este parche esta incluido en el SP2 de WSS3 y necesita el SP1
En este Blog podemos ver el complejo procedimiento de instalación del SP1 con multiples lenguajes, si instalamos esto, se resuelve el problema en MOSS http://sharepoint.microsoft.com/blogs/fromthefield/Lists/Posts/Post.aspx?List=0ce77946%2D1e45%2D4b43%2D8c74%2D21963e64d4e1&ID=50

AHORA SI !!!, los workarrounds son una chapuza (aunque a veces no queda otra alternativa), si hay tiempo , recomiendo intentar dar con el origen del problema.
Mas información de como cambiar la configuración regional , pinchando aquí

Otros problemas que se solventan:
Parece que ocurre lo mismo con los campos numéricos que alternan la Coma (,) por el Punto (.) cuando hay decimales pero en este caso no salen Excepciones (Errores).
Esto, TAMBIÉN ES POR LA CONFIGURACIÓN REGIONAL DEL SITIO.

RobertoMarcos.com

No hay comentarios:

Publicar un comentario