Le vostre applicazioni Visual Basic 6, portate sul web
In molte aziende ci sono ancora programmi Visual Basic 6 che gestiscono ordini, produzione, appuntamenti e contabilità, a più di venticinque anni dall'uscita dell'ultima versione. Li migriamo in applicazioni web scritte in C#, mantenendo i dati e le regole di business, con o senza il codice sorgente originale.
Perché adesso
Microsoft ha smesso di supportare l'ambiente di sviluppo di Visual Basic 6 l'08/04/2008. Il runtime è ancora incluso in Windows ed è supportato per tutta la durata delle versioni di Windows che lo contengono, Windows 11 compreso, ma solo come componente a 32 bit e solo per regressioni gravi e problemi di sicurezza critici. I controlli che non fanno parte di Windows, come MSCOMCTL.OCX, MSFLXGRD.OCX e quasi tutti gli OCX di terze parti, vanno installati insieme all'applicazione e non sono coperti da Microsoft.
Nella pratica la difficoltà sta nelle persone e negli strumenti. Microsoft non supporta l'IDE su Windows a 64 bit, gli sviluppatori che conoscono VB6 sono ogni anno di meno, e ogni PC sostituito è una nuova installazione con componenti registrati a mano.
- Ambiente di sviluppo Visual Basic 6Fine del supporto Microsoft
- Windows 10Fine del supporto Microsoft
Cosa migriamo
Tutto il programma, compreso ciò da cui dipende al di fuori del suo codice.
Form e controlli
Finestre con caselle di testo, caselle combinate, griglie, schede e matrici di controlli, compresi MSFlexGrid, ListView e TreeView. Diventano pagine web che mantengono la disposizione a cui le persone sono abituate.
Logica in moduli e classi
Calcoli, controlli e procedure sparsi tra file .bas e .cls ed eventi dei form. Li spostiamo in servizi lato server coperti da test.
Accesso ai dati
Codice DAO, RDO e ADO che lavora su Access, SQL Server, Oracle o altri database, compreso l'SQL costruito concatenando stringhe. I dati passano su SQL Server o MySQL, oppure restano dove sono se altri sistemi ne dipendono.
Report e stampe
Crystal Reports, DataReport e stampe disegnate riga per riga con l'oggetto
Printer. Ognuno diventa un documento PDF con lo stesso contenuto.Componenti COM e DLL
DLL ActiveX scritte internamente, componenti di terze parti e chiamate alle API di Windows tramite
Declare. Identifichiamo ciascuno e decidiamo se va sostituito, riscritto o se non serve più.File, impostazioni e dispositivi
Configurazione in file INI o nel registro, importazioni da file di testo, collegamenti a bilance, stampanti di etichette o dispositivi seriali tramite MSComm. Verifichiamo quali richiedono ancora qualcosa installato in locale.
Come diventa la versione web
- Panoramica
- Agenda
- Pazienti
- Trattamenti
- Report
| Ora | Dr Valdrin | Dr Sato | Igienista |
|---|---|---|---|
| 08:30 | L. Moreau - Controllo | A. Bianchi - Pulizia | |
| 09:00 | K. Novak - Otturazione | ||
| 09:30 | S. Haddad - Corona | J. Lindqvist - Pulizia | |
| 10:00 | P. Ortega - Devitalizzazione | ||
| 10:30 | E. Kowalski - Controllo | ||
| 11:00 | N. Ferri - Estrazione | R. Dimitrov - Pulizia | |
| 11:30 | T. Brennan - Otturazione | ||
| 12:00 | C. Duval - Controllo | H. Ito - Pulizia |
Un'agenda appuntamenti come potrebbe apparire in un programma VB6 sul PC della reception, e la stessa settimana nel browser.
Trascinate il cursore, oppure usate le frecce della tastiera.
Dove finisce ogni parte
- In VB6: Form (.frm) e i loro eventi
- Nell'applicazione web: Pagine web, con la logica sul server
- In VB6: Moduli (.bas) e classi (.cls)
- Nell'applicazione web: Servizi C# coperti da test automatici
- In VB6: Controlli OCX registrati su ogni PC
- Nell'applicazione web: Componenti web standard, niente da installare
- In VB6: Recordset ADO o DAO
- Nell'applicazione web: Query parametriche su SQL Server o MySQL
- In VB6: Crystal Reports o DataReport
- Nell'applicazione web: Documenti PDF generati dal server
- In VB6: Un pacchetto di installazione per ogni postazione
- Nell'applicazione web: Un indirizzo, aperto nel browser
Come si svolge la migrazione
Analisi entro 48 ore
Ci mandate il programma installato e il suo database, più il codice sorgente (.vbp, .frm, .bas, .cls) se lo avete. Entro 48 ore vi rispondiamo con un report scritto: cosa fa oggi il programma, dove sono i rischi, come sarebbe organizzata la versione web, un prezzo fisso per un modulo pilota e una stima per il resto. È gratuita e non vi impegna a nulla.
Modulo pilota
Realizziamo una parte dell'applicazione su una copia dei vostri dati reali, di solito quella che si usa di più. Il vostro personale la usa nel lavoro di tutti i giorni prima che decidiate sul resto.
Test automatici tra vecchio e nuovo
Registriamo cosa produce il programma VB6 su una serie di casi reali, come prezzi, totali e documenti generati, e verifichiamo la nuova applicazione rispetto a quei risultati. Per ogni regola che troviamo scriviamo un test automatico che dà gli stessi dati in ingresso al vecchio programma e alla nuova applicazione e controlla che i risultati coincidano. Ricevete i risultati dei test.
30 giorni in parallelo
Quando l'applicazione completa è pronta, il programma VB6 resta in uso accanto a essa per 30 giorni. Ogni differenza emerge mentre il vecchio programma c'è ancora, e la correggiamo all'interno del prezzo concordato.
Gli intoppi tipici, e come li gestiamo
Dipendenze OCX e ActiveX
Molti programmi VB6 si appoggiano a controlli che non sono inclusi in Windows, a volte di produttori che non esistono più, e Microsoft indica file come
GRID32.OCXeTHREED32.OCXcome non supportati. L'analisi elenca ogni dipendenza, cosa fa nel programma e con cosa la sostituiamo.Variant, proprietà predefinite e conversioni implicite
VB6 converte in silenzio tra stringhe, numeri e date, e una riga come
Text1 = rs!Totalesi regge sulle proprietà predefinite. Una traduzione letterale in C# o VB.NET si comporta diversamente nei casi limite, per esempio con campi vuoti o con date in un altro formato internazionale. Riscriviamo questi punti di proposito e li copriamo con test.On Error Resume NextComune nel codice VB6, nasconde gli errori e lascia che il programma prosegua con dati scritti a metà. Dove lo troviamo, ricostruiamo cosa voleva evitare l'autore e gestiamo quel caso in modo esplicito. Altrimenti la nuova applicazione si fermerebbe con un errore o ripeterebbe gli stessi sbagli silenziosi.
Integera 16 bit e arrotondamentiIn VB6 un
Integersi ferma a 32.767, causa di molti errori di overflow quando una tabella cresce. Il tipoCurrencyha quattro decimali, eRoundusa l'arrotondamento bancario. Riproduciamo l'arrotondamento che l'azienda si aspetta e segnaliamo dove il vecchio programma sbagliava.SQL costruito concatenando stringhe
Le query composte con
&a partire da ciò che l'utente ha digitato sono esposte alla SQL injection e si rompono sui nomi con l'apostrofo. Nella nuova applicazione ogni query usa parametri.Codice sorgente mancante o non aggiornato
A volte il codice sorgente è andato perso, oppure la copia conservata non corrisponde al programma in uso. Da un programma VB6 compilato non si ricava un codice sorgente affidabile, quindi lavoriamo dal programma in funzione, dal suo database e dalle sue schermate, e l'analisi dice chiaramente quali parti hanno più incertezza.
Prezzo e pagamento
Analisi
Gratuita
scritta, entro 48 ore
Modulo pilota
1.000–1.500 €
di solito, 50% all'inizio e 50% all'approvazione
L'analisi è gratuita. Se decidete di non andare avanti, il report resta a voi e non dovete nulla.
I prezzi sono fissi e concordati per iscritto prima di iniziare. Se il perimetro cambia, vi mandiamo un nuovo preventivo scritto e aspettiamo la vostra approvazione prima di fare il lavoro in più.
Per una migrazione completa puntiamo a stare dal 40 al 60% sotto il preventivo tipico di un'agenzia. Possiamo farlo perché siamo uno studio piccolo, senza uffici da pagare né rete commerciale.
Prezzi IVA esclusa.
Una migrazione vera, verificata dai test
Northwind è il database di esempio che Microsoft distribuiva con Access, non un nostro cliente. Ne abbiamo migrato una copia pubblica in SQLite e PostgreSQL, confrontato ogni tabella e ogni query con l'originale tramite test automatici e costruito sul risultato un'applicazione web funzionante. Il caso di studio riporta i numeri, il report di equivalenza elenca ogni controllo.
Northwind è un database Access, ma per Visual Basic 6 seguiamo lo stesso metodo: migrare, testare rispetto all'originale, far girare i due in parallelo.
Report di equivalenza (in inglese) · Anteprima cliccabile e analisi di esempio (demo)

