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

VBA Access Discussion :

Calcul de date dans une table [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Calcul de date dans une table
    Bonjour à tous !

    Me voici à nouveau bloqué sur access !! Mon problème en une ligne puis mon exemple pour expliquer :

    Je voudrais calculer une date dans un champs de ma table en fonction d'une autre date et d'un autre critère se trouvant tous les deux dans des champs de la même table T_Anomalie

    Plus précisément :

    Un utilisateur saisi par un formulaire une anomalie avec la [Date de constatation] puis une [Priorité] de 0 à 4. La priorité conditionne le délai dans le quel l'anomalie doit être corrigée.

    0 --> pas de délai : ça peut trainer !
    1 --> dans le trimestre donc [Dead line] = [Date de constation] + 3 mois
    2 --> dans le mois [Dead line] = [Date de constation] + 1 mois
    3 --> dans les 15 jours donc [Dead line] = [Date de constation] + 15 jours
    4 --> immédiatelment donc [Dead line] = [Date de constation]

    Je veux que la date apparaisse dans un champs car la priorité ne peut etre modifié par la suite (pas besoins de la recalculer) et je voudrais la faire apparaitre dans un état à imprimer ...

    J'ai essayé de mettre le chamsp "Dead line" en calculé puis en expression une compile de IIF et AjDate, cepandant la formule AjDate n'est ici pas reconnue

    Alors je ne sais pas comment procéder ... par une requête mise à jour ? Par une macro ? enfin j'ai bidouillé plein de trucs mais rien ne focntionne

    Merci d'avance de vos conseils en tout cas !

  2. #2
    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,
    Si on fait le calcul dans le formulaire d'encodage on mettra la procédure suivante dans la propriété réception Focus du champ Dead_Line

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Dead_Line_GotFocus()
    Select Case Priorité
    Case 0
    Me.Dead_Line = DateAdd("m", 12, Me.Date_Constat)
    Case 1
    Me.Dead_Line = DateAdd("m", 3, Me.Date_Constat)
    Case 2
    Me.Dead_Line = DateAdd("m", 1, Me.Date_Constat)
    Case 3
    Me.Dead_Line = DateAdd("d", 15, Me.Date_Constat)
    Case 4
    Me.Dead_Line = Me.Date_Constat
    End Select
    End Sub
    J'ai fait l'essai et cela fonctionne très bien.

  3. #3
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour à tous,
    ...comment procéder ... par une requête mise à jour ?
    A mon (humble) avis, tu n'as pas besoin de stocker le résultat dans ta table . . . seuls les champs Date de constatation et Priorite sont nécessaires...

    Dans une requête tu as la possibilité d'imbriquer plusieurs conditions (iif)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT Id_Constatation, Date_de_constatation, Priorite, 
    IIf([Priorite]=1,DateAdd('m',3,[Date_de_constatation]),
    IIf([Priorite]=2,DateAdd('m',1,[Date_de_constatation]),
    IIf([Priorite]=3,DateAdd("d",15,[Date_de_constatation]),
    IIf([Priorite]=4,[Date_de_constatation])))) AS dead_Line
    FROM T_Anomalie;

    ...tu adaptes à ton application

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci rjamin ! C'est exactement ceque je voulais et ça fonctionne à merveille ! Je l'ai juste adapter pour que cela se calcule quand on quitte le champs précédent ...

    Merci aussi pour ton aide FreeAccess mais je préfère l'avoir dans ma base de donné car ça me permet de contrôler en regardant d'un simple coup d'oeil ma table

    Encore merci à vous deux en tout cas !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Access 2007.. beurk ^^
    Bojour à tous,

    FreeAccess, il me semble que je vais avoir besoin d'une solution se rapprochant de ton idée pour un nouveau problème :

    J'ai fait une bdd sur Access2010 et certains de mes collègue utilise Access2007 ... certaines fonctionnalités ne marchent pas comme par exemple les champs de type caculé dans une table !

    Or j'utilisais ce type de champs pour afficher dans [T_Anomalie]![Délai] le résultat de [Date1]-[Date2]... Il faut trouver une nouvelle solution et je galère !

    J'ai bien trouvé sur les forums qu'il faut que je relie le champs à une requete mais je ne comprends pas ni comment la faire afficher, ni comment l'appeler, etc. etc. Pouvez vous m'aider ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul de date dans une table
    Par GDS_38300 dans le forum Modélisation
    Réponses: 2
    Dernier message: 12/07/2011, 12h35
  2. insertion d'une date dans une table
    Par yousfi.z dans le forum JDBC
    Réponses: 3
    Dernier message: 07/08/2006, 15h32
  3. Insertion d'une date dans une table avec vba
    Par skeut dans le forum Access
    Réponses: 2
    Dernier message: 21/02/2006, 08h54
  4. insertion d'un type date dans une table access
    Par monstour dans le forum ASP
    Réponses: 7
    Dernier message: 18/06/2004, 16h57
  5. insérer une date dans une table mssql
    Par ericmart dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/01/2004, 10h37

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