PDA

View Full Version : [VB6] Errore run-time 430, MDAC?


andreapav
01-10-2009, 19:29
Ciao a tutti!
ho un cliente che non riesce ad avviare un programma. Questo viene correttamente installato ma all'avvio si apre una messagebox con errore di runtime 430: La classe non supporta l'automazione o l'interfaccia prevista.

Cercando in Internet molti dicono che sia un problema di compatibilità della libreria usata con quella presente nel PC per l'accesso ai database. Effettivamente uso dei database mdb.

Ho quindi provato a scaricare MDAC 2.8 (Microsoft Data Access Components) ma non riesco neanche a installare!!

Come posso risolvere il problema? E' urgente!!! :muro:

MarcoGG
02-10-2009, 08:12
1. S.O. del cliente ?

2. Nel tuo programma fai uso di Dll esterne ?

3. Come primo intervento, prova ad installare sulla macchina del cliente questo :
http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=cb824e35-0403-45c4-9e41-459f0eb89e36
C'è una certa possibilità che risolva, cmq male non fa...

andreapav
02-10-2009, 08:44
Grazie Marco,
purtroppo potrò provare solo luned' perchè ho scoperto ora che il tipo oggi non c'è...

Comunque:
- OS del cliente: Windows XP, ha Office 2000, io il 2003.
- uso principalmente le librerie di VB ma anche una esterna ma non credo centri: è per la lettura dei file cad.

hmmm...ho appena visto che io sul mio pc dovrei avere MDAC 2.0... (la versione di Mdac_typ.exe è la 4.71 che ho visto corrisponde a MDAC 2.0). Può essere questo?
Adesso provo in una macchina virtuale ad aggiornare MDAC al 2.7 (quella del cliente) e poi al 2.8. e vedo che succede...

andreapav
02-10-2009, 08:59
ritratto, con Component Checker ho visto che ho la 2.8 SP1.
Comunque quel mdac_typ.exe è vecchio, proverò a creare l'installer con quello nuovo e vedo se risolvo il problema.

MarcoGG
02-10-2009, 09:13
- OS del cliente: Windows XP, ha Office 2000, io il 2003.
- uso principalmente le librerie di VB ma anche una esterna ma non credo centri: è per la lettura dei file cad.


Beh, con un Win XP Pro, magari SP2, e poi se ha pure Office installato, mi sentirei di escludere un problema MDAC, ma non si può mai dire ( alcuni fanno davvero cose turche ... ).
Fai qualche prova ( anche con il VB6 runtime... ), e fammi sapere...

andreapav
02-10-2009, 10:58
Nel caso non fosse l'MDAC cosa potrebbe essere? come faccio a sapere quale libreria sballa?...

MarcoGG
02-10-2009, 11:30
Nel caso non fosse l'MDAC cosa potrebbe essere? come faccio a sapere quale libreria sballa?...

E' un classico errore da "DLL Hell". Personalmente non ho gran dimestichezza nel risolvere questo tipo di errori ( e cmq, così a distanza, senza vedere il sorgente completo, sarebbe dura in ogni caso ), anche perchè, se uso VB6 faccio il più possibile Dll Embedding.
Potrebbe essere una diversità di versione di una Dll a cui fa Rif. il programma. Sul Pc di produzione c'è una Dll di una versione diversa ( diversa al punto che una o più funzioni potrebbero addirittura aver cambiato firma, o non essere più disponibili ). Sul Pc del cliente, quindi va in errore.
Solitamente è bene ( almeno, io ho sempre fatto così ) farsi un certo numero di macchine virtuali ( Win2K, Win2K SP4, WinXP, WinXP SP1, WinXP SP2, ... ), con installazioni base ( niente Office, niente programmi aggiuntivi ), e testare il programma VB6 nei vari ambienti.
Secondo me non c'è ragione al mondo per cui un programma VB6 con Db Access non possa girare su un XP Pro SP2, senza aver bisogno di aggiornare MDAC, VB6 Runtime, e ovviamente senza dover installare Access...