Modernize Studio
Idioma: ES
Escríbanos

Sus aplicaciones de Visual Basic 6, migradas a la web

Muchas empresas siguen gestionando pedidos, producción, citas o contabilidad con programas de Visual Basic 6, más de veinticinco años después de que saliera la última versión. Los migramos a aplicaciones web escritas en C#, conservando los datos y las reglas de negocio, con o sin el código fuente original.

Por qué ahora

Microsoft dejó de dar soporte al entorno de desarrollo de Visual Basic 6 el 08/04/2008. El runtime sigue incluido en Windows y tiene soporte durante toda la vida de las versiones de Windows que lo incluyen, Windows 11 entre ellas, pero solo como componente de 32 bits y solo para regresiones graves y problemas de seguridad críticos. Los controles que no forman parte de Windows, como MSCOMCTL.OCX, MSFLXGRD.OCX y casi todos los OCX de terceros, deben instalarse con la aplicación y Microsoft no los cubre.

En la práctica, la dificultad está en las personas y las herramientas. Microsoft no da soporte al IDE en Windows de 64 bits, cada año quedan menos desarrolladores que conozcan VB6, y cada equipo nuevo supone otra instalación con componentes registrados a mano.

  1. Entorno de desarrollo de Visual Basic 6Fin del soporte de Microsoft
  2. Windows 10Fin del soporte de Microsoft

Qué migramos

El programa completo, incluido aquello de lo que depende fuera de su propio código.

  • Formularios y controles

    Ventanas con cuadros de texto, cuadros combinados, rejillas, pestañas y matrices de controles, incluidos MSFlexGrid, ListView y TreeView. Se convierten en páginas web que mantienen la disposición a la que el equipo está acostumbrado.

  • Lógica en módulos y clases

    Cálculos, comprobaciones y procesos repartidos entre archivos .bas y .cls y eventos de los formularios. Los trasladamos a servicios en el servidor cubiertos por pruebas.

  • Acceso a datos

    Código DAO, RDO y ADO que trabaja con Access, SQL Server, Oracle u otras bases de datos, incluido el SQL montado concatenando cadenas. Los datos pasan a SQL Server o MySQL, o se quedan donde están si otros sistemas dependen de ellos.

  • Informes e impresión

    Crystal Reports, DataReport e impresiones dibujadas línea a línea con el objeto Printer. Cada uno se convierte en un documento PDF con el mismo contenido.

  • Componentes COM y DLL

    DLL ActiveX propias, componentes de terceros y llamadas a la API de Windows mediante Declare. Identificamos cada uno y decidimos si se sustituye, se reescribe o ya no hace falta.

  • Archivos, configuración y dispositivos

    Configuración en archivos INI o en el registro, importaciones desde archivos de texto y conexiones con básculas, impresoras de etiquetas o dispositivos serie mediante MSComm. Comprobamos cuáles siguen necesitando algo instalado en el equipo.

Cómo queda la versión web

Ejemplo ilustrativo, datos ficticios

Una agenda de citas tal como podría verse en un programa VB6 en el equipo de recepción, y la misma semana en el navegador.

Arrastre el control o use las flechas del teclado.

Dónde acaba cada parte

En VB6: Formularios (.frm) y sus eventos
En la aplicación web: Páginas web, con la lógica en el servidor
En VB6: Módulos (.bas) y clases (.cls)
En la aplicación web: Servicios en C# cubiertos por pruebas automáticas
En VB6: Controles OCX registrados en cada equipo
En la aplicación web: Componentes web estándar, nada que instalar
En VB6: Recordsets de ADO o DAO
En la aplicación web: Consultas parametrizadas sobre SQL Server o MySQL
En VB6: Crystal Reports o DataReport
En la aplicación web: Documentos PDF generados por el servidor
En VB6: Un instalador para cada puesto
En la aplicación web: Una dirección, abierta en el navegador

Cómo se hace la migración

  1. Análisis en 48 horas

    Nos envía el programa instalado y su base de datos, además del código fuente (.vbp, .frm, .bas, .cls) si lo tiene. En 48 horas le respondemos con un informe por escrito: qué hace hoy el programa, dónde están los riesgos, cómo se organizaría la versión web, un precio cerrado para un módulo piloto y una estimación para el resto. Es gratuito y no le compromete a nada.

  2. Módulo piloto

    Desarrollamos una parte de la aplicación sobre una copia de sus datos reales, normalmente la que más se usa. Su equipo trabaja con ella a diario antes de que usted decida sobre el resto.

  3. Pruebas automáticas entre lo antiguo y lo nuevo

    Registramos lo que produce el programa VB6 con un conjunto de casos reales, como precios, totales y documentos generados, y comprobamos la nueva aplicación frente a esos resultados. Cada regla que encontramos tiene su prueba automática, que da los mismos datos de entrada al programa antiguo y a la nueva aplicación y comprueba que los resultados coinciden. Usted recibe los resultados de las pruebas.

  4. 30 días en paralelo

    Cuando la aplicación completa está lista, el programa VB6 sigue en uso junto a ella durante 30 días. Cualquier diferencia aparece mientras el programa antiguo sigue ahí, y la corregimos dentro del precio acordado.

