Newsgroup: it.comp.lang.visual-basic
Titolo: errore 430... sto impazzendo

allora
vb6 installato su DUE macchine diverse. entrambe con win7, entrambe 
aggiornate con windows update. vb6 sp6.
prendo GLI STESSI sorgenti di qua e di là. un programma che si collega 
a SQL server con ADO 2.7
il programma, da ambiente di sviluppo, funziona di qua e di là
compilo, di qua e di là
tutto ok, di qua e di là. due file di dimensioni identiche.
ora, prendo il programma e lo installo su un winxp. e poi faccio il 
"giochino" del cambiare l'eseguibile: prima uno e poi l'altro.
uno funziona tranquillamente - quello della macchina win7 installata un 
tot di mesi fa
l'altro - quello della macchina win7 installato una settimana fa - si 
impianta al primo set myDb as new ADODB.Connection, e mi spara fuori 
"errore 430", classi che non hanno automazioni e altre amenità
qualcuno sa dirmi dove stracazzo andare a guardare? o_O
cosa mi sto dimenticando?
grazie in anticipo
d.

Beccoblu ha spiegato il 14/04/2011 :

Sicuramente ti stai dimenticando di dare il codice esatto della zona 
dove avviene l'errore.
Secondariamente, verifica che il progetto sia veramente identico. Se 
hai la spunta "aggiorna automaticamente i riferimenti" o qualcosa del 
genere, rischi che su uno dei due pc di sviluppo il progetto si sia 
automaticamente aggiornato ad una versione di Ado più recente (anche 
perchè 2.7 è veramente archeologia informatica, oltretutto con parecchi 
bug noti risolti nella 2.8 e 2.81).
Alberto

 bug noti risolti nella 2.8 e 2.81).
