PORTABILITE ACCESS 2003 VERS ACCESS 2000

damedom41 Messages postés 79 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 2 août 2014 - 25 mai 2012 à 18:57
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 - 27 mai 2012 à 23:50
Bonjour,
J'ai développé pour une association caritative une 'gestion commerciale' sous ACCESS 2003, avec beaucoup de programmation VBA en mode DAO.
Il se trouve qu'une structure similaire souhaite utiliser ce programme, mais ne dispose que d'Access 2000. Quelques modules de mon programme 'plantent', alors qu'ils tournent parfaitement avec la version 2003.
Existe-t-il un moyen de passer de 2003 à 2000 (genre downgrade) ?
J'ai essayé de me connecter chez eux et de créer une base vierge en version 2000, puis d'importer tous les éléments de ma base en 2003.
A la compilation, il semble que ce VBA ne comprenne pas l'instruction recordset.edit
Voilà comment je déclare mes fichiers :
'déclaration
Public DB As Database
Public rscli As Recordset
'initialisation
Set DB = CurrentDb
Set rscli = DB.OpenRecordset("select * from CLIENT", dbOpenDynaset)
'dans les procédures
rscli.addnew 'pour créer un nouveu record
rscli.edit   'pour modifier un record
rscli.update 'pour mettre à jour


Est-ce que vba sous 2000 est censé connaître ces instructions ? Si oui quelle référence faudrait-il que j'ajoute ?
nb : j'ai déjà vba for applications, microsoft accss objetct library, ole automation, microsoft dao 3.6 object library, microsoft activex data object 2.1 library et microsoft office xp web components.

Comme il s'agit d'une assoc sans le sou, j'aimerais pouvoir leur éviter l'achat d'un access 2003 ou postérieur (mon appli tourne sous 2003, 2007 et 2010).

Merci d'avance,

Damedom Sologne

11 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
25 mai 2012 à 19:13
Bonjour,

Comment as-tu importé les modules ?
'plantent', tu peux détailler ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
damedom41 Messages postés 79 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 2 août 2014
25 mai 2012 à 19:44
Premier cas :
Après avoir créé une base vierge en Access 2000 (via Teamviewer) j'ai importé via données externes, importer.
Après essai de compilation de la base ainsi générée, Access 2000 semble ne pas connaître la méthode edit des recordsets.
Or je m'en sers tout le temps.

Deuxième cas :
Lorsque j'ouvre la version faite avec 2003 depuis leur poste et leur version 2000, la plupart des formulaires semblent fonctionner :(création, modification, suppression, édition de tables via un formulaire complètement basé sur des recordsets et du vba, et non directement via les formualaires 'access'.
En revanche dans certains formulaires plus complexes, la routine de lecture d'un fichier via une clé multiple me retourne soit :
- il existe des doublons ... et crée une erreur qui renvoie au vba
- ce code n'existe pas alors qu'il existe
Il semble donc y avoir un problème d'accès aux fichiers, mais qui intervient de façon qui paraît aléatoire(ce qui me trouble beaucoup).
Le même test (exactement) fonctionne TOUJOURS lorsque je suis dans l'environnement 2003, c'est à dire lorsque je l'ouvre avec Access 2003.
Je précise qu'ils sont sous Windows XP, comme moi. Mais peut-être existe-t-il plusieurs versions ?

Je suis perdue !

Damedom Sologne
0
Utilisateur anonyme
25 mai 2012 à 21:26
Bonjour,

Va voir cette page. Tu vas peut-être y trouver ton bonheur.
0
damedom41 Messages postés 79 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 2 août 2014
25 mai 2012 à 22:37
Merci, c'est gentil, mais un peu "pro" pour moi. Je vais tenter d'apprivoiser la bête, mais il me faudra sans doute quelques jours.

Connais-tu par hasard les méthodes à utiliser en vba access 2000 pour :
- créer une nouvelle entrée => équivalent rs.addnew
- modifiér une entrée => équivalent rs.edit
- valider cette modification => équivalent rs.update
- supprimer une entrée => équivalent rs.delete

Par ailleurs, la définition du recordset à la partir de la base (current db) et le choix dbopendynaset était-il déjà reconnu dans 2000, ou est-il postérieur ?

En gros, que faudrait-il que je change dans mon code qui ne reconnait pas la méthode edit afin de pouvoir l'utiliser quand même ?
Ou est-ce l'arbre qui cache la forêt et y a-t-il d'autres méthodes qui n'existaient pas avant 2003 ?

Je suis un peu dans l'urgence, et ne peux réapprendre totalement access 2000, surtout sans le logiciel à la maison. Sais-tu si on peut le trouver en version 'demo', ou si il y a un bon bouquin pour programmer en vba sous access 2000 ? Ils ont dû être transformés en pâte à papier, non ?

