|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
Bonjour à tous
Je travaille avec une table comprenant les notes individuelles des élèves d'une classe dans différentes matières. Grâce à une requête, je calcule les moyennes de la classe par matière (ce champ calculé est appelé "MoyenneParMatière"). Obtenant des nombres comprenant jusqu'à 15 décimales, je souhaiterais stocker seulement 1 chiffre après la virgule : ainsi je voudrais que 12,3333 et 12,25 soient stockés comme 12,3 (arrondi supérieur). J'arrive seulement à modifier l'affichage en sélectionnant (en Mode Création de ma requête dans la feuille Propriétés) Format : Standard Décimales : 1 mais le nombre stocké est toujours le même... Existe-t-il une fonction prédéfinie sous QBE ? Merci par avance pour votre aide |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
Je pense avoir trouvé :
FormatNumber([MoyenneDesMatières];1) La fonction retourne une chaîne de caractères, mais en faisant par la suite les calculs qui m'intéresse ça marche. En fait d'après la doc sur la fonction FormatNumber(), je ne l'utilise pas comme c'est indiqué, donc est-ce correct ?? FormatNumber() : Convertit des nombres en chaînes. La conversion est le résultat de la mise en forme du nombre spécifié dans le premier argument (number) à l'aide du format spécifié dans le deuxième argument (string) et selon les règles définies dans le format décimal nommé dans le troisième argument facultatif (string). Si le troisième argument, à savoir le nom du format décimal, est omis, le format décimal par défaut est utilisé. Cette fonction et l'élément <xsl:decimal-format> sont conçus pour être utilisés conjointement. je n'arrivais pas à utiliser l'argument spécifiant le format, car FormatNumber([MoyenneDesMatières];"##.#", "european") ne marche pas l'argument european est censé indiquer que le séparateur de décimales est la virgule et non le point. Merci par avance pour votre aide |
|
|
00
|
|
|
#3 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
J'essaierai avec Round. Exemple pour arrondir à une décimale : A+ |
|
|
10
|
|
|
#4 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
oui merci LedZeppII ça marche !
ensuite je cherche à calculer le rang non-dense entre les moyennes de notes (champ Moyenne) que j'ai obtenues (par exemple s'il y a 2 ex-aequo, ils ont le même rang et on saute le numéro suivant : on obtient 1 et 1 puis 3), en écrivant ceci ça marche (champ calculé en mode Création de ma requête) : Code :
CpteDom("*";"[NomRequête]";Remplacer("[Moyenne]";",";".") & ">" & Remplacer([Moyenne];",";"."))+1 De plus, je cherche à effectuer une seule requête pour calculer le rang non dense de mes notes, mais je n'arrive pas à faire mieux que 2 requêtes distinctes à partir de ma table initiale (table 1): - calcul des moyennes par matières (table2) - calcul du rang (table 2 à laquelle on ajoute le champ calculé rang non-dense) est-il possible de passer par des sous-requêtes dans le cas de calculs de moyennes (vu que la table 2 possède beaucoup moins de lignes que la table 1 initiale le champ calculé rang non-dense ne s'appliquera pas sur toutes les lignes de la table 1) ??? Merci par avance pour votre aide |
|
|
00
|
|
|
#5 | ||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Citation:
Code :
CpteDom("*"; "[NomRequête]"; "[Moyenne]>" & Str([Moyenne])) + 1 Comme il s'agit d'une expression SQL ... - le séparateur décimal est le point - les dates sont au format #mm/jj/aaaa# Citation:
Vouloir tout faire en une seule requête, peut conduire à une requête complexe, plus lente. A+ |
||
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
merci beaucoup pour tes indications LedZeppII !
en fait il m'est demandé d'effectuer la requête (pour calculer le rang non dense de mes moyennes de notes) en une seule fois, pourrais tu m'indiquer comment je dois m'y prendre pour faire à la fois les moyennes et le calcul du rang ? Merci par avance |
|
|
00
|
|
|
#7 | ||||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
C'est pas franchement évident. Exemple avec une table tblNote(Identifiant, Note). Avec une seule requête : Code sql :
Avec deux requêtes : Si j'enregistre la sous-requête (également sous-sous-requête) suivante ... Code sql :
Code sql :
|
||||||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
Bonjour LedZeppII,
j'ai bien analysé le code que tu as écrit, et je l'ai adapté à ma base : tout marche parfaitement ! merci merci ! Ton aide m'a permis de mieux comprendre comment coder des requêtes imbriquées en SQL (vu que je débute et que j'utilisais surtout QBE pour les requêtes), en espérant que cela me donne de bonnes idées pour la suite ! Je te remercie énormément de t'être penché sur mon problème |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com