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 :

Aide pour Macro (Avec événements?)


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    technicien en logistique
    Inscrit en
    Janvier 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : technicien en logistique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Aide pour Macro (Avec événements?)
    Bonjour à tous,

    Dans le cadre de mon job je dois créer une base de donnée access pour des locations d'équipements et j'aurais besoin de votre aide pour créer une macro d'événements. Mes talents d'Access et de programmation étant assez limité, je vais essayer d'être le plus précis possible dans ce que je voudrais (idéalement).

    J'ai 2 tables (une table location équipement et l'autre équipement). Je souhaiterais que quand j'enregistre une location d'équipement (avec un de mes formulaires), qu'une macro active la coche (oui/non) de l'équipement en question. Par exemple :

    Jean loue l'équipement #24. Quand je rentre l'enregistrement dans location d'équipement, une macro se produit pour que, dans la base de donnée équipement, l'équipement #24 ait comme statut dans "Loué" le statut "OUI".

    Si je m'exprime mal ou si je ne suis pas assez précis faites le moi savoir, j'essaierai de mieux m'expliquer

    Merci beaucoup!

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Bonjour.

    C'est possible mais ce n'est pas une bonne idée.

    Il vaudrait mieux faire une requête qui pour chaque équipement indique si il est loué MAINTENANT.

    Si tu ne l'as pas fait je te suggère d'avoir les champs suivants dans la table location.
    • DateHeureDebutLocation
    • DateHeureFinLocation (valeur par défaut : 9999-12-31 23:59:59 ou alors Null, cela indique que l'équipement n'a pas été rendu.)


    après tu peux facilement faire quelque chose comme (je suppose que tu as choisi l'option 9999-12-31 23:59:59).

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select [tblEquipement].*,  DCount("ClefLocation", "tblLocation", "ClefEquipement=" & [tblEquipement].[ClefEquipement] & " and Now() between [DateHeureDebutLoctaion] and [DateHeuerFinLocaton]")<>0 as EstLoue
    from tblEquipement

    Cela va te donner la liste de tes équipements qui sont actuellement (Now()) loués et cela garanti que tes informations seront toujours vraies.
    Avec un macro, si la macro ne s'exécute pas correctement ou n'est simplement pas exécutée, tu risques des incohérences et d'avoir des équipements non loués qui sont indiqués loués et vice-versa.

    Pour répondre tout de même à ta question, tu peux faire dans l'événement après MAJ de ton enregistrement location un code du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    dim estLoue as booelan: estLoue=false
     
    '=== Determine si l'équipement est loué
    if not insull(me.DateHeureDebutLocation) and not isnull(me.DateHeureFinLocation) then
     
       if me.DateHeureFinLocation<>DateSerial(9999,12,31)+TimeSerial(23,59,59) then
           estLoue=false
         else
           estLoue=true
       end if
     
    end if
    '--- Determine si l'équipement est loué
     
    '=== Enregistre l'état
    dim db as dao.database:set db=currentdb
    dim r as dao.recordset:set r=db.openrecordset("tblEquipement", dbOpenDynaset)
    dim critere as string: critere="[ClefQuipement=" & me.ClefEquipement
     
    call r.findfirst(critere)
     
    if not r.nomatch then
          r.edit
          r![EstLoue]=estLoue
          r.update
       else
          call err.raise(5, ,error$(5) & " - Clef equipement invalide.")' Cas impossible normalement
    end if
     
    r.close:set r=nothing
    db.close:set db=nothing
    '--- Enregistre l'état
    A+

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    technicien en logistique
    Inscrit en
    Janvier 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : technicien en logistique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse rapide! Je vais essayer cela

Discussions similaires

  1. [VBA-E] aide pour macro sur excel
    Par letoulouzin31 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 24/05/2006, 11h29
  2. [3D] Aide pour développer avec delta3D
    Par astragoth dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 06/02/2006, 13h56
  3. [Dev-C++] Aide pour programmer avec Qt 4
    Par stone dans le forum EDI
    Réponses: 3
    Dernier message: 02/02/2006, 08h58
  4. Aide pour projet avec carte asi candibus
    Par sinicha dans le forum C
    Réponses: 13
    Dernier message: 16/01/2006, 15h32
  5. [W3C] aide pour html avec mozilla et netscape
    Par teambeyou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 06/09/2005, 20h30

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