|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() John LitoArtisan Inscription : janvier 2012 Messages : 10 ![]() |
Bonjour,
Pouvez-vous m'aider à comprendre ce qu'il se passe. J'ai une requête SQL qui fonctionne très bien > vue institutionnelle pas de group by. Il me faut également une vue par Pôle/UG (ensemble de Centre de frais). J'ai donc dupliquer ma requête et j'ai ajouté un Group By Pole_UG (18 Pole_UG différent) qui fonctionne très bien également. Ensuite il me fallait également les mêmes traitements, mais avec un regroupement par Centre de frais (CF). Après dupplication, j'ai donc remplacé le Group By Pole_UG par Group By CF (240 cf différents). Malheureusement j'ai pour cette requête un message d'erreur «*dépassement de capacité*». La documentation que j'ai trouvée sur le Net m'a fait penser que le type de valeur recueillie dans mon alias n'était pas correct. J'ai donc cherché comment forcer le format d'un alias. J'ai alors "casté" mes variables comme ceci : Cdbl((Sum([malInf1ms(1)]))/(Sum([jrsETPtravContr]))). Tous les champs utilisés dans les calculs sont de type numérique (reel double) Ma table comporte 4307 enregistrements. Malheureusement j'ai toujours le même message d'erreur. J'ai donc testé sur des pc plus puissants (plus de RAM, CPU plus costaud, environnement 64 bits...cela ne change absolument rien...;( Ceci fonctionne Code SQL :
Et pas ceci Code SQL :
Pourquoi ? Access a-t-il ce genre de limite ? Où dois-je procéder autrement ? D'avance merci pour votre aide. Cordialement John |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Nicolas GuimbalConsultant/développeur ERP Inscription : mai 2008 Messages : 1 267 ![]() |
Bonjour,
Question bête : il n'y aurait pas une division par 0 ??? (ajoute having sum(...)<>0 pour voir) |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Thib Oxurapprenti ingénieur en informatique et réseaux Inscription : octobre 2010 Messages : 49 ![]() |
essaye de caster directement sur les sum, et non sur les résultats des divisions des sum
|
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() John LitoArtisan Inscription : janvier 2012 Messages : 10 ![]() |
Merci pour la suggestion.
Ou dois-je mettre le ? A chaque somme ? Directement dans la formule ?... Comme ceci ? Code :
Merci |
||
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Thib Oxurapprenti ingénieur en informatique et réseaux Inscription : octobre 2010 Messages : 49 ![]() |
Le having sum je ne connais pas mais la façon dont tu l'utilise me semble bonne.
Moi ce que je suggérai c'est de faire ceci : Code :
Cdbl(Sum([malInf1ms(1)]))/Cdbl(Sum([jrsETPtravContr])) Code :
Cdbl((Sum([malInf1ms(1)]))/(Sum([jrsETPtravContr]))) |
|
|
00
|
|
|
#6 | ||
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 090 ![]() |
Bonjour,
D'accord avec Nico84, une division par zero. Transforme chaque somme de dénominateur de la manière suivante. Code :
sum([numérateur])/iif(sum([dénominateur])<>0;sum([dénominateur]);1) as .... Code :
Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
||
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Thib Oxurapprenti ingénieur en informatique et réseaux Inscription : octobre 2010 Messages : 49 ![]() |
je proposais ça car on a pas vérifié que c'était du à une division par zero, c'était juste une suggestion
Du coup j'imagine que tu peux supprimer tous tes CDbl |
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Nicolas GuimbalConsultant/développeur ERP Inscription : mai 2008 Messages : 1 267 ![]() |
having est une condition similaire à where mais réservés aux éléments concernés par le group by
Elle se place juste avant l'order by ou avant chaque union Exemple sur le premier select : Code :
Dans ton cas il faut tester tous les diviseurs... |
||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() John LitoArtisan Inscription : janvier 2012 Messages : 10 ![]() |
Ok ...
Le "" fonctionne très bien. Merci beaucoup pour votre aide. @bientôt |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() John LitoArtisan Inscription : janvier 2012 Messages : 10 ![]() |
À titre d'info,
existe-t-il un article Microsoft ou autre sur ce qui se cache derrière le message d'erreur «*dépassement de capacité*» ? - Mauvais format de donnée (forcer avec CDbl) - div par 0 impossible (HAVING Sum([jrsETPtravContr])<>0) ... Afin d'avoir une liste des pistes à exploiter par type de message ? Merci |
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 090 ![]() |
Bouton d'aide sur le message d'erreur.
Mince ! il y a un bouton d'aide et une touche F1 sur ACCESS ?!!!
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|
10
|
|
|
#12 |
|
Invité de passage
![]() John LitoArtisan Inscription : janvier 2012 Messages : 10 ![]() |
1- Mise à par le bouton "OK", il n'existe pas de bouton "AIDE" avec access 2003
2- Via l'aide access "F1" aucune info concernant "dépassement de capacité" ... |
|
|
00
|
|
|
#13 | |||||
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 090 ![]() |
1) Il y a bien un bouton d'aide sur cette erreur. C'est l'erreur N° 6.
Lorsqu'on clique dessus il affiche ceci : Citation:
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|||||
|
00
|
Copyright © 2000-2012 - www.developpez.com