innanzitutto grazie per la risposta :-)
allora, č vero, ho scritto un'inesattezza. ovviamente al posto dell' 
"As" c'č un "="
cmq l'errore arriva alla prima creazione di un nuovo oggetto 
ADODB.Connection. che sta lě, pulito pulito all'inizio del mio 
programmino :-)
ed entrambi i progetti hanno la spunta ad "aggiorna i riferimenti"
mi viene da pensare che in una delle due macchine ci sia qualcosa che 
manca. ma davvero non saprei dire cosa :(

 ma davvero non saprei dire cosa :(
In che senso?
Non te l'ho scritto prima?
Alberto

 On 2011-04-14 15:34:25 +0200, Albe V° said:
Una targa annerita dal fuoco di fiamme infernali e cigolante sopra un
cimitero di programmi in decomposizione recitava:
Welcome to dll Hell
...tendiamo a scordarcene dei "brutti tempi" che furono!


Ah i tempi passati...
Notti e notti a cercare una dll bacata...
E poi scoprivi che un buontempone autore di una  utility di #erda 
nell'installazione sovrascriveva la tua aggiornatissima dll con una più 
vecchia flaggando il 'sovrascrivi sempre e non chiedere'.
Che bei momenti :D
-- 
-> GbC|
www.gbcdepot.com
www.chiappori.com
 

"Beccoblu"  ha scritto nel messaggio news:io6slb$mnb$1...@tdi.cu.mi.it...
allora








***************************************
Capito poco, scusa.
Prova senza riferimenti a versioni di ADO
(eliminale se ci sono):
Public Sub mRecuperaDati()
On Error GoTo RigaErrore
    Dim cn As Object
    Dim rs As Object
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    With cn
        .CursorLocation = 1
        .Open "Provider=Microsoft.Jet.OLEDB.4.0; " _
            & "Data Source=" & "PathDelTuoDB"
    End With
    With rs
        .CursorLocation = 1
        rs.Open "LaTuaQuery", cn, 1, 3, 1
    End With
    'resto del codice
RigaChiusura:
    If Not rs Is Nothing Then
        If rs.State = 1 Then
            rs.Close
        End If
    End If
    If Not cn Is Nothing Then
        If cn.State = 1 Then
            cn.Close
        End If
    End If
    Set rs = Nothing
    Set cn = Nothing
    Exit Sub
RigaErrore:
    MsgBox Err.Number & vbNewLine & Err.Description
    Resume RigaChiusura
End Sub
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
 

             & "Data Source=" & "PathDelTuoDB"
Alberto


Ahahah cosa ho trovato:
http://www.gbcweb.com/vb/
Whawhawha
http://trollate.altervista.org/gruppo/063.htm


 Non te l'ho scritto prima?
allora, ricapitolo.
macchina di sviluppo A. quella funzionante.
se vado a vedere nel registry le versioni installate di MDAC mi dice:
Version = 2.0.0
FullVersion = 6.1.7600.XXX
la macchina di sviluppo B, quella non funzionante, ha.
Version = 2.0.0
FullVersion = 6.1.7601.XXX
la macchina XP su cui un programma va e l'altro no, ha:
Version = 2.81.XXX
FullVersion = 2.81.XXX
Ho provato a ricompilare, dalla macchina B, togliendo il flag di 
"aggiorna controlli activex", e facendo una prova con tutte le czz di 
versioni, dalla 2.0 alla 2.8 (passando per .1, .5, .6 e .7), mi sono 
fatto anche tutti i czz di installer, ma non ho cavato un ragno dal 
buco. ho anche provato a dire di usare la fantomatica libreria 6.0, ma 
non ho ne ho ben capito il senso. cmq niente di fatto.
idee? :(
grazie mille ancora
d.

 
giusto per esser sicuro, prova a scaricare il component checker:
http://support.microsoft.com/kb/301202
se ricordo bene il tool di ms fa un po' di verifiche incrociate, oltre a 
leggere il registro, e si accorge se c'e' qualche cosa che non torna nelle 
versioni delle dll che hai sul sistema.
magari e' quello...
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

"Albe V°"  ha scritto nel messaggio news:io7339$ih$1...@tdi.cu.mi.it...


Opsss, grazie Alberto.


 magari e' quello...
eh, po' esse
peccato che su win7 nun gira :(
grazie, cmq
cia'
d.

 idee? :(
Beh, ovviamente avrai già fatto l'unica cosa sensata, ossia fare un 
progetto vuoto, con giusto una form e un bottoncino, e nel bottoncino 
hai messo la riga di codice che ti dà errore col relativo 
dimensionamento della variabile adodb.connection.
Riferimenti ad Ado 'quello che vuoi'. Compili questo stesso progetto 
sui due pc Win7 e lo provi su XP, ovviamente senza installer perchè 
MDAC c'è già, hai scritto.
Così isoli il problema e sei sicuro che l'errore sia in quella riga 
esatta.
Alberto

 idee? :(
zac
eh....bisogna ri-spulciare i vecchi post del ng di parecchi anni
addietro!
Cmq....il difetto ti sò dire quale è....
Un compilato old style....insieme al runtime di vb6 vuole una pletora
di dll installate e registrate correttamente nel sistema ospite.
Il problema quale è (l'ha sintetizzato anche GbC)
Il mio programma per funzionare ha bisogno di
pippo.dll ver. 1.0.0.1 Italiano....faccio il setup e lo installo!
Bon!
Il mio utente installa nel suo pc un programma che fa le diete (ad
esempio)
e il suo setup sovrascrive e porta a
pippo.dll ver 1.0.1.0 Inglese ...lo fà in modo silente.....
La dieta funziona...il mio programma no!
....poi installo un vecchio programma di contabilità
che riporta a pippo.dll ver 0.9.0.1 Italiano.....il programma di
contabilità funziona ...ma il mio e la dieta vanno in crash!
Si chiama Dll Hell....l'inferno delle Dll....ed in un pc abbastanza
trafficato di un utente è veramente una dannazione!
A me è capitato di avere un gestionalino che usava ado....l'utente si
installò office2000 che sovrascrisse un po di dll...e smise di
funzionare!
In qualche caso....non me ne vergogno....ho trovato pc parecchio
incasinati...e non si capiva più dove mettere le mani...almeno io non
lo capivo!...ho installato vb6 in sottofondo...e ho tolto i link per
eseguire l'ide!
Mi è capitato anche ...con le trueDBGrid....di dover installare ADO
per il mio programma e DAO per le griglie!
O ancora peggio....una versione di ADO per il programma...ed una per
le griglie....
Che strade ti si prospettano....che è la cosa che ti interessa....
Devi risolvere le dipendenze del tuo progetto.....
vedere nel pc in cui gira correttamente COSA richiede
Verrà fuori una lista di DLL TLB risorse e quant'altro
Quella struttura dovrà essere replicata nel pc ospite a meno che non
ci siano versioni superiori compatibili (San Google ti aiuta!)
poi dovrai farti un setup che tenga conto di queste cose.....
il setup standard è troppo grezzo per farlo!
USA:
InnoDB....gratis
Programmi commerciali
o setup scritto in proprio
che risolvono il conflitto di versioni o nazionalità! (è ovvio che gli
activex commerciali potrebbero avere anche un file licenza per
distribuirli!)
Come vedi un bel casino....nell'era VB4 5 6  eri costretto a sapere
MOOOOLTE cose della macchina compilante e della macchina ospite!
Capisci che a vecchietti come noi una installazione Copia & Incolla
eseguibile come avviene in dotNet è apparsa come le dodici vergini
sempre intatte dei maomettani!(mi sà che da ieri stà apparendo anche a
te così!)
SOLUZIONE DI RIPIEGO
il pc ospite non è proprio schifoso come performance???
Virtualbox ...Sistema operativo pulito...tuo programma installato che
parte in autorun.
Cambi l'icona di virtualbox con quella del tuo programma e
parzialmente vivi felice!...e cominci a fare il porting in dotNet!!!

 trafficato di un utente è veramente una dannazione!
no aspe
rispondo a te e anche ad alberto (gentilissimo)
ho provato anche su macchina pulita. quindi nessun DLL Hell così come 
lo descrivi tu...
la prova ultima che ho fatto è stata installare il tutto su un xp (su 
vmware, solo sistema operativo + aggiornamenti). ho provato un progetto 
"vuoto", con solo la riga incriminata (set abc = new ADODB.Connection, 
naturalmente dopo l'opportuna Dim). e il comportamento è lo stesso. se 
compilo da una macchina tutto ok, se compilo dall'altra, errore 430 e 
430 imprecazioni conseguenti.
oggi devo (fortunatamente) dedicarmi ad altro, lunedi mi rimetto a 
studiarci sopra... ma che palle :(
ciao e grazie
d.


Non so se puo' essere utile, ma se per caso hai installato sp1 di win7 
sembra esserci qualche qualche problema con ado
http://blogs.technet.com/b/asiasupp/archive/2011/03/14/changes-in-mdac-adodb-com-components-in-windows-7-service-pack-1.aspx
HTH
Roberto

 On 2011-04-15 10:54:18 +0200, Wodka40[Google] said:
io te lo ripeto ....poi fai quello che ti pare (in definitiva il
problema è tuo non mio)
hai versioni diverse nelle due macchine!!!
Roberto ti ha fornito un ulteriore elemento....ADO e sp1 di seven
hanno un po di problemi!...se vai a vedere l'articolo è un caso
(vouluto?) di dll hell: un aggiornamento di Windows cambia qualcosa e
non funziona più nulla!
D'altronde ADO oramai è nel dimenticatoio...e troverai sempre più
problemi a scrivere programmi che lo utilizzano!