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

IHM Discussion :

[Débutant] Gestion des dates


Sujet :

IHM

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [Débutant] Gestion des dates
    Bonjour,

    Je suis débutant sur access et j'ai comme mission dans mon contrat d'alternance la refonte du système de gestion des appareils métrologiques.

    J'ai donc pensé à une base Acces bien que je n'y connaisse rien. Après avoir lu et appliquer quelques exemples je me suis lancé, mais la je suis vraiment bloqué et j'ai besoin de votre aide

    L'intutilé de ma discussion n'est peut être pas très claire mais je ne sais trop comment définir mon problème.

    Explications simplifiées :

    J'ai un Formulaire "A" lié à une table "A". Dans ce formulaire j'ai ceci :
    * 1 Zone de liste déroulante "Périodicité" format "Numérique" comprenant : "6", "12", "24" (mois).
    * 1 Zone de liste "Dernière vérif" format "Date abrégée".
    * 1 Zone de liste "Objectif" format "Date abrégée".
    * 1 Zone de liste déroulante "Difficulté de la vérif" format "Numérique" comprenant : "1", "3", "6" (mois).
    * 1 Zone de liste "Execution de la démarche de vérif" format "Date abrégée".

    Un sous Formulaire mode "Continu" "B" lié à une table "B". Dans ce formulaire j'ai ceci :
    * 1 Zone de liste "Date de la vérif".

    Problème 1 :
    Récupérer la dèrniere valeur du sous formulaire continue B "Date de la vérif" et l'injecter dans "Dernière vérif".

    Problème 2 :
    Différer la "Prochaine vérif" de la valeur de la "Périodicité" (en mois) dans "Objectif".

    Problème 3 :
    "Execution de la démarche de vérif" doit être égale à "Prochaine vérif" moins la valeur (en mois) de "Difficulté de la vérif".


    Bref, c'est devenu trop complexe pour moi.

    Si vous avez des questions n'hésitez pas

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Bonjour,

    D'une manière générale il n'est pas recommandé d'écrire la même information en plusieurs endroits. Je te conseille donc de ne pas écrire ces infos dans la table A mais plutot d'écrire les fonctions publiques qui permettent de les calculer à partir des autres infos des 2 tables.

    Ces fonctions seront disponibles pour alimenter les champs de tes formulaires ou pour faire des requêtes

    Exemple (n doit contenir le code outil que je suppose numérique) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function Get_dernier(n As Integer)
    Dim rst As Recordset
    Get_dernier = Null
    Set rst = CurrentDb.OpenRecordset("SELECT max(date_verif) as d FROM B WHERE code_outil = " & n & ";")
    If Not rst.EOF Then Get_dernier = rst!d
    rst.Close
    End Function

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    D'acccord Nico,

    donc la tu me proposes une réponse pour mon Prob 1 c'est bien ca ?

    Ensuite j'ai bien un code outil : "N° ID Usine" mais il est de forme "Texte" car les ID sont de type alphanumérique.

    Sinon les fonctions publiques, je les écrits où et je m'en sers de quelle facon ?

    Dsl mais j'ai besoin d'une démarche presque pas à pas car je galère un petit peu (bcp) xD

    Merci en tout cas pour ta réponse

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Il est déconseillé d'utiliser des espaces et des caractères spéciaux dans les noms de variables. En plus ça oblige à les mettre entre crochets

    Pour un ID string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function Get_dernier(s as string)
    Dim rst As Recordset
    Get_dernier = Null
    Set rst = CurrentDb.OpenRecordset("SELECT max(date_verif) as d FROM B WHERE id_outil = '" & s & "';")
    If Not rst.EOF Then Get_dernier = rst!d
    rst.Close
    End Function
    Cette fonction est à mettre dans un module et peut s'utiliser comme n'importe quelle fonction standard access. Seul inconvénient c'est un peu lent à l'exécution mais dans ton cas ça ne devrait pas poser de problème.

    Par exemple un champ d'un formulaire peut avoir la propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source controle = get_dernier([Monoutil])
    Autre exemple liste des outils controlés dans les 10 derniers jours :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select id_outil, get_dernier(id_outil) 
    from A 
    where get_dernier(id_outil)>date-10

    Peut aussi servir pour un update :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    update A set date_dernier=get_dernier(id_outil)

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci Nico pour le temps que tu m'accordes.

    Mais je n'y arrive toujours pas !
    Je suis vraiment une quiche !

    Pour que ce soit plus simple et peut être plus parlant pour toi j'ai joint ma bdd.

    Mon problème se situ au niveau du formulaire "Pied à Coulisse" il faut que le champ "Dernière vérification" soit égal au dernier champs "Dates des vérifications" du sous formulaire "Pied à Coulisse - Vérifications".

    Merci d'avance et n'hesites pas si tu as des conseils sur les tables/formulaires/etc... et leurs gestions car je n'ai vraiment aucune expérience.

    PW archive : stgob

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Bonjour

    je ne sais pas si le problème est résolu mais au cas ou, voici une solution qui n'est sans dout pas miraculeuse mais qui a le mérite d'être simple sans nécessiter de code VBA ou SQL



    Dans le sous-formulaire Pied à coulisse il faut ajouter le calcul suivant en pied de page : dernier([Dates des vérifications]). Pour ceci utiliser l'outil 'Zone de texte'
    Afin que cet objet ne soit pas visible dans le formulaire, lui appliquer la valeurnon à la propriété Visible
    Nommer ensuite cet objet à l'aide de la propriété Nom (l'appeler par exemple DerVerif)
    Enregistrer le sous-formulaire

    Revenir dans le formulaire principal
    Ajouter une zone de texte indépendante et la lier à l'objet nommé DerVerif du sous-formulaire. Pour ceci, taper la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     =[Pied à Coulisse - Vérifications sous-formulaire].Formulaire!DerVerif
    Enfin, donner un nom à ce nouvel objet afin de pouvoir l'utiliser pour les autres calculs.

    En revanche il faut préciser que la dernière vérif ne sera pas stockée dans la table. Ce sera un calcul qui sera visible uniquement dans le formulaire.
    En règle générale, ne jamais créer dans les tables des champs dont le contenu peut être obtenu par calcul. Si je ne me trompe pas les champs calculés interviendront à partir d'Access 2010.

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Okay ! Cela fonctionne.

    Merci beaucoup.

    Maintenant il me reste à effectuer un calcul sur cette date. Je n'arrive pas a ajouter à cette date un nombre de mois spécifié dans un autre champs. Aie Aie Aie.

    Edit : je viens d'y arriver par la fonction AjDate : AjDate("m";[Périodicité];[DateVerif]).

    Mais maintenant est ce qu'il est possible d'effectuer tout cela en VBA sans passer par des champs invisibles ? Histoire de faire plus "propre" ?

Discussions similaires

  1. [VB6]gestion des dates
    Par luckelm dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/04/2006, 20h25
  2. [WD9] [Débutante] Manipulation des dates
    Par Ando Nelly dans le forum WinDev
    Réponses: 2
    Dernier message: 19/04/2006, 08h24
  3. Application international (Gestion des dates)
    Par vsavoir dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/08/2005, 10h22
  4. Réponses: 3
    Dernier message: 13/08/2004, 18h52
  5. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 13h01

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