Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Futur Membre du Club
    Inscrit en
    août 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 13
    Points : 8
    Points
    8

    Par défaut Champ calculé sur une date dans une table

    Bonjour,

    j'ai une table qui dispose d'un champ DatedeFormationInitiale qui est alimenté.

    Dans cette même table je souhaiterai pouvoir calculer automatiquement la Date de Recyclage de la formation qui doit être égale à DatedeFormationInitiale + 2 ans
    Je suis parvenu à obtenir ce que je souhaitais faire via une requête, en utilisant la fonction AjDate de cette façon : AjDate("aaaa";2;[DatedeFormationInitiale]), mais je préfèrerai stocker cette information dans la table d'origine.

    Quelqu'un pourrait-il m'aider ?

    Merci d'avance

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Auditeur
    Inscrit en
    juillet 2012
    Messages
    7 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Auditeur
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2012
    Messages : 7 342
    Points : 73 680
    Points
    73 680
    Billets dans le blog
    15

    Par défaut

    Salut,

    Il n'est pas recommandé de conserver des données calculées dans une table ; les requêtes sont faites pour cela et ainsi vous allègerez votre base (performance, etc.).

    Cordialement
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 456
    Points : 20 441
    Points
    20 441

    Par défaut

    Bonjour.

    As-tu essayer simplement AjDate("aaaa";2;[DatedeFormationInitiale]) dans l'expression du champs calculé ?

    Il faudra peut-être ajouter un test de nullité. Un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(not isnull([DatedeFormationInitiale]);AjDate("aaaa";2;[DatedeFormationInitiale]) ;Null)
    Et comme le dit milkoseck , on recommande plutôt de faire cela dans une requête mais si tu t'en sert intensément le mettre dans une table est pratique.
    Personnellement, je fait cela pour mes champs [Nom] et [Prenom]. J'ai un champ [NomPrenom]qui me donne l'information concaténée car je m'en sert dans plein d'écrans.

    Le gros point négatif des champs calculés dans une table c'est quand on fait un insert avec *. Si un des champs de la table de destination est calculé, ça génère une erreur.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Futur Membre du Club
    Inscrit en
    août 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 13
    Points : 8
    Points
    8

    Par défaut

    Merci (avec beaucoup de retard) milkoseck et marot_r.

    Je comprends bien la problématique de performances engendrées par ce champ calculé dans une table mais j'aimerai tout de même essayer.

    Par contre j'ai essayé la proposition de marot_r en renseignant :

    Cependant j'obtiens un message d'erreur :
    L'expression IIf(not isnull([DatedeFormationInitiale]);DateAdd("yyyy";2;[DatedeFormationInitiale]) ;Null) ne peut pas être utilisée dans une colonne calculée

    Message d'erreur identique lorsque j'ajoute uniquement : AjDate("aaaa";2;[DatedeFormationInitiale])

    Je vais essayer de m'en passer mais j'avoue que cela m'aurait été pratique

  5. #5
    Futur Membre du Club
    Inscrit en
    août 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 13
    Points : 8
    Points
    8

    Par défaut

    J'aurai peut-être du exposer ma problématique dès le départ.

    Je dispose :
    - d'une table de sociétés qui comporte comme son nom l'indique des sociétés, avec des adresses, un numéro unique de société ...
    - d'une table stagiaires (les employés des sociétés) comportant le nom des stagiaires et une date de formation Initiale et un numéro de société permettant par une relation de les rattacher à leurs sociétés respectives

    Ce que je souhaite faire, c'est de créer un formulaire permettant :
    - d'afficher 1 enregistrement pour chaque société
    - d'afficher en dessous la liste des stagiaires (respectifs à la société affichée) avec les champs Date de Formation Initiale (donnée présente dans la table) et afficher à côté de cette Date une date de recyclage = Date De Formation Initiale + 2 ans (fonction AjDate("aaaa";2;[DatedeFormationInitiale]))

    Pas de soucis en utilisant un formulaire se basant sur l'affichage des données des 2 tables disposant de la relation, le problème apparait par contre avec ce champ calculé que je souhaite afficher en complément


    Si quelqu'un a une idée ??
    Merci d'avance

  6. #6
    Membre éprouvé Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    novembre 2013
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2013
    Messages : 824
    Points : 1 272
    Points
    1 272

    Par défaut

    Voici ma contribution sans pour autant ignorer les commentaires des intervenants qui m'ont précédé:

    Le formulaire principal doit montrer les sociétés; tu mets ensuite un sous-formulaire pour les stagiaires dans celui des sociétés (Access utilisera automatiquement ta clef 1aire pour créer les liens, mais tu dois vérifier);

    Dans le sous-formulaire: tu ajoutes un champs (indépendant) calculé avec ta formule AjDate("aaaa";2;[DatedeFormationInitiale]) dans ControlSource. Si ça ne fonctionne pas, il faudra vérifier les liens champs-père vs champs-fils, et surtout vérifier que [DatedeFormationInitiale] est bien renseigné pour tous.

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Syntaxe
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo