>>>> Merci de noter toutes remarques concernant ce cours dans le sujet parallèle : [Cours papyturbo]Commentaires, remarques et suggestions
-------------------------------------------------------------------------
Ce cours est la suite du [Cours pt-01][Débutants]Analyse structure base de données simple
Il commence donc par une réponse aux questions posées par Serge57, dans la réponse #38 du cours précédent.
-------------------------------------------------------------------------
Je te tirerais bien les oreilles, juste pour le fun, mais à propos de recherche en FAQEnvoyé par Serge57
:
- cherche "Nul" dans la Faq de DVP, et tu trouveras Erreur d'exécution 94 : utilisation incorrecte de Null
- bien sûr, tu n'as pas ce n° d'erreur dans une requête, mais la réponse est la même : avec Nz([ChampQuiPeutEtreNul]) + Nz([AutreChamp]). Ce qui renverra 0, au lieu de la valeur Null, voir aide d'access (F1), sur la fonction Nz().
De toute façon, il y a d'autres problèmes à régler avant.
Bon chemin ? je suis pas sûr. Surtout, tu vas trop vite, et tu ne vérifies pas tes résultats étape par étape.Envoyé par Serge57
Tu trouveras, en pièce jointe, la base du jour, renommée au 13 juillet.
Je n'ai pas modifié ta requête, sauf ajout de l'IdSectionsAffaires, pour contrôle, mais les totaux sont faux !
Pour vérifier cela, ce que j'ai déjà fait :
- ouvert ta requête SommeDifferenceHeures,
- supprimé les 2 tables d'heures passées, afin de me consacrer aux seules HeuresAllouees,
- enregistré la requête sous le nom 01-SommeHeuresAllouees,
- ajouté l'IdSectionAffaire, afin de pouvoir vérifier les nombre d'heures, pour chaque SectionAffaire, avec un tri par IdSectionAffaire,
- ouvert la requête et comparé les sommes d'heures avec le détail visible dans la table HeuresAllouees-SectionsAffaires,
---- aparté sur les listes déroulantes dans les champs de table ------------------------
Premier résultat (si tu fais cette opération avec ta base, celle qui est attachée dans le [cours pt-01], réponse #38) : tout faux !
Les n°s d'IdSectionsAffaires ne correspondent pas !
J'ai donc jeté un oeil sur la structure de la table HeuresAllouees-SectionsAffaires, et, pour le champ IdSectionsAffaires, dans l'onglet Liste de choix (en bas des propriétés, sous les champs) :
- tu as mis une liste déroulante, permettant de choisir une SectionAffaire en voyant le n° de clé de l'affaire + le n° de clé de section.
- l'idée est excellente, mais tu vois la confusion : lorsqu'on affiche le contenu de la table, c'est la clé de l'affaire qui s'affiche à la place de la clé de la SectionAffaire !
J'ai donc modifié la liste, pour qu'elle affiche toujours le n°IdSectionsAffaires dans la table, avec le n° d'affaire (plus intéressant que la clé) et le nom de la section visibles dans la liste, quand on la déroule.
Tu pourras y mettre les champs que tu veux, mais attention à ne pas remplacer l'affichage d'une clé par celui d'une autre !
V+ (À faire) : revoir toutes les listes déroulantes par champs
---- fin de l'aparté sur les listes déroulantes dans les champs de table ------------------------
Suite de la vérification des sommes d'heures allouées :
Comme tu peux le constater, on a bien
- 21 heures en SectionAffaire #4,
- 600 + 320 = 920, en SectionAffaire #5
- etc.
Jusque là, tout est bon.
Ensuite, comparaison entre la requête simple et la tienne, qui contient tout :
Voilà où je voulais en venir :
- les 2 requêtes sont triées par IdSectionsAffaires,
- les totaux ne sont pas les mêmes.
Avant de faire les additions/différences, il faut s'assurer que les sommes sont correctes. Faut se méfier de ce que renvoit SQL !
Il y a toujours une raison, même si elle n'est pas évidente.
Pour bien comprendre ce qu'il se passe, je te propose plusieurs directions :
- la requête qui ne contient qu'une seule table d'heures donne des résultats corrects, (on a vérifié)
- dès qu'on ajoute une 2ème table, les totaux d'heures allouées changent ? (à vérifier)
- si, dans SommeDifferenceHeures, on enlève la ligne d'opérations en cliquant sur le bouton "sigma", ou menu Affichages > Opérations, on voit le détail...
Le mieux à faire, pour bien comprendre ce point :
- reprendre le cours déjà cité : Comprendre les jointures / Relations dans Access de Maxence Hubiche, quitte à faire les mêmes exercices avec nos tables de SectionsAffaires et d'heures.
- il faut bien comprendre à quel moment Jet génère plusieurs enregistrements, avec les mêmes heures allouées ! (qui se retrouveront donc plusieurs fois dans le total)
Il faudra ensuite
- refaire 2 autres requêtes simples, chacune avec une seule table d'heures passées,
- vérifier les totaux en comparant avec la table concernée,
- vérifier que ces totaux aussi sont les mêmes dans ta requête.
Je ne te donne pas encore la solution, donc, n'hésite pas à poser toutes questions.
Ca ne semble poser aucun problème : j'ai pu télécharger aujourd'hui, aussi bien la nouvelle base que l'ancienne d'il y a quelques jours : elles sont toutes là.Envoyé par Serge57
Simple remarque : tu noteras que
- j'ai renommé ta base avec la date d'aujourd'hui, comme tu le fais à chaque fois
- j'inverse les dates : aaaa-mm-jj, pour que le tri, dans l'explorateur windows, soit correct et non pas en fonction du jour du mois !
Partager