Actualización desde MS Access

Mi empresa utiliza un antiguo programa MS Access para generar archivos xml. Hay dos usuarios que realizan mantenimiento/actualizaciones en este sistema y un puñado de otros que lo usan para generar archivos.

El programa hace lo siguiente:

  1. El usuario ingresa información en un par de campos de "búsqueda" en un formulario de acceso.

  2. El programa extrae datos de bases de datos externas usando conexiones ODBC y mySQL O extrae datos de un archivo xml en su lugar (para que podamos ingresar datos manualmente si no está en una base de datos).

  3. Extrae datos de tablas internas a la base de datos de acceso.

  4. Utiliza subrutinas y funciones de VBA para realizar cálculos, manejo de errores, etc. Utiliza colecciones.

  5. Cumple con los datos finales, escribe y guarda un nuevo archivo xml (actualmente solo lo escribe como un archivo de texto, pero me doy cuenta de que hay mejores formas).

  6. Muestra una ventana emergente con información básica sobre el nuevo archivo.

Bloqueamos las versiones de "usuario" de este programa y tenemos un archivo por lotes que crea una copia temporal cada vez que el usuario lo abre. Nadie escribe nunca en las bases de datos externas. Los usuarios nunca escriben en nada, solo leen. Los administradores escriben en las tablas de acceso interno manualmente.

En cuanto a la escala, no puedo imaginar que tengamos más de 3 administradores y tal vez ~30 usuarios.

Si bien no hay nada particularmente "malo" con este programa, me gustaría saber, si quisiéramos usar algún software más nuevo, a qué deberíamos pasar. Actualmente, solo estoy familiarizado con VBA, pero me encantaría aprender un lenguaje de programación "real" (particularmente interesado en python, pero probaría casi cualquier cosa), por lo que no es necesariamente un problema. MS Access puede ser un poco torpe a veces, y parece viejo, así que me encantaría saber si hay algo más suave y brillante que tenga sentido para nuestros usos, y sería divertido para mí tener un pequeño proyecto favorito y aprender. nuevos lenguajes/software.

¿Alguna sugerencia? ¡Gracias!

No te faltes al respeto. VBA es un lenguaje "real". Y, si puede codificar en él, debería poder aprender Python con la suficiente facilidad. Me mudé de VBA a Python, que tiene excelentes bibliotecas para leer y escribir documentos de MS Office.
" there's nothing particularly "wrong" with this program" - si no está roto, no lo arregles

Respuestas (2)

Si desea un servidor centralizado con clientes web, usaría Java.

back-end

Usaría JDBC en lugar de ODBC. Existen muchos controladores JDBC para MySQL y muchas otras bases de datos.

Java tiene excelentes bibliotecas para leer y escribir tanto XML como JSON.

Java tiene excelentes bibliotecas para facilitar la programación concurrente multiproceso.

Java también tiene muchas otras bibliotecas excelentes para manejar la mayoría de los problemas prácticos. Por ejemplo, las clases java.time líderes en la industria para el manejo de fecha y hora. Y Java es rápido, confiable, seguro y está bien documentado.

Base de datos

Usaría Postgres en lugar de MySQL por muchas razones, principalmente por la sólida confiabilidad de calidad empresarial.

Esta es solo mi opinión personal. Según su descripción, parece que Postgres o MySQL funcionarían bien para usted. También puede considerar usar la base de datos H2 escrita en Java puro.

Interfaz de usuario

Usaría Vaadin Framework para la interfaz de usuario. Vaadin usa Java puro para escribir y ejecutar su lógica empresarial, así como su interfaz de usuario (diseños, campos, etiquetas, botones, gráficos, cuadrículas de datos y otras funciones) que se ejecutan en el servidor. Vaadin representa automáticamente esa interfaz de usuario definida por Java en el navegador web del usuario utilizando tecnologías de estándares web (HTML, CSS, DOM, JavaScript, WebSocket, Push). Entonces, todo Java en el lado del servidor, pero no Java ejecutándose en el cliente, sin embargo, no necesita aprender sobre todo eso de la web HTML, ya que Vaadin se encarga de eso.

Vaadin está diseñado para el desarrollo de aplicaciones orientadas a los negocios.

Sugeriría echar un vistazo a Pandas para el acceso y procesamiento de la base de datos (el "Back End"), y para una apariencia más actual, poner un "front-end" web en el uso de Django .

Pandas tiene muchas herramientas para acceder a datos de varias fuentes, incluidas bases de datos, y le ofrece muchas opciones en cuanto a formatos de salida.

Django es uno de los marcos de aplicaciones web de rápido crecimiento destinado a un desarrollo rápido.

Ambos están basados ​​en Python, son gratuitos, gratuitos y de código abierto , y tienen comunidades de usuarios y desarrolladores muy grandes y útiles.