|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : août 2010 Messages : 6 ![]() |
Bonjour
Je tourne dans les forums et je n'arrive pas à régler mon problème. J'ai une table "RELEVES", qui comporte des champs [NumRelevé], [N°Compteur], [DateRelevé], [Index],... J'ai construit une requête, dont le but est de calculer, pour chaque date de relève, la conso correspondante (résultante de Index-Index(n-1) ). Je fais donc un tri croissant sur [N°compteur] et sur [dateRelevé]. Pour le champ conso, j'ai écrit l'expression suivante: Code :
Expr2: RechDom("[Index]";"[RELEVES]";"[NumRelevé]=" & [NumRelevé]-1) J'ai pensé que ça venait du fait que [NumRelevé] est un champ numérique, et j'ai essayé de cooriger la fin de la formule en mettant ... mais ça ne fonctionne pas mieux Je suis visiblement passée à côté de quelque chose, mais j'ai beau regarder les forum et les tutos de microsoft, je reste plantée.... Je vous remercie d'avance pour votre aide Céline |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 087 ![]() |
Bonjour,
La syntaxe est correcte cependant tu utilises INDEX qui est un mot réservé... Pour avoir cette liste consulter Mots Réservés dans l'aide ACCESS. 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
|
|
|
#3 |
|
Invité de passage
![]() Inscription : août 2010 Messages : 6 ![]() |
Bonsoir Loufab
Merci de ta réponse. En fait, dans la formule j'utilise un champ qui s'appelle [Index HP bleu] et pour la question, je l'avais synthétisé en [Index]. A priori, tu me dit que la syntaxe est bonne ... Par contre, je re-précise que je cherche à faire ce calcul dans une requête. Est-ce qu'il faut que je passe par un formulaire? Céline |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : août 2010 Messages : 6 ![]() |
Petit correctif....
A force d'insister, je me suis aperçue que meme le simple calcul de Année(datedébutConso) me posait un souci car j'avais le message d'erreur "Erreur de compilation..." J'ai vérifié les références de mon projet (en VBA: outils/référence). Visiblement rien d'anormal, mais après fermeture de VBA, comme par hasard tout fonctionnait Bref! Cependant, ma formule ne fonctionne pas... En effet, j'ai un parc de 9 compteurs (électriques) et j'enregistre les factures (et les relevés) au fur et à mesure que je reçois les factures. J'incrémente mon numéroauto [NumRelevé] à chaque nouvelle facture mais pas à chaque nouvelle facture du compteur en particulier. Ainsi, Numrelevé=10 peut concerner le compteur 1 alors que Numrelevé=11 peut concerner le compteur 3... Donc, ma formule RechDom telle que je l'ai écrite précédemment mélange tous mes compteurs, malgré le fait que je trie les compteurs par ordre croissant au préalable Si je créé un champ: [Champ1] qui numérote les relevés propres à chaque compteur, et que j'écris le critère de ma formule de la façon suivante: Code :
Expr2: RechDom("[IndexHP]";"[RELEVES]";"[Champ1]=" & [Champ1]-1) Par contre, c'est fastidieux de créer encore un champ. Pour contourner le probleme, j'aimerais m'appuyer sur les dates, mais je n'arrive pas à trouver le bon critère. J'ai essayé: [Date de Début] (c'est à dire du champ à chercher) = [Date de Fin] (c'est à dire du Champ considéré Mais ma colonne reste désespérément vide... Merci pour votre aide |
|
|
00
|
|
|
#5 | |||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
bonsoir hobbes34
Citation:
Code sql :
le champ calculé [valeurindexprecedent] retourne la valeur de l'index précédent pour le compteur en cours.
__________________
L'informatique fait son grand retour au lycée... |
|||
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : août 2010 Messages : 6 ![]() |
Bonjour f-leb
Merci pour ta réponse. J'ai cependant une question dans le code que tu as tapé. A quoi correspondent les 2 expressions "releve". J'ai bien fait la correspondance entre r1, r2 et les autres champs, mais je ne comprends pas à quoi "releve" renvoie. Merci d'avance Code :
|
||
|
|
00
|
|
|
#7 | |||||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
bonjour,
tu n'as pas dit si le code marchait ![]() Citation:
le SELECT TOP 1... est une sous-requête qui utilise aussi la table [RELEVES], comme je m'en sers deux fois il faut passer par des alias de tables (des noms de substitution pour les tables). J'aurais pu aussi écrire:...FROM releve AS r1. Pour essayer d'expliquer: Code :
Code :
Suis-je clair ? ![]()
__________________
L'informatique fait son grand retour au lycée... |
|||||
|
10
|
|
|
#8 | ||||||
|
Invité de passage
![]() Inscription : août 2010 Messages : 6 ![]() |
Bonsoir f-leb
Excuse moi pour le délai de réponse, je n'arrivais pas à mettre en forme le code (je me prenais les pieds dans le tapis de l'indentation)... Mais a priori, maintenant c'est OK... Citation:
J'ai bien compris l'histoire des alias de tables et j'avais d'emblée remplacé les r1 et r2 par ma table relevé et son image, grâce à une liaison sur la clé primaire, ce qui donne en sql, avec mes vrais noms de table: Code :
Pour transposer ton code dans ma requête, j'ai appelé la deuxième table r2. Lorsque j'essaie de transposer ton code, dans ma requête, ça donne: Code :
NB: par ailleurs, je n'ai pas réussi à savoir où déclarer le nom de la première table comme étant r1... Merci pour ton aide |
||||||
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
bonsoir,
Code sql :
...FROM H_NRJ_RELEVES INNER JOIN H_NRJ_RELEVES AS r2 ON ... Sur le modèle de la requête de mon message précédent, cela donnerait: Code sql :
__________________
L'informatique fait son grand retour au lycée... |
||
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : août 2010 Messages : 6 ![]() |
Bonjour f-leb
Citation:
En fait, j'avais remarqué qu'avec l'assistant de création de requete, si on selectionnait 2 fois la même table, l'une des deux prenait un nom avec le suffixe "_1". Et lorsqu'on est dans cette situation, si on ne fait pas de jointure, lorsque l'on exécute, ça démultiplie les champs.... Citation:
Enfin, ce qui bugait depuis le début dans mon histoire, c'est que j'écrivais dans la sous-requête, car je considérais que r2 renvoyait bien à l'image (l'alias) de la première table... Merci beaucoup pour ton aide. La requête fonctionne à merveille maintenant. Il me reste à déclarer le message comme résolu... |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com