IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Access Discussion :

Retourner une date réelle, calculée 10 ans après une date d'un autre champ de la même table. -Possible ?


Sujet :

Access

  1. #1
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut Retourner une date réelle, calculée 10 ans après une date d'un autre champ de la même table. -Possible ?
    Bonjour,

    Je suis apprenant (pas encore apprenti, enfin bref) en informatique en 2ème année.

    Je souhaite récupérer un champs date [Delivre_le] de ma table T_Personne, et y ajouter 10 ans afin que cela me retourne une date réelle [Expire_le].

    Exemple pratique:
    Une carte d'identité nous est délivrée à Date1, et donc elle expirerait 10 ans plus tard, à une date réelle Date2.

    -Mes excuses pour les fans de Microsoft, mais...
    truc tellement élémentaire: Est-ce possible dans Access 2010, ou 2007 ?


    Je recherche depuis ce matin sur Google.

    Par ailleurs, il m'est arrivé de faire des requêtes de tri en SQL. En ce moment, j'en suis à l'introduction au VBA.

    En remerciant d'avance mon (mes) prochain(s) pour sa(ses)/leur(s) réponse(s), j'adresse aux membres du forum mes meilleurs messages.

    Oppenheimer

  2. #2
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut Il s'agit bien de l'ajout d'un intervalle donné, à une date.
    N.B.:
    Il s'agit bien de l'ajout d'un intervalle donné, à une date
    (et non pas du calcul de l'intervalle à partir de deux dates).

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 347
    Points
    34 347
    Par défaut
    salut,

    la fonction DateAdd() devrait répondre à ta question.

    Tu peux trouver la syntaxe ainsi que des exemples avec l'aide en ligne

  4. #4
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut Sans oublier les fait qu'il s'agit de 2 champs distincts.
    Bonjour Jpcheck, et merci pour la réponse !

    Cependant, j'ai déjà exploré cette voie ce matin. Je vous rappelle que le problème qui se pose à moi, est:

    récupérer la date du champ1, pour l'entrer dans ce second champs.


    Après, je ne sais pas s'il faut impérativement entrer les dates dans une nouvelle table y liée, afin de paradoxalement simplifier le code (que je ne connais pas).

    En fait, j'ai essayé ce matin déjà (chose que je n'ai pas précisée avant):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AjDate("aaaa"; 10; [Delivre_le])
    mais Access me réponds:
    "Syntaxe SQL non valide - impossible d'utiliser plusieurs colonnes dans une contrainte de "niveau colonne CHECK" ."

    Peut-être que c'est parce que [Delivre_le] n'est pas encore déclaré (vu que l'enregistrement n'a pas encore eu lieu) ?

    Mais même si j'essaie de créer un enregistrement complété jusqu'à [Delivre_le], cela ne fonctionne pas.

    Y aurait-il un moyen de contourner ce message d'erreur ?

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,
    1 champ Date_1 et un champ Date_2 dans un formulaire
    Dans Date_1 je met une date et je veux dans Date_2 la Date_1+10 ans.
    Sur l'évènement Réception du focus de Date_2 j'écris le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Date_2 = Me.Date_1 + 3652.5
    et cela à l'air de fonctionner.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Avec Access 2010 tu peux utiliser les champs calculés dans une table.

    Tu as juste à créer le champ [Expire_Le] et dire qu'il est égale à AjDate("aaaa"; 10; [Delivre_le]).

    A+

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    Avec codification en Anglais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AjDate("yyyy";10;[Delivre_le])

    Cordialement.

  8. #8
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut
    Bonjour à tous,


    Cela fait quelques heures que je ne suis pas revenu, je voulais juste vous remericer pour ces réponses. Mes excuses aussi d'avoir oublié de mettre en évidence le code, plus haut.


    Je précise par la même que je suis quand-même allé dans l'aide auparavant, et j'ai remarqué que si ma version avait des fonctions francisées, les arguments en revanche restaient anglophones (hé-hé :sueur froide: ).


    -Seulement, le résultat renvoyé reste le même (message d'erreur).


    Mais je remarque plus haut le message de Rjamin que je remercie. Imposer l'intervalle en brut, bien qu'il s'agisse d'une année de 365,25 jours, risquerait d'avoir encore une imprécision ..pour les très grandes valeurs. Le cas de 10 ans n'est alors pas une très grande valeur, et donc cela doit marcher, je vais essayer;
    mais sur le principe, si je peux utiliser une fonction intégrée, cela m'arrangerait mieux.


    Citation Envoyé par marot_r Voir le message
    Avec Access 2010 tu peux utiliser les champs calculés dans une table.

    Tu as juste à créer le champ [Expire_Le] et dire qu'il est égale à AjDate("aaaa"; 10; [Delivre_le]).

    A+
    Merci Marot_r, cela ressemble pas mal à ce qui me posait problème.

    Cela veut dire qu'au lieu de le mettre comme contrôle sous "Valide si", il faut le mettre en brut dans le champ ? Il me semble que j'ai essayé, sans succès.
    Ai-je oublié le signe égal ? -Je vais ré-essayer.

    Si en désespoir de cause, la méthode avec fonction ne marche pas, j'utiliserai la méthode de Rjamin.

    Je vais vous redire sous peu; encore merci. Mais je pense que ce serait chouette, pour ceux qui utilisent de très grandes valeurs, d'avoir une méthode avec fonction, si existante.

  9. #9
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut Oui, mais le code VBA est-il applicable à une pure table ?
    Bon..

    Je viens d'essayer, mais ne suis pas allé loin.

    Avec la méthode de Marot_r, Access m'informe que la champs calculé (bien qu'avec AjDate() ) ne correspond pas au champ date (que j'avais défini) ! (Vais essayer un format numérique.)

    Quant au VBA, le seul cas où je l'ai utilisé, c'est avec un formulaire basé sur une table. Mon collègue, qui n'a pas de réponse pour mon cas de figure, dit qu'on peut aussi faire du VBA sur les requêtes.

    Donc si je comprends bien, il existe au moins un cas de figure, où Access permet moins de choses qu'Excel, et on ne peut pas faire dépendre un champs d'un autre ?

    À moins qu'on puisse réellement utiliser le VBA sur les tables directement ?

    (J'ai commandé un livre VBA Access, dont j'ai une version en ligne; je vais voir si quelque chose est possible.)

  10. #10
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut AjDate ne peut pas être mis dans un champs calculé.
    Voilà voilà..

    J'ai crû qu'il suffisait de mettre la fonction dans un champs calculé.

    Maintenant, Access me dit que c'est impossible.

    C'est la première fois de ma vie que je vois qu'une fonction est inutilisable pour un calcul; alors qu'à l'origine, c'est même son but.


    Pour le VBA, je continue de chercher.

  11. #11
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,
    Je viens d'essayé avec un champ calculé que j'ai appelé Date_3
    Avec la fonction AjDate telle que ci dessous j'ajoute 10 ans à Date_1 et tout fonctionne normalement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date_3: AjDate("aaaa";10;[Date_1])

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    Afin d'essayer de trouver l'erreur, dans ta requête insère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateAdd("yyyy";10;Date())
    Si ça fonctionne, il faut chercher du côté ►[Delivre_le]

    Cordialement

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Si tu travailles au niveau de la table, il faudrait peut-être aussi enlever le "valide si". Tu veux calculer une valeur pas vérifier si elle est correcte.

    A+

Discussions similaires

  1. [XL-2003] Recherche d'une formule de calcul d'heure entre 2 dates
    Par Micky58 dans le forum Excel
    Réponses: 6
    Dernier message: 13/01/2014, 09h30
  2. Réponses: 4
    Dernier message: 16/09/2009, 04h23
  3. Réponses: 4
    Dernier message: 03/07/2008, 15h53
  4. Réponses: 2
    Dernier message: 07/08/2006, 11h48
  5. Mauvais résultat aprés une formule de calcul complexe
    Par poufouille dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/12/2004, 00h12

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