Domande frequenti
Non abbiamo il codice sorgente. Potete migrare lo stesso il programma?
Spesso sì. Lavoriamo dal programma in uso, dal suo database e da schermate o registrazioni di come lo usano le persone. L'analisi indica quali parti possiamo riprodurre con sicurezza e quali richiedono informazioni da parte vostra.
Perché non convertire automaticamente il codice in VB.NET o C#?
Gli strumenti di conversione producono codice che compila, ma conserva la struttura da desktop, dipende spesso da librerie di compatibilità e si porta dietro i vecchi problemi. Per un'applicazione web ricostruiamo le schermate e spostiamo la logica, usando il codice VB6 come specifica di ciò che il programma fa.
Il nostro programma VB6 smetterà di funzionare su Windows 11?
Non da solo: Microsoft supporta il runtime VB6 su Windows 11. A cedere di solito è tutto ciò che gli sta intorno: file OCX non registrati, pacchetti di installazione persi, vecchi driver di database e l'IDE, che Microsoft non supporta su Windows a 64 bit.
Il nostro programma comunica con una bilancia o una stampante di etichette. Un'applicazione web può farlo?
Di solito sì, ma è l'unica parte che può richiedere un piccolo programma installato sul PC collegato al dispositivo. Lo verifichiamo durante l'analisi e lo includiamo nel prezzo.
Possiamo migrare una parte alla volta?
Sì. Il modulo pilota è la prima parte, e il resto può seguire per fasi. Quando è possibile, il programma VB6 e l'applicazione web condividono lo stesso database durante la transizione.
In che linguaggio sarà scritta la nuova applicazione?
Di solito in C# con ASP.NET Core, che qualsiasi sviluppatore .NET può mantenere. PHP con MySQL è un'alternativa se è ciò con cui lavora il vostro fornitore informatico.
Gli altri servizi
- Da Microsoft Access ad applicazione webTabelle, query, maschere, report e VBA portati in un'applicazione web su SQL Server o MySQL.
- Da Excel VBA ad applicazione webCartelle di lavoro con macro, UserForm e fogli collegati trasformate in un'applicazione web multiutente.
- Migrazione di applicazioni DelphiProgrammi Delphi su BDE, Paradox o dBase portati in un'applicazione web su database SQL.
- Modernizzazione .NET (WinForms, WebForms)Applicazioni WinForms e ASP.NET Web Forms portate su ASP.NET Core, tenendo ciò che funziona ancora.
- Software su misura e integrazioniNuovi gestionali, integrazioni tramite API REST, migrazione dei dati e manutenzione.
Contatti
Via email:
riccardo@Mandateci il programma e il suo database, con dati di prova se preferite, oppure una breve descrizione di cosa fa. Vi rispondiamo entro un giorno lavorativo.
Lavoriamo dall'Italia.