Newsgroup: it.comp.lang.visual-basic
Titolo: Ado Access e Connessione

salve ....
.....ho un problemino che mi blocca un grosso programma con gestione dati in
ACCESS.
allora per fare un test ho fatto creare una piccola applicazione ADO in
automatico dal VB 6 utilizzando dati di Access 7
si ripresenta lo stesso problema.
sul mio PC di sviluppo: eseguo il programma che funziona perfettamente
sul pc dell'utente, auando crea la connessione da questo errore:
Run-time 429
Activex component can't create object
e lo da sulla riga    Set db = New ADODB.Connection
la parte di codice dove si blocca tutto è:
------------------------------------------------------
    Dim db As Connection
   Set db = New ADODB.Connection
    db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" & App.Path &
"\Ordine.mdb;"
  Set adoPrimaryRS = New Recordset
ecc.
-------------------------------------------------
tra i riferimenti del progetto ho ativato anche Microsoft DAO 3.51 object
library
le ho studiate e provate tutte.
se qualcuno haun'idea o è passato per questi problemini ....
Grazie
Claudio

 e lo da sulla riga    Set db = New ADODB.Connection
Lo credo bene, la dim te la riconosce perchè hai attivato DAO, mentre non sa
cosa farci con ADODB
Ciao Fammi sapere.
Axel

Il codice iniziale era ...
   Dim db As Connection
   Set db = New Connection
  db.CursorLocation = adUseClient
ecc.
e tra i riferimenti c'era:
Microsoft Activex Data Object 2.0     (msad20.dll)
Microsoft Activex Data Object Recordset 2.1 Library     ( MSADOR15.dll)
Microsoft ADO Ext 2.1 for DLL and security    (MSADOX.DLL)
ma il problema era lo stesso, poi ho iniziato a fare delle prove e sono
iniziate le varie fasi confuse...
Claudio

 Microsoft ADO Ext 2.1 for DLL and security    (MSADOX.DLL)
Controlla bene -> Microsoft Activex Data Object 2.0     (msad20.dll)
Secondo me hai caricato Microsoft Activex Data Object 2.0  (msado20.tlb e
non .dll) che non va bene, quello che devi caricare è Microsoft Activex Data
Object 2.0 o ancora meglio MICROSOFT ACTIVEX DATA OBJECT 2.1, la dll è
MSADO15.DLL (scusa per l'urlo ma era solo per evidenziarlo) credo in tutti e
due i casi, la .tlb non basta (o è inutile).
Con quello che hai caricato nei riferimenti ti dovrebbe prendere errore la
Set db = New Connection in primo luogo per la NEW.
Ciao Axel.


Altra precisazione, nel caso la libreria fosse giusta, il codice corretto č:
'Dichiarazione a livello di modulo
Dim db As ADODB.Connection
'Nel codice
Set db = New ADODB.Connection
db.CursorLocation = adUseClient
ariCiao Axel.

 Microsoft ADO Ext 2.1 for DLL and security    (MSADOX.DLL)
Il codice che riporti non è giusto, come ti hanno già segnalato. Soprattutto
se hai referenziato anche i DAO scrivendo
Dim db As Connection
il VB s'incasina perchè non sa qual'è l'oggetto Connection che vuoi usare
(c'è sia negli ADO che nei DAO) e genera quello che capita (penso più o meno
random).
Come già ti hanno detto altri, il codice giusto è
Dim db As ADODB.Connection
Set db = New ADODB.Connection.
Per quanto riguarda le librerie: la Recordset Library è la versione leggera
della Data Object (il modello ad oggetti è ulteriormente ridotto) e da
quello che so la usa l'internet explorer.
La puoi usare anche tu, al posto di msado20.dll, ma solo se ti serve
soltanto il Recordset Ado e non altri oggetti.
La MSADOX serve per gestire le repliche dei database e le sicurezze con
utenti e gruppi. Da quello che dici non penso che ti serva.
Queste due le puoi tirare via insieme a tutte le altre relative ai DAO che
hai eventualmente referenziato.
La prima è quella giusta (strano però che tu abbia la 2.0 mentre le altre
sono tutte 2.1, mah!).
Secondo me il problema potrebbe essere anche nella mancanza di DCOM sul
computer di utilizzo del tuo programma, che è necessaria per il
funzionamento degli ADO.
Sul CD di VB dovrebbe esserci DCOM95 o DCOM98; prova ad installarlo sul
computer che utilizzerà il tuo programma, poi reinstalla gli ADO (il file di
installazione degli ADO è MDAC_TYP.EXE).
Ciao,
   <--< Nik >-->

riepilogo
ho un pacchetto che non mi funziona sul PC dell'utente. Gli errori li trova
tutti sull'oggetto ADO
allora ho messo da parte un attimo il mio programma ed ho generato
automaticamente un programmino su un piccolo MDB (usando la gestione con
Classe dell'oggetto ADO) .
Il tutto utilizzando l'autocomposizione di VB6. Compreso il pacchetto di
installazione
Malgrado faccia tutto VB 6, sul PC dell'utente non funziona....
Allora ho cominciato a vedere il perchè ....
... dopo tante letture e tentativi il suggerimento di Axelmet è stato
sbloccante.
Infatti la libreria MSADO15.DLL  non c'era. DOpo averla inserita nel
pacchetto di installazione si pianta su questa stringa di connessione:
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" & App.Path &
"\Ordine.mdb;"
dicendo "Impossibile trovare il provider specificato". Qual'è a questo punto
la DLL che manca ???
adesso proverò ad usare un altro provider OLE....
per quanto riguarda la domanda di Franco, sul PC dell'utente c'è Eplorer
5.0....
domanda: ma allora il programma di installazione è inaffidabile ???
perchè non inserisce le giuste DLL ????
Ciao Claudio

Ho risolto .....ma
il problema era l'utilizzo del  provider
     Jet 3.51 OLE DB Provider
ho usato
OLE DB Provider for ODBC Driver
e tutto funziona
ma..... perchč ???
CLaudio

 ma..... perchè ???
Scusa ma sei sicuro di averlo sulla macchina che utilizza il programma, il
provider Jet 3.51?
Perchè se hai ADO 2.1, e ridistribuisci quello durante l'installazione, il
provider è il Jet 4.0 ed è quello che devi usare nella stringa di
connessione.
Secondo me se cambi la stringa in "PROVIDER=Microsoft.Jet.OLEDB.4.0"
funziona tutto.
Ciao,
   <--< Nik >-->