Mettre à jour la base ACCESS

cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 2 juin 2010 à 13:13
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 4 juin 2010 à 12:55
bonjour
j'ai créer il y a 2 ans un programme pour la gestion d'un centre aéré,et j'enregistre mes données dans une base access.
dans ma table j'ai plusieurs champ ,donc 1 avec l'age et un autre avec la date de naissance.
quand j'ouvre mon programme les ages ne sont pas à jour;
dans ma base:
01/11/2002 --> 5 ans
normalement je devrais avoir ça:
01/11/2002 --> 7 ans
Y à t'il un moyen de mettre à jour la base au lancement du programme.
merci
petchy

6 réponses

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
2 juin 2010 à 13:54
Bonjour,

Dans ta base Access, ajoutes une Macro (que dois impérativement nommé Autoexec) et comme action tu lui metts ExécuterCode/ExecuterCommande (fais F1 sur ces mots pour voir leur différence).

Puis dans un module que tu auras rajouté, créé une Sub/Function dans laquelle tu vas passer en revue toute ta table pour mettre à jour l'âge.

Attention, cela peut-être assez lourd si le nombre d'enregistrements est important et que tu le fais systématiquement à chaque ouverture de ta base.

Perso', je verrais plutôt une mise à jour de l'âge quand tu en as besoin, ce sera beaucoup moins lourd.


Calade
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
2 juin 2010 à 15:00
Problématique très simple, pour la résoudre tu crée une requête de sélection avec un champ calculé exemple Calcul age ma table d'origine contenant le champs "date de naissance" s'appelle "age" et un deuxième champ avec la date de naissance récupéré de la table age,voici le sql du champ calculé:
SELECT Year(Date())-Year([age]![date de naissance]) AS [Calcul age], age.[date de naissance]
FROM age;
on extrait donc l'année de la date système et celle de la date de naissance et on calcule la différence
donc à présent on dispose de l'age avec une formule calculé.
Etape 2 tu crée une requête de mise à jour, cette requête va utiliser le champ date de naissance comme jointure entre la table "age" et notre requete "testage" qui contient le champ calculé, elle va mettre a jour le champ de la table age avec les données du champ calculé
voici le SQL
UPDATE testage INNER JOIN age ON testage.[date de naissance] = age.[date de naissance] SET age.[calcul age] = [testage]![Calcul age];
il suffira de lancer cette dernière requête au 1er janvier de chaque année pour mettre à jour notre champ age.
Dernière étape une fois que tu aura mis en place cette solution n'oublie pas d'accepter la réponse
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
2 juin 2010 à 15:07
en fait pour le champ calculé la première formule calcule le différentiel des années ce qui n'est pas très clean utilise plutot cette formule
Calcul age: Round((Date()-[age]![date de naissance])/365)
bon cette fois c'est un peu plus propre mais pas de prise en compte des années bissextiles, tu peux faire une fonction pour l'améliorer
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
2 juin 2010 à 16:14
Re
en fait,mon programme est en VB6,j'utilise ACCESS comme base pour mes enregistrement de données,donc je ne sait pas si en faisant une macro ou une formule dans la requete.et lorsque je vais ouvrir mon programme les ages vont se mettre à jour,il faudrait un code pour mettre dans le load de ma form pour actualiser les ages.
petchy
0

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

Posez votre question
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
2 juin 2010 à 16:59
lance la mise a jour a l'ouverture de la base, pour cela utilise le Autoexec comme t'a dit calade dans le autoexec tu appelle une procédure dans cette procédure tu met un docmd.runSQL pour la mise à jour, du coup en vb6 t'ouvre access qui met a jour cette colonne a l'ouverture de la base
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
4 juin 2010 à 12:55
bonjour
en fait je stocke mes données dans une base,car l'utilisateur peut récupérer les infos,cette année ou l'année prochaine.
mais bon,j'ai modifier mon raisonnement.
premierement:
j'ai fait un copier/coller des 2 champs "date de naissance et l'age" dans Excel
avec une formule j'ai mis à jour la colonne age.Une fois la mise à jour faite j'ai fait un copier des 2 colonnes Excel et j'ai coller dans les champs de ma base.
la base est ok
deuxiemement :
j'ai modifier dans mon prog,pas à l'ouverture du prog, mais en ouvrant une form pour aller voir la fiche de la personne l'age se met à jour et à la fermeture de cette form,j'enregistre dans la base.
je n'ait trover que cette solution pour mettre à jour les ages
merci à vous :ccool:
petchy
0
Rejoignez-nous