Merci de tes réponses,

Dominique

Damedom Sologne
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
26 mai 2012 à 00:03
Bonsoir,

Ajoutes,si c' est possible, les deux références à ton projet.

Microsoft DAO 3.6 Objet Library
ActiveX Data Objects 2.8 Library

Quand tu declares les recordsets, tu auras alors le chois entre:

Dim rs As DAO.Recordset
ou
Dim rs As ADODB.Recordset

Noter que pour ce dernier type de recordset,
la methode Edit n' est plus nécessaire.Le Update suffit.
Pour le reste tout est pareil.






[] Ce qui va sans dire. va mieux en le disant.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
26 mai 2012 à 00:20
Juste une chose avant toute autre chose :
Quand tu tapes Public rscli As R , n' as-tu pas,
dans la liste de choix,deux lignes avec Recordset ?
Si c' est oui, choisis le deuxième item.


[] Ce qui va sans dire. va mieux en le disant.
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
26 mai 2012 à 01:32
Bonjour
Au lieu d'importer essaye la conversion

Ouvre la base 2003 sans l'executer
puis :
outils
utilitaires de base de données
convertir une base
vers format 2000

Il y aura surement des ajustements à faire

Bonne journée
0
damedom41 Messages postés 79 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 2 août 2014
26 mai 2012 à 09:14
Merci à vous tous, je m'y mets ce week-end.

Damedom Sologne
0
damedom41 Messages postés 79 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 2 août 2014
27 mai 2012 à 14:22
D'abord merci à vous.

Passer de DAO à ADO m'obligerait à revoir complètement ma programmation, alors que je le projet fonctionne parfaitement sous 2003, 2007, 2010. Pensez-vous que je pourrais leur proposer un runtime, et, si oui, est-ce "légal" ?

J'ai tenté la solution convertir une base, mais la conversion 'vers 2000' est grisée, et donc non proposée. Si j'essaie une conversion vers 97 (qui elle m'est proposée) l'appli me signale que comme 97 n'est pas installé, ça ne va pas être possible. Pourquoi mon 2003 (et mon 2007) ne me proposent pas la conversion vers 2000 ? Faut-il que je change un paramètre ?

Effectivement, lorsque je crée une occurence de recordset, il y a deux lignes "recordset".
A quoi cela correspond il ? Je ne sais même pas avec laquelle de ces lignes je fonctionne habituellement, d'autant que je tape avec mes dix doigts, et que je tape souvent directement le code au lieu de choisir dans la liste. Mais ça m'intéresserait vraiment d'avoir des infos là-dessus, ne serait-ce que pour satisfaire ma curiosité.

Votre communauté est super. Je peux continuer grâce à vous à évoluer alors que je n'ai aucun collègue à qui demander de l'aide.
Merci encore.



Damedom Sologne
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
27 mai 2012 à 18:32
Bonjour,

il y a deux lignes "recordset".
A quoi cela correspond il ?



A vrai dire je n' en ai qu' une vague idée.
C' est juste un constat que j' ai relevé tout à mes débuts.
Il parait que selon les versions des bibliotheques, certains membres
de la classe Recordset sont plus ou moins cachés.
Mais j' ai peur de dire des conneries.C' est pourquoi je te propose de
faire une recherche dans l' explorateur d' objets.
(sélectionner le mot Recordset dans ton éditeur, puis clic droit puis,
dans le menu contextuel, clic sur Explorateur d' Objets.)

Sinon, pour la conversion, ais un tour de ce côté:

http://office.microsoft.com/fr-fr/access-help/migration-vers-access-2003-HA001091658.aspx

http://office.microsoft.com/fr-fr/access-help/resolution-des-problemes-lies-a-la-conversion-d-un-fichier-access-HP005186403.aspx?CTT=5&origin=HA001091658

Voir auss du côté du Correctif pour Access 2000.


PS:
Comment tester, et comment faire un package, si toi tu ne disposes pas d' access 2000 ?
(Access 2000 uniquement)

Il se peut même que tu sois amener à créer ta base directement dans Access 2000.
De toute façon, tu devrais faire une copie de ton projet, si tu devais modifier quelque chose au niveau du code.




[] Ce qui va sans dire. va mieux en le disant.
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
27 mai 2012 à 23:50
Bonjour
L'installation des runtime est légale et gratuite
Mais attention certaines fonctions ne sont pas implantées dans les runtimes.
Notamment les "createobject"
deux recordset présents : celà est possible si tu utilisa ado ET dao
Dans ce cas il faut qualifier le recordset an le faisant précéder de ado. ou dao.
De même il exite recordset daans ador ET adodb. D'où le nécessité, encore, de qualifier
Sans voir la base je ne peut t'aider davantege
Bonne journée
0
Rejoignez-nous