Newsgroup: it.comp.appl.access
Titolo: Dichiarazione Recordset in VBA

Buongiorno a tutti
Ms Access 2002 versione inglese
nel modulo VBA di un form definisco un recordset nel seguente modo:
all'interno di Private Sub mioPulsante_Click()
Dim mioRecordset As Recordset
quando definisco il recordseet con
Set mioRecorset=CurrentDb.Openrecordset("SELECT.......")
in runtime ricevo errore: type mismatch (runtyme error 13)
nella sezione dichiarazioni del modulo ho
Option Compare Database
Option Explicit
se elimino option explicit il problema persiste.....
la cosa strana (e che davvero non riesco a capire!!!) è che se definisco il
recordset in questo modo
Dim mioRecordset, mioAltroRecordset As Recordset
in runtime ricevo errore sul secondo recordset ma NON sul primo!!!!!!!!!!
(ma come diavolaccio è possibile?????)
è la prima volta che uso MsAccess 2002. Prima usavo il 97 e non avevo mai
avuto problemi di questo tipo
Mi manca forse una libreria??
al momento le selezionate sono nell'ordine VBA, Access 10.0, OLE automation
e ADO 2.1
In effetti questo problema si presenta solo con la definizione di oggetti ma
non di variabili.....
Grazie in anticipo per ogni idea!
saluti
Carlo

 Carlo
Hai dato un'occhiata al file in A97....??
Hai notato differenze di Libreire.......??
ADO č supportata solo dalla versione >A2K.
A97 usa DAO come unica libreria.
Pertanto se vuoi usare DAO anche con A2002 come minimo
devi selezionarla cercandola nell'elenco, ma non basta.
Se sei sicuro di non usare ADO Deselezionala
altrimenti deselezionala, seleziona DAO e riselezionala,
altrimenti devi ESPLICITARE quale Libreira usi
Dim rs As DAO.Recordset / Dim rs As ADODB.Recordset
e cosě con tutti gli oggetti DAO e ADO.
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 ha scritto nel messaggio
news:2pjrp9F...@uni-berlin.de...

Non vorrei dirti una sciocchezza, ma la tentazione di rispondere è troppo
grande...., comunque credo che manchino i riferimenti a DAO (3.5 o 3.6)
usati di default in A97 e non in A2002 che infatti usa gli ADO. Prova ad
inserirli prima di ADO e magari a dichiarare il Recordset come
DAO.Recordset.  Bye cld

Grazie ad entrambi.
Ho risolto eliminando ADO e selezionando DAO 3.6
Se avete un pň di pazienza con un incompetente come me, mi piacerebbe capire
che differenza c'č tra un recordset ADO e un recordset DAO...
Voglio dire....le mie poche esperienze di programmazione mi consentono di
usare gli oggetti che avevo sempre usato in 97, e cioč mi pare di capire gli
oggetti DAO.
Ora, se vado avanti con le mie conoscenze, considerando che il 2002 supporta
di base ADO e non DAO....mi perdo qualcosa? realizzo cioč un db obsoleto e
con il quale potrei presto avere problemi?
Scusate...non so se le mie domande siano mirate o sufficientemente chiare,
ma il tutto rientra nel fatto che io di lavoro faccio un'altra cosa :-))))
Grazie ancora
Carlo

 ha scritto nel messaggio
news:2pjtarF...@uni-berlin.de...

Se devi lavorare con Jet, pui continuare tranquillamente ad utilizzare DAO;
a parte questo, il codice che usi per dichiarare i recordset non č corretto:
dichiarare
Dim mioRecordset, mioAltroRecordset As Recordset
equivale a dichiarare un recordset (il secondo) ed una variant (il primo).
Probabilmente per questo ricevi errore sul secondo recordset e non sul
primo. Usa una sintassi del tipo:
Dim mioRecordset As DAO.Recordset
Dim mioAltroRecordset As DAO.Recordset
oppure:
Dim mioRecordset As DAO.Recordset, mioAltroRecordset As DAO.Recordset
Ciao
Galliano.

 a parte questo, il codice che usi per dichiarare i recordset non è
corretto:
[cut]
Accidenti, non lo sapevo!!
Grazie davvero!!...scopro adesso che per anni non ho fatto altro che
dichiarare variant al posto di oggetti ! :-))))
Corro subito a cambiare il tutto....
Carlo

 Carlo
Galliano.

 Carlo
Ciao.
-- 
Sergio MAZZA