Incompatibilite de type [Résolu]

Signaler
Messages postés
5
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
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)
Messages postés
5
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
11 mars 2010

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.
Messages postés
5
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
11 mars 2010

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.