none
[ACCESS] Champ calculé par rapport à un regroupement d'enregistrement RRS feed

  • Question

  • Bonjour,

    je butte sur une question.

    J'ai une base de données ACCESS dans laquelle j'entre le nom de mes clients, le tarif de leur contrat de maintenance, les dates d'interventions + le temps passé en intervention.

    J'ai donc:

    - une table "Clients" avec comme champs "IDClient", "Nom" et "TarifContrat"

    - une table "Inter" avec comme champs "IDInter", "IDClient", "DteInter" et "TpsPasse"

    Ce qui fonctionne:

    - Formulaire pour saisir des nouveaux clients + tarif du contrat de maintenance
    - Formulaire pour saisir de nouvelles interventions avec la date de l'inter, le temps passé, le client, et un petit graphique à bâton mensuel

    Ce que je souhaite en plus:

    - Avoir une zone de texte dans laquelle un compte se fait automatiquement par rapport au nombre de temps passé suivant chaque client.
    En fait, le formulaire en question dispose d'une zone de liste déroulante pour le nom du client, une zone de saisie de la date d'intervention, une zone de texte pour y insérer un temps en heure, une zone de texte qui reprend le tarif du contrat de maintenance depuis la table "Clients" et le graphique qui se met à jour suivant les enregistrements créés et lorsque l'on passe d'un client à un autre.

    Il ne me manque plus que cette zone de texte qui se met à jour en calculant le temps déjà passé par client. C'est à dire que lorsque je sélectionne un client depuis la liste déroulante, je souhaite voir combien de temps à déjà été passé chez ce client dans le but de voir si mon contrat de maintenance est adapté.

    Merci à ceux qui se pencheront sur mon problème.

    @+

    Franck

    lundi 6 mai 2013 16:00

Réponses

  • J'ai enfin réussi à faire ce que je voulais. Je m'explique, ça pourrait servir à d'autres.

    1. J'ai donné un nom à ma liste déroulante: Liste

    2. J'ai créé ma zone de texte indépendante nommée: Depense

    3. Dans les évènement "Après MAJ" de la liste déroulante j'ai créé un petit code VBA:

    Private Sub Liste_AfterUpdate()
    
    Me.Depense = DSum("[TpsPasse]", "Inter", "[IDClient]=[Liste]")
    
    End Sub


    Voilà, du coup lorsque je sélectionne un client dans ma liste déroulante, j'ai automatiquement le calcul de la somme de temps passé enregistré.

    J'ai encore un peu de peaufinement à réaliser et du design mais l'idée est là et ça fonctionne. J'ai aussi mis un code dans certains objets pour éviter d'écraser des enregistrement déjà créés. En somme, lorsqu'une intervention est enregistrée avec tous les éléments nécessaire, si l'on repasse dessus on ne peut rien modifier. Pour ce faire j'ai mis un code VBA dans les évènements "Sur Clic". Voici le code:

    Private Sub Liste_Click()
    
    Me.AllowEdits = False
    
    End Sub

    Voilà, merci encore pour les réponses.

    @+

    • Marqué comme réponse tchao57 mercredi 8 mai 2013 21:10
    • Non marqué comme réponse tchao57 mercredi 8 mai 2013 21:10
    • Marqué comme réponse Aurel BeraModerator jeudi 9 mai 2013 05:45
    mercredi 8 mai 2013 21:10

Toutes les réponses