Archive for 11/03/07
Una feature no documentada
Resulta que reescribiendo las partes de los datasets relacionadas con material de acondicionamiento y personal me he encontrado que tengo con una “feature no documentada” (=bug). Al parecer no funciona correctamente la introducción de nuevos registro y siempre responde un error de Update que afecta a 0 rows. Probando y probando me he dado cuenta de que pasa absolutamente de hacer los inserts si la tabla tiene alguna cosa “extraña” como foreign keys o indices raros. Para resolver el problema he ideado otro invento extraño que hace el insert con datos genericos y después “invita” a modificarlos con lo que el update puede funcionar correctamente. Hasta ahora las dos alternativos que tenia para el UPDATE eran estas:
UPDATE table Set tableid =?tableid…….;
UPDATE table Set campo = ?campo….. WHERE tableid =?tableid
La primera funcionaba perfectamente en runtime de Mocosoft y en algunos casos como el de insertar un nuevo registro con el bug en Mono, pero no funciona correctamente al modificar los datos de un registro que esta actualmente en la base de datos.
La segunda funciona bastante bien en runtime de Mocosoft y en Mono con los casos en los que el registro ya existe y se modifica, pero con el bug, el insert no funciona y cuando intenta hacer el UPDATE sale el error de las 0 rows, porque, evidentemente, no existe el registro con el tableid que estan en la clausula WHERE.
Puede que a alguien se le hubiera occurido algo muy ingenioso en SQL como suspender CONSTRAINTS, hacerlo todo y despues hacer el COMMIT o algo de eso, pero con mis actuales conocimientos y mas que nada mi tiempo actual no me permiten hacer nada mejor.
Pues en esto estoy, en que esta semana me voy a llevar un colchón directamente al laboratorio (para ahorrar tiempo mas que nada entre clase-lab de micro-lab de jornadas) y con un poco de suerte termino ya con estos problemas y me empiezo con el diseño del Form de dispensación.
Como siempre casi lo último que he hecho esta en el repositorio y si alguien quiere usarlo la guia esta en la seccion de documentos en la forja.
Add comment Marzo 11, 2007