Los problemas habituales, y cómo los resolvemos

  1. Dependencias OCX y ActiveX

    Muchos programas VB6 se apoyan en controles que no vienen con Windows, a veces de fabricantes que ya no existen, y Microsoft clasifica archivos como GRID32.OCX y THREED32.OCX como no admitidos. El análisis enumera cada dependencia, qué hace en el programa y con qué se sustituye.

  2. Variant, propiedades predeterminadas y conversiones implícitas

    VB6 convierte sin avisar entre cadenas, números y fechas, y una línea como Text1 = rs!Total se basa en propiedades predeterminadas. Una traducción literal a C# o VB.NET se comporta de otra manera en los casos límite, por ejemplo con campos vacíos o con fechas en otro formato regional. Reescribimos esos puntos a propósito y los cubrimos con pruebas.

  3. On Error Resume Next

    Habitual en el código VB6, oculta los fallos y deja que el programa siga con datos a medio escribir. Donde lo encontramos, averiguamos qué quería evitar el autor original y tratamos ese caso de forma explícita. Si no, la nueva aplicación se detendría con un error o repetiría los mismos fallos silenciosos.

  4. Integer de 16 bits y redondeos

    En VB6 un Integer llega como máximo a 32.767, origen de muchos errores de desbordamiento cuando una tabla crece. El tipo Currency tiene cuatro decimales, y Round aplica el redondeo bancario. Reproducimos el redondeo que espera el negocio y señalamos dónde se equivocaba el programa antiguo.

  5. SQL montado concatenando cadenas

    Las consultas construidas con & a partir de lo que escribe el usuario están expuestas a la inyección SQL y fallan con los nombres que llevan apóstrofo. En la nueva aplicación cada consulta usa parámetros.

  6. Código fuente perdido o desfasado

    A veces el código fuente se ha perdido, o la copia guardada no coincide con el programa en uso. Un programa VB6 compilado no permite recuperar un código fuente fiable, así que trabajamos a partir del programa en funcionamiento, su base de datos y sus pantallas, y el análisis indica con claridad qué partes tienen más incertidumbre.

Precio y forma de pago

Análisis

Gratuito

por escrito, en 48 horas

Módulo piloto

1000–1500 €

normalmente, 50 % al empezar y 50 % al aprobarlo

El análisis es gratuito. Si decide no seguir adelante, se queda con el informe y no nos debe nada.

Los precios son cerrados y se acuerdan por escrito antes de empezar. Si cambia el alcance, le enviamos un nuevo presupuesto por escrito y esperamos su aprobación antes de hacer el trabajo adicional.

En una migración completa, nuestro objetivo es quedar entre un 40 y un 60 % por debajo del presupuesto habitual de una agencia. Podemos hacerlo porque somos un estudio pequeño, sin oficinas que pagar ni equipo comercial.

Precios sin IVA.

Probar la calculadora de precio

Una migración real, comprobada con pruebas

Northwind es la base de datos de ejemplo que Microsoft incluía con Access, no un cliente nuestro. Migramos una copia pública a SQLite y PostgreSQL, comparamos cada tabla y cada consulta con el original mediante pruebas automáticas y construimos sobre el resultado una aplicación web que funciona. El caso práctico da las cifras y el informe de equivalencia detalla cada comprobación.

Northwind es una base de datos de Access, pero con Visual Basic 6 seguimos el mismo método: migrar, comprobar frente al original y mantener ambos en paralelo.

Informe de equivalencia (en inglés) · Vista previa y análisis de ejemplo (demo)

Preguntas frecuentes

No tenemos el código fuente. ¿Pueden migrar el programa igualmente?

A menudo, sí. Trabajamos a partir del programa en uso, de su base de datos y de capturas o grabaciones de cómo lo usa el equipo. El análisis indica qué partes podemos reproducir con seguridad y cuáles necesitan información por su parte.

¿Por qué no convertir el código automáticamente a VB.NET o C#?

Las herramientas de conversión generan código que compila, pero que conserva la estructura de escritorio, depende a menudo de bibliotecas de compatibilidad y arrastra los problemas antiguos. Para una aplicación web reconstruimos las pantallas y trasladamos la lógica, usando el código VB6 como especificación de lo que hace el programa.

¿Dejará de funcionar nuestro programa VB6 en Windows 11?

No por sí solo: Microsoft da soporte al runtime de VB6 en Windows 11. Lo que suele fallar es todo lo que lo rodea: archivos OCX sin registrar, instaladores perdidos, controladores de bases de datos antiguos y el IDE, al que Microsoft no da soporte en Windows de 64 bits.

Nuestro programa se comunica con una báscula o una impresora de etiquetas. ¿Puede hacerlo una aplicación web?

Normalmente sí, pero es la única parte que puede requerir un pequeño programa instalado en el equipo conectado al dispositivo. Lo comprobamos durante el análisis y lo incluimos en el precio.

¿Podemos migrar por partes?

Sí. El módulo piloto es la primera parte, y el resto puede llegar por fases. Cuando es posible, el programa VB6 y la aplicación web comparten la misma base de datos durante la transición.

¿En qué lenguaje estará escrita la nueva aplicación?

Normalmente en C# con ASP.NET Core, que cualquier desarrollador .NET puede mantener. PHP con MySQL es una alternativa si es lo que maneja su proveedor informático.

Contacto

Por correo electrónico:

riccardo@modernizestudio.com
Escribir un correo

Envíenos el programa y su base de datos, con datos de prueba si lo prefiere, o una breve descripción de lo que hace. Le responderemos en un día laborable.

Trabajamos desde Italia.

Escríbanos