Quanto costa sostituire Access con un gestionale?
La scelta si fa su tre numeri: le regole nascoste nel VBA, i minuti persi ogni giorno (1.056 euro l'anno ciascuno) e gli anni di vita richiesti.

Un'azienda di serramenti nel vicentino, 28 dipendenti e 9 milioni di fatturato, gestisce preventivi, ordini e consegne con un database Access scritto nel 2015 da un impiegato che nel frattempo è passato all'ufficio acquisti. Nove persone lo usano ogni giorno. Il file pesa 1,4 GB, il limite di Access è 2 GB, e cresce di 220 MB all'anno. Lunedì mattina si è corrotto per la terza volta in dodici mesi, e il titolare ha chiesto due cose: se si può sostituire, e quanto costa.
Questo articolo risponde a chi cerca di sostituire Access con un gestionale e vuole un numero prima di sentire un venditore. Per un'azienda di quella taglia le strade sono tre, e costano 14.700 euro (mettere in sicurezza Access spostando i dati su SQL Server), 93.300 euro in cinque anni (un gestionale di mercato) o 327.880 euro in cinque anni (un gestionale su misura). La distanza è grande e dice già una cosa che pochi ti diranno: per nove utenti il su misura quasi mai è la risposta.
La decisione si prende su tre numeri che nessun preventivo scrive: quante regole di business vivono dentro il codice VBA, quanti minuti perde ogni utente ogni giorno per aggirare i limiti del sistema, e per quanti anni deve servire la soluzione. Con il caso di Vicenza vedrai come si misurano tutti e tre in una settimana.
Trovi i sette segnali che dicono che Access non basta più, l'inventario di che cosa contiene davvero un file Access, le tre strade con i loro costi, il conto a cinque e otto anni, un piano di migrazione in otto settimane che non ferma l'azienda, un programma in C# che confronta riga per riga i dati vecchi e nuovi, e gli errori che ho visto ripetersi in ventisei anni di migrazioni.
Una premessa onesta. Costruisco software su misura dal 1999 e ho creato e venduto un gestionale legale multi-tenant, quindi so da che parte sta il mio interesse. Il caso di Vicenza è composto e non è di un cliente reale, le ipotesi sono scritte una per una, e il risultato include i casi in cui non conviene comprare da me né da nessun altro programmatore. Un consiglio che non ti dice quando non spendere vale poco.
Quando Access smette di bastare?
Access non è un giocattolo. È uno strumento ottimo per un reparto con tre o quattro utenti e una struttura di dati semplice, e molte aziende ci vivono bene per dieci anni. I problemi arrivano quando il database diventa il sistema operativo dell'azienda senza che nessuno lo abbia deciso. Ci sono sette segnali, e con tre o più siamo nella zona in cui il rischio supera il costo del cambio.
1. Il file si avvicina ai 2 GB
Un file Access ha un limite fisso di 2 GB. Non è un consiglio, è un muro: quando lo raggiungi, il programma smette di scrivere. A Vicenza restano 648 MB e il file cresce di 220 MB all'anno, quindi il muro è tra circa tre anni. Una parte della crescita è evitabile, per esempio spostando gli allegati fuori dal file, ma quasi sempre si tratta di rimandare di un anno.
2. Il file si corrompe
Access condivide un singolo file tra più utenti sulla rete. Se un computer va in sospensione, la VPN cade o una cartella condivisa ha un singhiozzo mentre si scrive, il file può restare in uno stato incoerente. La funzione "Compatta e ripristina" ripara molti casi e non tutti. Tre corruzioni in dodici mesi, come a Vicenza, sono un'indicazione che il problema ha una causa strutturale e non è sfortuna.
3. Gli utenti si bloccano a vicenda
Quando due persone aprono lo stesso record, o una query lunga tiene bloccata una tabella, il resto dell'ufficio aspetta. Sopra i dieci utenti contemporanei diventa un problema quotidiano, e sotto, dipende dal modo in cui è scritto il codice. Il sintomo è sempre lo stesso: "non aprirla adesso che sto facendo la fattura".
4. Le regole stanno nel VBA e le conosce una persona
Lo sconto per i clienti storici, l'arrotondamento che il commercialista vuole in un certo modo, il controllo che impedisce di consegnare ai clienti morosi: spesso queste regole esistono solo come righe di codice dentro le maschere. Chi le ha scritte le ricorda a malapena. Se quella persona se ne va, l'azienda perde la conoscenza della propria attività.
5. Nessuno sa chi ha cambiato che cosa
Access non ha un registro delle azioni degli utenti, né ruoli veri. Chi apre il file può fare quasi tutto. Per un'azienda con un revisore, un cliente esigente o semplicemente un errore da ricostruire, l'assenza di tracce è un rischio che si paga caro il giorno in cui serve.
6. L'accesso dall'esterno è un'acrobazia
Un file Access sulla rete locale funziona bene dentro l'ufficio. Appena qualcuno lavora da casa, dal cantiere o da una sede diversa, si ricorre a desktop remoto, VPN o copie del file, ognuna con il suo modo di rompersi. Le aziende che arrivano qui hanno già tre soluzioni di ripiego e nessuna davvero buona.
7. Il supporto della piattaforma si sta restringendo
Access fa parte di Office, e il supporto di Office 2021, l'ultima versione acquistabile una tantum con Access, è terminato il 13 ottobre 2026. Chi usa Access in abbonamento con Microsoft 365 continua a ricevere aggiornamenti, ma molte aziende hanno ancora versioni vecchie, magari miste tra 32 e 64 bit, con componenti che non sono più aggiornati. Non significa che Access smetta di funzionare domani. Significa che l'ambiente intorno invecchia, e che ogni nuovo computer o aggiornamento di Windows è una piccola scommessa.
A Vicenza i segnali veri sono cinque su sette: il file vicino al limite, le corruzioni, il blocco tra utenti, le regole nel VBA e l'assenza di tracce. Con un esito così la domanda non è se cambiare, ma come farlo spendendo il giusto.
Che cosa c'è davvero dentro il tuo file Access?
Prima di scegliere una strada serve un inventario, perché il prezzo di qualsiasi soluzione dipende da quello che c'è dentro e il titolare di solito sa descrivere solo quello che vede. Un file Access contiene cinque tipi di cose, e ciascuna si sostituisce in modo diverso.
- Tabelle: i dati veri, quelli che non si possono perdere. Si portano su un database vero.
- Query: domande salvate, dalle più semplici alle più complesse. Molte sono report camuffati, altre contengono regole di calcolo.
- Maschere: le schermate con cui gli utenti inseriscono e leggono i dati. Si rifanno o si sostituiscono.
- Report: le stampe, cioè preventivi, conferme d'ordine, bolle. Sono quelle che il cliente finale vede.
- Macro e codice VBA: la logica. È la parte più pericolosa, perché non si vede e perché è dove stanno le regole.
Nel caso di Vicenza l'inventario, fatto leggendo il file in tre giorni, dà questi numeri.
| Elemento | Quantità | Che cosa significa per il costo |
|---|---|---|
| Tabelle | 41 | Da portare su SQL Server, di cui 9 con problemi di dati (doppioni, campi liberi) |
| Query | 63 | 22 sono report mascherati, 14 contengono regole di calcolo da riscrivere |
| Maschere | 38 | 11 sono usate ogni giorno, 19 una volta al mese, 8 mai |
| Report | 21 | 6 sono documenti per i clienti, da rifare con la grafica attuale |
| Macro | 9 | Automazioni di import ed export, da sostituire |
| Righe di VBA | 14.200 | Da leggere tutte: contengono le regole nascoste |
Il dato che pesa di più non è nella tabella, ma sta nell'ultima riga. Su 14.200 righe di codice, una lettura attenta ha trovato 17 regole di business che non sono scritte da nessun'altra parte: sconti, blocchi, arrotondamenti, un calcolo dei tempi di consegna che tiene conto delle ferie dei fornitori. Quelle 17 regole sono il vero patrimonio del file, e qualsiasi strada si scelga vanno estratte, scritte in chiaro e verificate con chi lavora.
Un buon modo per stimare il lavoro è contare ciò che si usa. Le 8 maschere mai aperte e le 19 aperte una volta al mese non si rifanno al primo giro. Si decide, insieme agli utenti, quali sono davvero necessarie. È un risparmio sorprendente: in molte migrazioni il 30-40% del file non serve a niente da anni, e si porta dietro solo per paura.
Se vuoi un riferimento sul rapporto tra inventario e costo, la stessa logica vale per qualsiasi sistema vecchio, e la guida al costo del software legacy la applica al caso generale.
Quali sono le tre strade, e che cosa comprano?
Le opzioni non sono "Access sì" o "Access no". Sono tre, ognuna con un costo, una durata e un rischio diversi.
Strada 1: spostare i dati su SQL Server e tenere Access come interfaccia
I dati lasciano il file e vanno in un database vero, in cloud o su un server aziendale. Access resta come programma con cui gli utenti lavorano, collegato alle tabelle remote. Si risolvono d'un colpo il limite dei 2 GB, le corruzioni e gran parte dei blocchi, perché ora il database gestisce gli accessi in modo corretto. Si possono aggiungere utenti e ruoli, e il file Access diventa un "guscio" leggero che si può rifare con calma.
Il lavoro costa 35 giornate: 8 per la migrazione dei dati, 12 per ricollegare tabelle e riscrivere le query più lente, 10 per correggere il VBA che dipende da funzioni di Access, 5 per i test. A 420 euro al giorno sono 14.700 euro. Il costo annuo è di 4.920 euro, cioè 10 giornate di manutenzione più 720 euro di database in cloud.
Il limite è che Access resta. Le regole restano nel VBA, la dipendenza dalla persona che le conosce resta, e il supporto di Office segue le sue regole. È un ponte, non una destinazione, e conviene dirlo prima di firmare.
Strada 2: un gestionale di mercato
Un prodotto già pronto per il tuo settore, che si configura e si adatta. Per i serramenti ne esistono diversi: costano in canone mensile per utente e hanno il vantaggio di essere mantenuti da un fornitore con centinaia di clienti. Il caso di riferimento è un canone di 95 euro al mese per utente, quindi 10.260 euro all'anno per nove utenti.
L'avvio costa 40 giornate (configurazione, import dei dati, formazione), cioè 16.800 euro, più circa 12 giornate l'anno di adattamenti e assistenza, 5.040 euro. Il totale annuo è di 15.300 euro. A cinque anni sono 93.300 euro.
Il limite è che il prodotto impone il suo modo di lavorare. Dove il tuo processo è standard va benissimo. Dove è diverso, ogni deviazione si paga in aggiramenti: fogli, appunti, doppi inserimenti. È il costo che quasi nessun preventivo scrive, e lo misuriamo nella sezione sui minuti persi.
Strada 3: un gestionale su misura
Un software scritto per te. Nel caso di Vicenza, con nove moduli, la stima è di 420 giornate, cioè 176.400 euro: 255 per i moduli, 38 per l'analisi, 38 per i test, 26 per la gestione del progetto, 12 per formazione e avvio, e 51 di margine per l'imprevisto. Il costo annuo di vita è di 30.296 euro, cioè il 18% della base più 2.400 euro di hosting. A cinque anni sono 327.880 euro.
Il vantaggio è che il sistema fa esattamente quello che fa la tua azienda, e nessun aggiramento serve. Lo svantaggio è nei numeri: per nove utenti è una cifra che raramente si ripaga. Se vuoi il dettaglio di come si legge un preventivo di questo tipo, e perché due offerte per lo stesso lavoro possono distare cinque volte, c'è la guida a quanto costa un software gestionale su misura. Il percorso completo di sviluppo lo trovi nella pagina sul software su misura.
Un confronto sintetico, con le stesse ipotesi per le tre strade.
| Metti in sicurezza Access | Gestionale di mercato | Su misura | |
|---|---|---|---|
| Costo di avvio | 14.700 euro | 16.800 euro | 176.400 euro |
| Costo annuo fisso | 4.920 euro | 15.300 euro | 30.296 euro |
| Tempo per essere in uso | 6-8 settimane | 8-12 settimane | 9-12 mesi |
| Regole nel VBA | Restano nel VBA | Da riprodurre nel prodotto | Riscritte nel codice nuovo |
| Dipendenza da una persona | Resta alta | Passa al fornitore | Si riduce con documentazione e test |
| Quando ha senso | Serve tempo o il budget è limitato | Processi standard del settore | Il processo è il tuo vantaggio |
Quanto costa davvero l'alternativa: il conto a cinque e a otto anni
Il prezzo di avvio ti dice poco. Dopo cinque o otto anni quello che pesa è il costo di vita, e una voce che nessun preventivo scrive: i minuti che ogni utente perde ogni giorno perché il sistema non fa quello che serve.
Per metterli in euro bastano tre numeri: 9 utenti, 220 giorni lavorativi e un costo orario aziendale di 32 euro. Ogni minuto perso ogni giorno da ogni utente vale quindi 9 x 220 / 60 x 32 = 1.056 euro all'anno. Quanti minuti sono, nel caso di Vicenza?
- Oggi, con Access com'è: 15 minuti al giorno per utente, tra attese, riaperture dopo i blocchi e dati ricopiati in Excel. Fanno 15.840 euro l'anno. Più tre fermi l'anno di mezza giornata per le corruzioni: 3 x 4 ore x 9 utenti x 32 euro = 3.456 euro. In tutto, 19.296 euro l'anno di costo che non compare in nessun bilancio.
- Con i dati su SQL Server: restano 8 minuti, perché i limiti dell'interfaccia e le doppie digitazioni rimangono, ma sparisce il fermo. Sono 8.448 euro l'anno.
- Con il gestionale di mercato: 5 minuti, per i casi in cui il prodotto non copre il processo. Sono 5.280 euro l'anno.
- Con il su misura: zero, per ipotesi.
I minuti sono stime, e vanno sostituiti con misure vere (sotto spiego come). Ma la struttura del conto regge: il costo di avvio, il costo fisso annuo e il costo dei minuti persi sommati in un orizzonte scelto.
| Orizzonte | Non fare niente | Dati su SQL Server | Gestionale di mercato | Su misura |
|---|---|---|---|---|
| 1 anno | 19.296 euro | 28.068 euro | 37.380 euro | 206.696 euro |
| 3 anni | 57.888 euro | 54.804 euro | 78.540 euro | 267.288 euro |
| 5 anni | 96.480 euro | 81.540 euro | 119.700 euro | 327.880 euro |
| 8 anni | 154.368 euro | 121.644 euro | 181.440 euro | 418.768 euro |

Il risultato è meno ovvio di quanto un venditore vorrebbe. Per nove utenti la strada più economica è spostare i dati e tenere Access, e già a tre anni costa meno di "non fare niente". Il gestionale di mercato costa 38.000 euro in più a cinque anni ma toglie la dipendenza dal codice del dipendente di una volta. Il su misura costa quasi il triplo, e per ripagarsi servirebbe un'azienda dove ogni utente perde 44 minuti al giorno a cinque anni, o 33 a otto, contro i 5 del prodotto di mercato. Un caso così esiste, ma non è il tuo se il tuo gestionale deve gestire preventivi, ordini e consegne come lo fanno altre mille aziende.
Attenzione al limite del conto: il "non fare niente" ha una scadenza. Il file Access raggiunge i 2 GB in circa tre anni, e da quel momento la scelta non è più economica ma obbligata, nel peggior momento possibile, con l'azienda ferma. Il costo di una migrazione fatta di fretta, con un fornitore scelto in tre giorni, è tra il 30 e il 50% superiore a una fatta con il tempo.
La sezione sul conto cambia drasticamente sopra i venti utenti. Con 25 utenti il peso dei minuti persi cresce di quasi tre volte e il su misura comincia a pagarsi in tre-cinque anni, come mostra il caso descritto nella guida al costo di un gestionale su misura. La soglia non è una regola dell'informatica: è un rapporto tra il numero di persone che subiscono il limite e il costo di costruire il sistema.
Come si decide: tre domande e una regola
Il conto serve a dare un ordine di grandezza. La decisione si prende con tre domande, nell'ordine in cui riducono il rischio.
Domanda 1: per quanti anni deve servire?
Se la risposta è "non lo so", è già un'informazione: stai decidendo senza orizzonte. Scrivi tre numeri, minimo, probabile e massimo. Un'azienda che prevede di cambiare sede, di essere venduta o di cambiare modello in tre anni non ha motivo di costruire niente. Un'azienda che ci sarà in dieci anni con lo stesso modo di lavorare ha ragione di considerare un sistema suo.
Domanda 2: il processo è standard o è tuo?
Una prova semplice: scrivi le dieci regole più importanti dell'azienda, quelle che se sbagliate fanno danni. Se otto su dieci si trovano già in un gestionale di settore, il prodotto di mercato ti serve. Se solo tre su dieci coincidono, e le altre sette sono il motivo per cui i clienti ti scelgono, allora il tuo vantaggio sta nelle regole e un sistema su misura le protegge. Per i serramenti di Vicenza la risposta è sei su dieci: il calcolo dei tempi di consegna con i fornitori e gli sconti per i serramentisti storici sono propri dell'azienda, il resto è standard.
Domanda 3: dove vivono le regole oggi?
Se stanno scritte in un documento o nella testa dei responsabili, si portano in qualsiasi sistema. Se stanno nel VBA e solo lì, la prima spesa non è il nuovo sistema ma l'estrazione delle regole, e quella si fa in ogni caso. Non c'è strada senza questo passo, e conviene farlo prima di parlare con i fornitori.
La regola
| Situazione | Strada |
|---|---|
| Meno di 5 minuti persi al giorno, processi standard, orizzonte oltre 5 anni | Gestionale di mercato |
| Serve tempo, il budget è corto o il fornitore giusto non c'è ancora | Dati su SQL Server, poi decidere con calma |
| Più di 20 utenti e un processo che è davvero tuo | Su misura, a fasi |
| Processo in parte tuo e in parte standard | Prodotto di mercato per la parte standard, modulo su misura per la parte tua |
| Meno di 3 anni di orizzonte | Dati su SQL Server e basta |
Per Vicenza il consiglio è in due tempi: spostare i dati su SQL Server subito, con 14.700 euro, per eliminare il rischio di corruzione e il muro dei 2 GB, e nei sei mesi successivi valutare il prodotto di mercato con una prova sui dati veri. Il su misura, per la sola parte dei tempi di consegna, si decide solo se il prodotto non riesce a coprirla.
Se la scelta cade sulla costruzione, il modo di scegliere chi la scrive pesa quanto la scelta stessa: trovi le domande nella guida a come scegliere una software house.
Come si migra senza fermare l'azienda: il piano di otto settimane
Qualunque strada si scelga, la migrazione dei dati segue lo stesso schema. L'obiettivo non è fare presto ma non toccare mai il lavoro di chi usa il sistema. Il piano di Vicenza è di otto settimane, e si può ridurre solo accorciando la parte di verifica, che è l'ultima cosa da accorciare.
- Settimane 1-2, inventario e regole: lettura del file, elenco di tabelle, query, maschere e report, estrazione delle regole dal VBA, intervista con chi usa il sistema. Il risultato è un documento di dieci pagine, firmato dal responsabile.
- Settimana 3, bonifica dei dati: doppioni, campi liberi, codici inconsistenti. Le decisioni le prende il cliente, la bonifica la fa il fornitore. Nel caso di Vicenza 9 tabelle su 41 hanno problemi e 1.800 anagrafiche vanno unificate.
- Settimane 4-5, costruzione: database di destinazione, import, ricollegamento dell'interfaccia o configurazione del prodotto, riscrittura delle regole. In parallelo, un ambiente di prova con una copia dei dati veri.
- Settimana 6, riconciliazione: confronto automatico tra vecchio e nuovo, riga per riga e totale per totale (il programma è nella prossima sezione). Nessun dato passa se non quadra.
- Settimana 7, parallelo: per cinque giorni lavorativi si inserisce nel vecchio e nel nuovo sistema, in due utenti pilota. Le differenze si correggono la stessa sera.
- Settimana 8, passaggio e cautela: si passa di venerdì pomeriggio, il vecchio file resta in sola lettura per almeno tre mesi, e per due settimane c'è una persona dedicata alle domande degli utenti.

La regola che tengo da sempre: la verifica occupa metà del tempo. Nel piano, le settimane 6, 7 e 8 sono tutte controllo. Chi riduce il piano a quattro settimane lo fa togliendo la verifica, e il costo si ripresenta come errore in produzione: una fattura sbagliata, un ordine perso, un cliente che chiama.
Due scelte che non conviene mai saltare. La prima è il parallelo: fa paura perché raddoppia il lavoro per una settimana, ma è l'unico modo per scoprire le regole che nessuno ha ricordato. La seconda è il vecchio file in sola lettura: costa niente e dà la possibilità di rispondere a "come era un anno fa" senza ricostruire nulla.
Se i dati arrivano anche da macchinari o linee di produzione, la questione è più ampia e passa dall'integrazione con i sistemi di fabbrica: un esempio concreto è l'integrazione SCADA e MES con .NET e OPC UA.
Come si verifica che i dati siano passati bene: un programma di riconciliazione
La riconciliazione è il passo che più spesso viene fatto "a occhio", e dove nascono i problemi che emergono tre mesi dopo. Il principio è semplice: per ogni tabella, il numero di righe e la somma di una colonna numerica devono essere identici nel vecchio e nel nuovo database. Se non lo sono, qualcosa è andato perso o duplicato.
Il programma qui sotto è una console in C# con due pacchetti: System.Data.OleDb, per leggere il file Access (serve il motore ACE di Microsoft installato sul computer, in versione a 64 bit se il programma è a 64 bit), e Microsoft.Data.SqlClient per SQL Server. Confronta le tabelle che gli indichi e stampa le differenze.
using System.Data.Common;
using System.Data.OleDb;
using Microsoft.Data.SqlClient;
// Tabelle e colonne da confrontare: nomi fidati, scritti da noi, mai presi da un utente.
var controlli = new[]
{
new Controllo("[Clienti]", "[IdCliente]"),
new Controllo("[Ordini]", "[Totale]"),
new Controllo("[Righe Ordine]", "[Quantita]"),
new Controllo("[Consegne]", "[IdConsegna]"),
};
var accessConn = args[0]; // Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\dati\gestione.accdb
var sqlConn = args[1];
await using var access = new OleDbConnection(accessConn);
await using var sql = new SqlConnection(sqlConn);
await access.OpenAsync();
await sql.OpenAsync();
var errori = 0;
foreach (var c in controlli)
{
var vecchio = await ContaAsync(access, c);
var nuovo = await ContaAsync(sql, c);
var uguali = vecchio == nuovo;
if (!uguali) errori++;
Console.WriteLine($"{c.Tabella,-18} righe {vecchio.Righe,8} / {nuovo.Righe,8} somma {vecchio.Somma,14:N2} / {nuovo.Somma,14:N2} {(uguali ? "OK" : "DIVERSO")}");
}
return errori == 0 ? 0 : 1;
static async Task<(long Righe, decimal Somma)> ContaAsync(DbConnection cn, Controllo c)
{
await using var cmd = cn.CreateCommand();
cmd.CommandText = $"SELECT COUNT(*), SUM({c.Colonna}) FROM {c.Tabella}";
await using var r = await cmd.ExecuteReaderAsync();
await r.ReadAsync();
var somma = r.IsDBNull(1) ? 0m : Convert.ToDecimal(r.GetValue(1));
return (Convert.ToInt64(r.GetValue(0)), Math.Round(somma, 2));
}
record Controllo(string Tabella, string Colonna);Il programma restituisce 0 se tutto quadra e 1 altrimenti, quindi si può inserire in una procedura di rilascio che si ferma da sola. Sul file di prova di Vicenza, il primo giro ha stampato una differenza: la tabella delle righe d'ordine aveva 212 righe in meno nel nuovo database. Erano righe con un codice articolo vuoto, che la regola di importazione scartava in silenzio. Senza il confronto, 212 righe d'ordine sarebbero sparite per sempre.
Quel controllo ha un limite da sapere: confronta totali e conteggi, non il contenuto di ogni campo. Per i dati più delicati, come anagrafiche e importi, aggiungi un confronto campo per campo su un campione, per esempio le 500 righe più recenti e 500 casuali. La somma di una colonna non si accorge di due errori che si compensano.
Le regole nascoste nel VBA: come si estraggono
È la parte che decide se la migrazione ha successo. Un'applicazione Access non è un insieme di tabelle: è un insieme di tabelle e di comportamenti, e i comportamenti stanno nel codice. Portare i dati senza le regole produce un sistema che sembra funzionare e dà numeri sbagliati.
Il metodo che uso ha quattro passi, e a Vicenza ha richiesto tre giorni di lavoro.
1. Esportare tutto il codice in testo
Il codice VBA di un file Access si può esportare in file di testo, uno per modulo e per maschera. Da quel momento è leggibile, ricercabile e confrontabile come qualsiasi codice. Si cercano le parole che indicano una decisione: If, Select Case, IIf, i messaggi all'utente (MsgBox) e i blocchi (Cancel = True).
2. Classificare ogni decisione
Ogni condizione trovata finisce in una di tre categorie: regola di business (lo sconto, il blocco, il calcolo), regola di interfaccia (il campo che si nasconde, il colore) e rimedio a un limite (il controllo che evita che Access si blocchi). Le prime vanno portate. Le seconde si decidono per il nuovo sistema. Le terze di solito spariscono, ed è uno dei vantaggi dell'operazione.
3. Scrivere ogni regola in una frase e un esempio
Per esempio: "Ai clienti con più di tre anni di anzianità e almeno 40.000 euro di ordini l'anno si applica lo sconto del 6% sui serramenti in PVC, escluse le promozioni. Esempio: ordine di 10.000 euro, sconto 600 euro". Una frase e un caso con numeri sono ciò che permette poi di scrivere un test, e di far leggere la regola a chi la conosce davvero.
4. Farla confermare da chi lavora
Le 17 regole di Vicenza sono state lette ad alta voce al commerciale, al magazzino e all'amministrazione. Quattro sono state corrette: il codice faceva una cosa, ma la prassi era cambiata da anni e nessuno aveva toccato il codice. È il risultato più prezioso dell'inventario: le regole nel codice sono spesso diverse da quelle che l'azienda crede di avere.
Il bonus dell'operazione è il test. Ogni regola scritta con il suo esempio diventa un test automatico, che da quel momento protegge il sistema nuovo da ogni futura modifica. Lo stesso metodo vale per qualsiasi applicazione desktop vecchia: lo trovi applicato nella guida alla migrazione di Windows Forms e in quella sul passaggio da VB6 a .NET, dove il linguaggio è un parente stretto del VBA.
Quali errori ho visto fare più spesso?
Le migrazioni da Access sbagliano in pochi modi, sempre gli stessi. Li scrivo perché evitarli vale più di qualsiasi scelta tecnica.
Fidarsi del "ci pensa il fornitore". Un gestionale di mercato non conosce le tue 17 regole. Se non le scrivi tu prima, il consulente del prodotto configura quello che gli racconti, e le regole dimenticate emergono nei primi tre mesi sotto forma di errori. Il documento delle regole è tuo, non del fornitore.
Migrare tutto, compreso quello che non serve. Le 8 maschere mai aperte e le tabelle di appoggio del 2017 non vanno nel nuovo sistema. Ogni elemento portato dietro costa giornate di test e aumenta la superficie dei problemi. Chiedi agli utenti che cosa usano davvero.
Dimenticare i report. Gli utenti dicono "gestionale" ma pensano ai documenti: il preventivo con il suo aspetto, la conferma d'ordine con il logo e le condizioni. Se il nuovo sistema non produce un preventivo uguale o migliore, sembrerà un passo indietro anche se tutto il resto funziona. I 6 documenti per i clienti sono a Vicenza il 20% del lavoro di interfaccia.
Saltare il parallelo per fretta. È la tentazione più forte. Il parallelo costa una settimana di doppio inserimento per due persone, 80 ore di lavoro, circa 2.560 euro. Gli errori che trova costano un multiplo di quella cifra, e arrivano quando i clienti li vedono.
Spegnere il vecchio sistema il giorno del passaggio. Il vecchio file deve restare leggibile per mesi. Alla prima domanda del commercialista su un ordine di due anni fa, o di un cliente che contesta una bolla, avere il vecchio sistema evita ore di ricostruzione.
Lasciare la gestione al dipendente che aveva scritto Access. Spesso è la persona più motivata a "sistemarlo in casa", ed è anche il rischio che stai cercando di eliminare. Può partecipare all'inventario, dove la sua conoscenza è preziosa, ma la responsabilità del nuovo sistema deve stare in un posto che non dipende da una sola persona.
Non pianificare la formazione. Nove persone abituate a un'interfaccia da dieci anni non passano a un'altra in un pomeriggio. A Vicenza le 12 giornate di formazione e avvio sono il 3% del costo e determinano l'adozione: un sistema bello che non viene usato è un costo fisso.
Come si decide in una settimana?
La scelta non richiede un progetto. Richiede cinque giorni di lavoro di una persona interna e un confronto con chi può consigliarti.
- Giorno 1: l'orizzonte e i segnali. Scrivi per quanti anni deve servire il sistema e conta quanti dei sette segnali si applicano al tuo file. Misura anche la dimensione del file e la crescita dell'ultimo anno.
- Giorno 2: l'inventario. Elenca tabelle, query, maschere, report e macro. Per ogni maschera, scrivi chi la usa e con quale frequenza. Metti da parte quelle mai usate.
- Giorno 3: le regole. Esporta il codice VBA e conta le righe. Cerca le decisioni e scrivi le prime dieci regole con un esempio ciascuna.
- Giorno 4: i minuti persi. Per ogni utente, tre osservazioni in giornate diverse: quanto tempo perde in attese, riaperture, ricopiature. Moltiplica per 220 giorni e per il costo orario.
- Giorno 5: il confronto. Con questi numeri, chiedi un'offerta per la messa in sicurezza dei dati e due per il prodotto di mercato, sulla stessa lista di moduli. Inserisci i valori nel modello e leggi i tre scenari.
Il primo passo è sempre piccolo e annullabile. Se il file è vicino al limite o si corrompe, è lo spostamento dei dati, che si fa in 6-8 settimane e non chiude nessuna porta. Se i processi sono standard, è la prova del prodotto di mercato su una copia dei dati, con tre utenti per due settimane. Se il processo è davvero tuo, è un prototipo di tre settimane sul solo modulo che nessun prodotto copre.
Alla fine della settimana hai quattro cose che prima non avevi: un numero di anni, un elenco di regole, una cifra di minuti persi e un confronto tra offerte sulle stesse voci. Con queste, la discussione non è più "quale costa meno", ma "quale riduce il rischio e il costo nei prossimi anni".
Che cosa farebbe oggi l'azienda di Vicenza?
Torno ai serramenti. Il titolare aveva tre domande e un file che si corrompeva. Con il conto in mano avrebbe visto che il "non fare niente" costa 19.296 euro l'anno di tempo perso e fermi, che il muro dei 2 GB arriva tra tre anni, e che il su misura completo, a 176.400 euro, non si ripaga con nove utenti.
Avrebbe quindi deciso in due tempi. Subito, 14.700 euro per spostare i dati su SQL Server: sparisce il rischio di perdere il lavoro di un lunedì e il muro dei 2 GB, e nel frattempo si estraggono le 17 regole in un documento. Nei sei mesi dopo, la prova di un gestionale di mercato su una copia dei dati, con una domanda precisa: copre almeno otto regole su dieci? Se sì, a cinque anni risparmia rispetto al su misura e si libera della dipendenza dal codice di una persona. Se no, scrive un solo modulo, quello dei tempi di consegna, e per il resto usa il prodotto.
In ogni caso avrebbe deciso con un numero e non con la simpatia di un venditore, e avrebbe ancora aperta la strada giusta tra due anni. È questa la differenza, e vale più dell'esito.
Se hai un file Access e vuoi sapere in quale zona cade la tua azienda, il percorso comincia dal software su misura, che include anche i casi in cui la risposta è non costruire. Se il tuo problema è più ampio e riguarda un sistema vecchio di cui ti chiedi se rifarlo, la guida su riscrivere o rifattorizzare il software legacy fa lo stesso conto. Se il punto di partenza è un foglio Excel e non un database, la guida a quando sostituire Excel con un gestionale ha i criteri. E se ti serve una persona che guardi i numeri con te, c'è la consulenza software.
In cinque righe. Conta quanti dei sette segnali si applicano al tuo file e guarda quanto manca ai 2 GB. Estrai le regole dal VBA prima di parlare con qualsiasi fornitore, perché sono il patrimonio che non si può perdere. Misura i minuti persi ogni giorno per utente: valgono 1.056 euro l'anno ciascuno con nove utenti. Se serve tempo, sposta i dati su SQL Server per 14.700 euro, e decidi con calma. Costruisci su misura solo dove il processo è tuo e gli utenti sono più di venti.
Domande frequenti
Per un'azienda con 9 utenti, spostare i dati su SQL Server e tenere Access come interfaccia costa circa 14.700 euro (35 giornate). Un gestionale di mercato costa 16.800 euro di avvio più 15.300 l'anno, 93.300 euro in cinque anni. Il su misura costa 176.400 euro di avvio, 327.880 in cinque anni.
Quando si verificano tre o più di questi segnali: il file si avvicina al limite di 2 GB, si corrompe, gli utenti si bloccano a vicenda, le regole stanno solo nel codice VBA, non ci sono tracce di chi cambia cosa, l'accesso da fuori ufficio è un ripiego, l'ambiente Office invecchia.
Con nove utenti quasi mai. Per ripagarsi a cinque anni contro un prodotto di mercato servirebbero 44 minuti persi al giorno per utente, 33 a otto anni. Sopra i venti utenti e con un processo davvero proprio, il conto cambia.
Otto settimane nel caso descritto: due di inventario e regole, una di bonifica dei dati, due di costruzione, una di riconciliazione, una di parallelo e una di passaggio. La verifica occupa metà del tempo e non si accorcia.
Confrontando per ogni tabella il numero di righe e la somma di una colonna numerica tra vecchio e nuovo database, con un programma automatico. Nel caso descritto ha trovato 212 righe d'ordine scartate in silenzio dalla regola di importazione.
Vanno estratte prima di scegliere il fornitore: si esporta il codice in testo, si classifica ogni decisione, si scrive ogni regola come frase con un esempio e la si fa confermare da chi lavora. Nel caso descritto erano 17, e quattro erano diverse dalla prassi attuale.
