2008-09-19 11 views
7

Tenemos una aplicación Ms Access de 12 años que utilizamos para nuestro sistema central de almacenamiento y facturación. Ya se está ejecutando en un servidor SQL Server, pero todas las "lógicas", formularios e informes están en Access. Después de experimentar las enormes cantidades de lodo de mantenimiento que se necesitaron para convertir las transacciones de inventario de temporales a temporales, me di cuenta de que algún día necesitaría convertir esto en código para poder administrar mejor la lógica en un entorno mucho más sostenible y comprobable.¿Cuáles son algunas buenas técnicas para convertir una aplicación de Ms Access a .Net Application?

¿Cuáles son algunas de las técnicas que me permitirían convertirla en una aplicación .Net de una manera manejable y eficiente?

Una idea era convertir las consultas a procedimientos almacenados, luego convertir la aplicación en un proyecto Adp. Pero todavía no tengo idea de cómo manejar los formularios y los informes.

Además, soy el único desarrollador de mi empresa, si eso importa.

Respuesta

5

Como ya tiene asp.net con alguna lógica comercial, puede abrirla para acceder como servicio web (archivos asmx). Busque en Google el kit de herramientas de servicios web de Microsoft Office para su versión de acceso (xp/2003, etc.) y escriba las clases proxy de vba para que pueda llamar al servicio web. Puede vincular los datos del servicio web a los formularios a través del código (vba para leer y escribir en los controles) o crear tablas temporales locales con datos del servicio web y usar el enlace de acceso regular.

Dependiendo de con qué se sienta más cómodo (código/tsql) puede poner la lógica en procedimientos almacenados o en una capa de lógica de negocios o híbrido (ambos). Me resulta más fácil probar el código que los procedimientos almacenados y me gusta no estar vinculado al servidor sql para la lógica empresarial, es decir, si desea cambiar la base de datos o desea desarrollar/probar componentes fuera de línea sin una base de datos. Las nuevas características de .NET como LINQ tienen un rendimiento bastante bueno, por lo que no tiene que depender de procedimientos almacenados para las actividades de la base de datos.

Mantenga la interfaz de usuario de acceso frontal hasta que haya reajustado toda la lógica de su negocio/acceso a datos a servicios web. A continuación, puede crear una aplicación asp.net que consuma los servicios web o una aplicación winform si lo desea. (Manténgase alejado de WPF, como una interfaz de usuario, por el momento, ya que es una curva de aprendizaje empinada y todavía no tiene una cuadrícula de datos que se puede comparar a la vista de acceso Hoja de datos.)

Informes

Los informes de acceso se pueden ampliar a los servicios de informes del servidor sql (vba en los informes no se actualiza y es mejor escribir algunos tsql en los procedimientos almacenados). Si no tiene el producto servidor sql completo, puede usar el control reportviewer para escribir informes (consulte http://www.gotreportviewer.com/) en asp.net (o winform con la versión estándar o posterior de Visual Studio) vinculante para conjuntos de datos ado.net.

Otras opciones: Puede escribir .net dlls y usar com interop. Este enfoque le permite comenzar a escribir la funcionalidad gradualmente. No use .net ui, p. Ej. un winform, ya que no funcionará muy bien con el acceso ui. Puede escribir lógica comercial o lógica de acceso a datos y luego llamar a estas clases desde vba. A continuación, puede mover este código a asp.net o servicios web si es necesario.

Cosas que descartar:

no me gusta el enfoque de escribir una nueva aplicación con codo con versiones secundarios. Como desarrollador único, tienes suficiente de qué preocuparte. Probablemente terminará agregando características en ambas versiones y depurando dos versiones en lugar de una.

La interpo de formularios vb6 no funciona para el acceso.

ADP como se indica es bastante muerto. (Nunca me gustaron, ya que a menudo uso tablas locales para optimizar el rendimiento y solo se pueden llamar mediante código y no están vinculadas)

Puede convertir sus módulos vba y módulos de clase a vb.net utilizando The Visual Basic Asistente de actualización (en Visual Studio) pero no mejora todo (p. Ej., Código dao/ado a ado.net) y no crea código optimizado para .net y puede no ser fácil escribir pruebas unitarias dependiendo de el diseño del código vba. Recomiendo volver a escribir el código (prueba Test Driven Development si te tomas en serio las pruebas para ver si te gusta).

+0

YES, utilizo Test-Driven Development exclusivamente (llevando lentamente nuestro sitio web de spaghetti bajo control). Me complace escuchar acerca de la conversión de informes y me gusta la idea de interoperabilidad de com para al menos tener el bit complejo bajo control. – Gilligan

6

Respuesta breve: la migración no parece ser algo fácilmente automatizado.

Supongo que su mejor opción es reescribir (e instalar) el sistema de una en una, incluso si (quizás) obliga a los usuarios a ejecutar las versiones antiguas y nuevas una al lado de la otra por un tiempo usar diferentes bits de funcionalidad. Puede minimizar esa molestia considerando cuidadosamente qué características migrar y en qué orden.

Por ejemplo, es posible que tenga un usuario cuya función laboral requiera que use solo una pantalla durante todo el día. Si migra esa pantalla primero con la funcionalidad que la acompaña, ese usuario puede estar en el nuevo sistema inmediatamente y dejar el anterior, reduciendo su carga de mantenimiento.

Así que esas son solo algunas ideas basadas en no demasiada información. Espero que esto ayude de todos modos.

2

Consideraría mirar el Interop Forms Toolkit. Según tengo entendido, esta herramienta hace que sea bastante fácil usar formularios .NET desde VB6, por lo que quizás también se pueda usar desde Microsoft Access. Si es así, puede ayudarlo a migrar la aplicación a .NET de forma incremental. Al hacer una búsqueda rápida, no pude encontrar ninguna guía sobre su uso con Microsoft Access, así que me disculpo si esto resulta ser un callejón sin salida.

1

La conversión a un adp no será una buena solución a largo plazo; esta tecnología es abandonada por Microsoft.

Si quiere cambiar a .net (¿por qué tiene una razón para favorecer .net?) Le sugiero que empiece a leer, intente crear algunas aplicaciones simples y luego comience la tarea de convertir esta base de datos en una solicitud.

Pero ...

creo que usted y la compañía necesita pensar acerca de los riesgos involucrados en este proyecto. ¿Qué pasará si se enferma, solo en la semana en que la gerencia necesita algunos informes que aún no existen? Sugiero que busque una pequeña compañía local de desarrollo de software, ellos estarán encantados de ayudarlo. Tal vez pueda hacer arreglos para que continúe siendo el "desarrollador principal" y solo los use para realizar copias de seguridad.

+0

Idea interesante. Elegiría .Net porque ya estoy manteniendo nuestro sitio web, que se encuentra en Asp.Net. Entonces, en esencia, integraría la lógica comercial del sistema de inventario en nuestra infraestructura actual. El objetivo de la lógica empresarial ya está duplicado en ambos lugares. – Gilligan

Cuestiones relacionadas