Incompatibilite de type

Résolu
JNTGGL Messages postés 5 Date d'inscription lundi 14 décembre 2009 Statut Membre Dernière intervention 11 mars 2010 - 10 mars 2010 à 19:01
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 11 mars 2010 à 09:39
Bonsoir,

lors de la conversion d'une base access 2007 en access 2003, ce bout de code ne fonctione plus ?!
Set rstan = db.OpenRecordset("RS_ID_ANA_CRE2")

Le message qui apparait est : "incompatibilite de type".
je precise que la requete RS_ID_ANA_CRE2 fonctionne en manuel dans access 2003.

Quelqu un aurait il une idee ?
Merci.

4 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 77
10 mars 2010 à 20:06
Salut
De quel type est ton RS_ID_ANA_CRE2 ? Est-ce une table ou bien une requète stockée ?
Si c'est une requète stockée, regarde du côté du mot clé "QueryDef", mais peut-être que DAO (absolète) ne le supporte pas : mieux vaudrait passer à ADO : Les méthodes changent légèrement.
Comment as-tu dimensionné ton object "db" ? DAO ou ADO ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 77
11 mars 2010 à 09:39
Comme je te l'ai dit, DAO est obsolète (abandonné depuis de longues zannées) et, par exemple, les méthodes Find dans les RecordSet fonctionnent mal.
Mieux vaudrait passer à ADO (version 2.8 il me semble).
Les objets sont à peu près les mêmes que sous DAO, seules certaines syntaxes diffèrent, mais rien de bien méchant.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
JNTGGL Messages postés 5 Date d'inscription lundi 14 décembre 2009 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 08:44
Bonjour Jack et merci pour ta reponse !
RS_ID_ANA_CRE2 est une requete selection, et si par 'stockée' tu veux dire qu elle existe dans le groupe requete, c est bien le cas.
Mon code est le suivant:
Private Sub Commande33_Click()

On Error GoTo Maj_Err

Dim db As Database
Dim rstan As Recordset

DoCmd.SetWarnings False
DoCmd.Echo False, ""

Anc_Valeur = 0 'Mise a zero valeur de la fct utilisée par RC_ECRITGENE_HONMTP
Cpteur = 0 'Mise a zero du cptr dans fct utilisée par RC_ECRITGENE_HONMTP

DoCmd.OpenQuery "RC_ECRITGENE_HONMTP"
MsgBox "Identification des Ecritures comptables terminée !"

Set db = CurrentDb()
MsgBox "base ouverte !"
Set rstan = db.OpenRecordset("RS_ID_ANA_CRE2")
MsgBox "ID SECTIO MQT : OK !"
Do Until rstan.EOF
'vbCrLf = retour chariot dans MsgBox
MsgBox "Section Analytique Manquantes : " & rstan!C_NUM & vbCrLf & "Libellé à saisir, niveau d'analyse et infos libres à vérifier"
rstan.MoveNext
Loop
DoCmd.OpenQuery "RA_COMPTEA2"
MsgBox "sections créées"
etc etc...

Les MsgBox en rouge sont des test que j ai positionnés pour identifier l'origine du problème.
Pour répondre a ta deuxième question, DAO ou ADO, il me semble que c est n'y l'un ni l'autre, en tout cas de manière explicite (je précise ici que je suis totalement autodidacte, et que donc certaine nuances m échappent forcement)
Cela dit, je n arrive pas a comprendre pourquoi ce code fonctionne parfaitement sous Access 2007, et pas 2003 ?

Jean-Nico.
0
JNTGGL Messages postés 5 Date d'inscription lundi 14 décembre 2009 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 09:03
Grace a ta question, je viens juste de rajouter DAO. devant le Database et Recordset:
Dim db As DAO.Database
Dim rstan As DAO.Recordset
et ca marche.

Encore merci Jack, pour cette piste !!

Ca n explique pas pourquoi Access 2007 se fie de DAO. dans les Dimensions, si jamais tu as l explication ?

Cordialement,
Jean-Nico.
0
Rejoignez-nous