Tra ieri e oggi in ufficio mi sono imbattuto in uno scomodo problema che mi ha tenuto arenato diverse ore nel cercare possibili soluzioni su internet.
Compilavo da Windows 7 SP1 un progetto con riferimenti a ADODB; funzionava tutto alla perfezione ma quando lanciavo il progetto da un PC con Windows XP mi veniva restituito un errore (Errore 13 - Tipo non corrispondente).
Soltanto grazie ad un mio collega sono riuscito a risolvere il dilemma.

Ambiente di partenza:
  • Sistema operativo:
        Windows 7 - (32 e 64 bit)
  • Ambiente di sviluppo:
        Visual Basic 6 SP6 (VB6 SP6)
  • Componente "incriminato":
        Microsoft ActiveX Data Objects 2.8 Library (ADODB, msado27.tlb, msado28.tlb e msado15.dll)
  • Errore riscontrato:
        Errore 13 - Tipo non corrispondente

Dopo aver passato la giornata a cercare possibili fix o workaround abbiamo scoperto che basta eseguire alcuni semplici passaggi:
  • Posizionarsi sulla cartella
        %ProgramFiles%\Common Files\System\
    Nota: per versioni di windows a 64 bit la cartella sarà
        %ProgramFiles(x86)%\Common Files\System\
  • Impostare i permessi alla cartella "ado\" in modo da esserne il proprietario e avere permessi di lettura/scrittura
  • Aprire la cartella "ado\"
  • Rinominare il file msado27.tlb in msado27_new.tlb
  • Rinominare il file msado28.tlb in msado28_new.tlb
  • Cercare il file "msado27.tlb" presente su un pc con Windows XP SP3 (o scaricarlo da questo link) e copiarlo nella cartella "ado\" di Windows 7 SP1
  • Duplicare il file "msado27.tlb" presente in Windows 7 SP1 chiamandolo "msado28.tlb"
  • Riavviare il sistema

A questo punto possiamo compilare tranquillamente i nostri progetti senza più preoccupazioni!
Spero di esservi stato utile, se avete segnalazioni o commenti potete inserirli qui sotto, saranno ben accetti!