Newsgroup: it.comp.appl.access
Titolo: Stessa routine, su un file mdb funziona, sull'altro no !!!

Questa e' davvero curiosa
Ho le mie belle procedure realizzate con Access
Quando faccio delle modifiche le provo prima sempre da sole, quindi su un 
mdb vergine appena creato, creo una funzione/procedura e le provo a mano
Poi le copio dentro il programma che dovra' usarle, col copia/incolla
Allura, la seguente routine, che interroga un db Firebird per recuperare il 
valore di un generatore, se inserita su un mdb vergine appena aperto 
funziona correttamente, se inserita nel mio programma non funziona piu'
=================================================
Dim MyDB As Database
Dim MyRS As Recordset
Set MyDB = OpenDatabase("PIPPO", False, False, 
"ODBC;DSN=MIO_DSN;UID=SYSDBA;PWD=masterkey")
Set MyRS = MyDB.OpenRecordset("select GEN_ID(GEN_GLOB,1) from rdb$database", 
dbOpenDynaset, dbSQLPassThrough)
If Not (MyRS.EOF) And Not (MyRS.BOF) Then
     NUOVO_VALORE_GENERATORE_GLOBALE = MyRS("GEN_ID")
     Else
     NUOVO_VALORE_GENERATORE_GLOBALE = 0
     End If
 MyRS.Close
MyDB.Close
=================================================
L'errore che mi viene restituito dalla riga che apre il recordset e' il 13 = 
TIPO NON CORRISPONDENTE
Ho gia' verificato di avere gli stessi riferimenti impostati tra il mio 
programma e l'mdb vergine aperto solo per le prove e sono identici:
Visual basic for Application
Microsoft Access 11.0 Object Library
Ole Automation
Microsoft ActiveX Data Object 2.1 Library
Microsoft Dao 3.6 Object Library
Cos'altro potrebbe essere diverso tra il file mdb vergine appena creato (che 
funziona)  e le mie procedure ???
Ciao e grazie
RobertoA

 ha scritto nel messaggio
news:4629...@newsgate.x-privat.org...

Ciao RobertoA,
probabilmente nel db che funziona i riferimenti sono in questo ordine:
----
Microsoft Access 11.0 Object Library
Ole Automation
Microsoft Dao 3.6 Object Library
Microsoft ActiveX Data Object 2.1 Library
----
nel db che non funziona, questa istruzione
----
Dim MyRS As Recordset
----
istanzia l'oggetto recordset con il tipo DAODB.Recordset.
Se vuoi essere semrpe sicuro di istanziare il tipo di oggetto corretto
esegui il dim cosě:
----
Dim MyRS As DAO.Recordset
----
se la libreria "Microsoft ActiveX Data Object 2.1 Library" non la usi,
toglila dai riferimenti.
Ciao
-- 
Giorgio Rancati
[Office Access MVP]

 istanzia l'oggetto recordset con il tipo DAODB.Recordset.
                                                            ~~~~~~~~~~~~
mi si sono intrecciate le dita, cosě č meglio ADODB.Recordset
:-)


 [Office Access MVP]
Bingo !!!!!
A questa sull'ordine delle librerie caricate non ci avevo proprio pensato
Grazie mille sei sempre molto rapido ed efficace nei tuoi interventi
RobertoA

 funziona correttamente, se inserita nel mio programma non funziona piu'
Utilizzi FireBird come Back-End da tempo o è solo un esperimento?
Funziona l'accoppiata?
Saluti.


Funziona si
Tanti automatismi propri di Access non funzionano correttamente, tipo i 
campi contatore (che non esistono su Firebird)
Per gli inserimenti non possiamo usare i controlli data forniti di serie, a 
meno di inserire nel 'before insert' il codice per predisporre i campi 
univoci della tabella
Pero' con poco sforzo si puo' sopperire con altre funzionalita', realizzando 
un front-end collegabile poi a molti altri db server diversi
Anche l'utilizzo di odbc, pur se meno prestante dell'utilizzo di file mdb o 
il collegamento diretto a SqlServer, permette comunque prestazioni buone per 
utilizzo in ambiente di produzione anche con db di una certa dimensione
Attualmente il piu' corposo db, in funzione presso un cliente da circa un 
anno, e' sui 600 Mb e cresce al ritmo di 15-20 Mb/mese, contiene circa 
400.000 righe documenti, ed e' suddiviso in oltre un centinaio di tabelle
L'unico vero problema, e' lo 'scassamento' del file mdb contenente maschere 
e codice
Problema che abbiamo work-around-ato copiando ogni volta il file da una 
posizione protetta a quella di lavoro, certo che sta cosa contribuisce a 
fornire quell'alone di instabilita' al sistema che non viene proprio ben 
vista, e a ragione credo
Insomma diciamo che funziona, ma potrebbe anche andare meglio
Ciao
RobertoA