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 requete complexe


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Aide requete complexe
    Bonjour,

    Voici mon problème :

    Je veux à partir d'un bouton inclu dans un formulaire ( et associé à la requete en question ) incrémenter un champ d'une autre table, décrémenter le champs d'une autre, et enfin supprimer un enregistrement ( dans lequel se trouve un champ présentant la valeur qui sert à incrémenter/décrémenter). La requete doit donc agir sur 3 tables différentes.
    nb : la valeur pour incrémenter (de type numérique) est la meme que celle qui va décrémenter.

    Plus concrètement il s'agit de tables concernant la gestion d'une auto-école :
    Dans un formulaire gérant les leçons de conduite, il s'agit, avant la suppression d'une leçon effectuée, de prendre la valeur du champ "durée leçon", de la soustraire au crédit horaire du client concerné par cette leçon, et d'incrémenter le champ "heures de conduite éffectuées" du moniteur associé.
    J'espère avoir bien exposé mon problème, je me suis arraché les cheveux dessus sans résultat probant. Je serais donc reconnaissant à la personne qui pourra m'éclairer un peu plus sur le sujet ou me donner une bonne piste de départ.

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    tu pourrais tout simplement faire 3 requetes différentes : 2 requetès ajout pour incrémenter et décrémenter et une requete suppression pour la troisième table.
    ensuite tu fais une macro qui execute tes 3 requetes

  3. #3
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut
    ou passer par VBA
    @+
    tu es là? sabine?
    apparemment ça ne t'interesses pas de passer par VBA et les recordsets!
    @+

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut re
    oups désolé j'ai du m'absenter, et j'étais resté connectée.

    Le VBA c'est pas que ça ne m'intéresse pas, mais je n'ai que des notions basique avec. Sinon pour les 3requêtes associées avec le macro, je vais m'y essayer en attendant de voir ce que celà donne.

    Merci pour vos réponses

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    slt,

    T'as un chouette tutoriel sur DAO :
    http://warin.developpez.com/access/dao/

    Sinon comme tu as trois modifications à faire, il faudrait peut-être envisager l'utilisation de transaction pour garantir l'intégrité des données.
    En gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dbengine.BeginTrans
    dbengine.CommitTrans
    dbengine.Rollback
    En cas d'erreur tu fais un RollBack, sinon un CommitTrans, comme ça tu es sûre de ne pas te retrouver avec la moitié des mise à jour d'effectuées.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    je suis Aicha, la binome de Sabine sur le projet Acces.
    Deja, merci a vous tous de prendre de votre temps pour nous aider.
    Nous sommes vraiment débutantes, et on ne peux pas dire que notre prof nous soit d'une grande aide...En gros, elle s'en fou...
    Nous avons quelques notions de bases en Visual Basic, mais pas assez pour que ca nous soit utile sur ce projet. Je pense que notre prof veux nous faire utiliser les requetes et les macros, on a pas du tout utilisé le Visual Basic dans notre UE Base de Données. On commence à chercher de l'aide sur Internet parce que notre soutenance est vendredi...donc c'est un peu la panique à bord Bisoux à tous.
    Aïcha.

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    slt,

    en y regardant de plus près c'est un peu tordu votre histoire

    je ne comprend pas bien le : "avant la suppression d'une leçon effectuée"
    c'est bizarrement fait, vous avez toutes les leçons au début et vous supprimez les leçons au fur et à mesure? Donc plus aucune trace des leçons effectuées mise à part le total calculé?

    bref si vous n'avez pas le temps de passer par du vba il faut faire des requêtes mises à jour, en utilisant les champs du formulaire dans la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE table_crédit_horaire SET [crédit_horaire] = [crédit_horaire]-[Formulaires]![NomDuFormulaire]![ChampDuréeDeLaLeçon]
     WHERE client=[Formulaires]![NomDuFormulaire]![ChampClient];
    mais sinon avec vba c'est pas très compliqué non plus, DAO n'est pas bien utile dans ce cas, une commande suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.runsql "update table_crédit_horaire set crédit_horaire = crédit_horaire - " & me.ChampDuréeDeLaLeçon & " where client = '" & me.ChampClient & "'"
    Et même principe pour incrémenter les heures du moniteur.

    Bye.

  8. #8
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    J'aurais tendance à dire comme Arkham... C'est un peu fou comme histoire...

    Je me demande si cela ne cacherait pas un problème de modélisation quelque part

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonsoir,
    Sabine s'est trompée en disant qu'il faut supprimer la lecon, en fait on est obligé de garder une trace de la lecon pour faire le bilan des lecons de chaque eleve de l'auto-école.
    Je vais vous donner un exemple de ce que nous voudrions faire:
    Prenons un eleve: Jean et un moniteur: Albert.
    Jean à 20 heures de lecon à effectuer. Et Albert, par exemple 40 heure de lecon données pour le mois en court. Quand l'utilisateur enregistre une lecon, il renseigne les champs: Nom de l'éléve (ici Jean) Nom Moniteur (Albert) et saisi la durée de la lecon, par exemple 2 heures. Donc nous en cliquant sur le bouton enregistrer, on sauvegarde la lecon dans une table. Nous voudrions ajouter un bouton lecon effectuée qui retirera 2 heures de lecon à Jean (donc 20-2=18 heures restantes) et augmentera le compteur d'Albert (40+2=42 heures de cours donnés). Voilou, j'espere que c'est un chti peu plus clair Merci de votre aide. Bisous.
    Aïcha.

  10. #10
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    oui c'est un peu mieux comme ça

    par contre il n'y a toujours pas d'intérêt à stocker le nombre d'heures restantes pour l'élève et le nombre d'heure effectuées par le moniteur

    il "suffit" d'une requête pour calculer dynamiquement ces nombres d'heures et les afficher
    ou alors vous pouvez aussi utiliser DSum (SomDom) pour le mettre dans un champ d'un formulaire

    en aucun cas ces données ne doivent être stockées sans raison dans une base de données, il est de toute façon souvent plus simple de les calculer quand on en a besoin que de les mettre à jour avec des requêtes (sinon il faut gérer tous les cas : création/suppression/modification, n'oublions qu'il est également possible de corriger une leçon mal saisie et il faut alors corriger les deux calculs en retirant l'ancienne durée et en rajoutant la nouvelle)

    bref que des inconviénients si vous stockez ces calculs (et pour votre soutenance il vaut mieux une modélisation plus correcte que ça)

Discussions similaires

  1. [AC-2010] Aide sur requete complexe
    Par zefennec dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 12/12/2012, 17h36
  2. Aide pour réaliser une requete complexe
    Par zaghi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/10/2012, 11h51
  3. Aide a la creation de requete complexe
    Par kenny75 dans le forum Requêtes
    Réponses: 4
    Dernier message: 21/07/2011, 18h43
  4. aide pour une requet complexe
    Par agnaou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/07/2009, 22h10
  5. Requete complexe, demande d'aide
    Par bucheron007 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/11/2008, 15h19

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