Josber
20 de enero de 2026, 16:51
¡¡¡ Hooolaa a tod@s de nuevo !!!
Hace ya tiempo que no posteo por aquí, entre otras cosas porque esto está últimamente muy silencioso, no sé si porque la gente es muy lista y ya no tiene dudas, o que todas las posibles dudas están ya solucionadas, (cosa que dudo bastante ... :lamet::lamet:), bueno a lo que íbamos, hace unos meses que dejé de programar, por medio-jubilación y, sobre todo, por el tema del VERIFACTU y lo que se nos viene encima después, (y que aún no se sabe oficialmente), ya no estoy para "certificar" programas, hacer pruebas de conexiones con hacienda y demás chorradas que exigen, así que mi consejo a los pocos clientes que aún mantenía, "cambiar a otro programa que esté certificado, porque el mío, no lo va a estar", "yo os ayudaré en todo lo posible", etc, etc.
Aún así, tengo un buen cliente que se cambió a SAGE50 pero, necesita hacer "albaranes especiales", así que estoy haciéndole un pequeño programa que pueda leer los artículos, clientes, etc de SAGE50, y grabar esos albaranes. Uso el entorno de MaríaDb, por no mezclar con SQLServer, que es el que usa Sage y por costumbre también, el problema es que al descargar la última versión de MaríaDb, (12.1.2), y del conector ODBC (3.28), el problema es que al grabar un registro que lleve caracteres especiales españoles, (ñ Ñ á ó ....), devuelve en SQLSTATUS el error 22008, las tablas están definidas con
COLLATE='utf8mb4_uca1400_spanish_ai_cs'
el fichero de configuración de my.ini, tiene añadidas las líneas
character-set-server = utf8mb4
collation-server = utf8mb4_uca1400_spanish_ai_cs
y no había manera, tanto en un INSERT, como en un UPDATE, daba error. En las versiones anteriores de MariaDb, esto no pasaba, pues ni el DSN ni MariaDb eran tan estrictos, pero en la nuevas, sí, porque se comprueba mucho más el cotejamiento de datos, después de varios días y muuuuuchas pruebas, la solución es tan sencilla como que, al crear el DSN (ODBC para los despistados), añadirle la opción SET NAMES latin1, así, le estamos diciendo al ODBC que los datos que le van a llegar son con codificación latin1, (que es la que usa por defecto PowerCobol, pero que ha de convertirlos a utf8mb4, (la conversión inversa, ya la hace PWC automáticamente sin que le tengamos que decir nada)
Por cierto, uso utf8mb4_uca1400_spanish_ai_cs, (un COLLATE nuevo), porque es de las más rápidas y fiables para ordenaciones, consultas, etc, mucho más que la antigua utf8mb3_spanish_ci
Un salu2 para [email protected]
Hace ya tiempo que no posteo por aquí, entre otras cosas porque esto está últimamente muy silencioso, no sé si porque la gente es muy lista y ya no tiene dudas, o que todas las posibles dudas están ya solucionadas, (cosa que dudo bastante ... :lamet::lamet:), bueno a lo que íbamos, hace unos meses que dejé de programar, por medio-jubilación y, sobre todo, por el tema del VERIFACTU y lo que se nos viene encima después, (y que aún no se sabe oficialmente), ya no estoy para "certificar" programas, hacer pruebas de conexiones con hacienda y demás chorradas que exigen, así que mi consejo a los pocos clientes que aún mantenía, "cambiar a otro programa que esté certificado, porque el mío, no lo va a estar", "yo os ayudaré en todo lo posible", etc, etc.
Aún así, tengo un buen cliente que se cambió a SAGE50 pero, necesita hacer "albaranes especiales", así que estoy haciéndole un pequeño programa que pueda leer los artículos, clientes, etc de SAGE50, y grabar esos albaranes. Uso el entorno de MaríaDb, por no mezclar con SQLServer, que es el que usa Sage y por costumbre también, el problema es que al descargar la última versión de MaríaDb, (12.1.2), y del conector ODBC (3.28), el problema es que al grabar un registro que lleve caracteres especiales españoles, (ñ Ñ á ó ....), devuelve en SQLSTATUS el error 22008, las tablas están definidas con
COLLATE='utf8mb4_uca1400_spanish_ai_cs'
el fichero de configuración de my.ini, tiene añadidas las líneas
character-set-server = utf8mb4
collation-server = utf8mb4_uca1400_spanish_ai_cs
y no había manera, tanto en un INSERT, como en un UPDATE, daba error. En las versiones anteriores de MariaDb, esto no pasaba, pues ni el DSN ni MariaDb eran tan estrictos, pero en la nuevas, sí, porque se comprueba mucho más el cotejamiento de datos, después de varios días y muuuuuchas pruebas, la solución es tan sencilla como que, al crear el DSN (ODBC para los despistados), añadirle la opción SET NAMES latin1, así, le estamos diciendo al ODBC que los datos que le van a llegar son con codificación latin1, (que es la que usa por defecto PowerCobol, pero que ha de convertirlos a utf8mb4, (la conversión inversa, ya la hace PWC automáticamente sin que le tengamos que decir nada)
Por cierto, uso utf8mb4_uca1400_spanish_ai_cs, (un COLLATE nuevo), porque es de las más rápidas y fiables para ordenaciones, consultas, etc, mucho más que la antigua utf8mb3_spanish_ci
Un salu2 para [email protected]