A voir également:
- Import excel access . pivot
- Liste déroulante excel - Guide
- Formule excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Mise en forme conditionnelle excel - Guide
4 réponses
blux
Messages postés
26028
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
9 mai 2024
3 289
3 sept. 2004 à 11:06
3 sept. 2004 à 11:06
Salut,
c'est moi le roi du pivot ! ;-)))
Si tu ne souhaites que sélectionner, alors il faut intégrer une contrainte dans ton SELECT, pour ne sélectionner que les caractères à gauche du / qui sont inférieurs à 4
Ca donne ça en SQL (on suppose que le champ s'appelle 'test') :
On utilise la fonction instr qui cherche à quel endroit se trouve une chaine dans une autre : instr(1,test,"/") renvoie la position du caractère / en partant de la gauche. On ne peut pas se contenter de prendre les 2 premiers caractères de gauche, car des fois l'année est sur 1.
Il faut ensuite prendre les caractères à gauche, mais la position renvoyée au dessus est celle du /, il faut donc soustraire 1 :
left(test,instr(1,test,"/")-1)
Il ne reste qu'à tester que c'est inférieur à l'année en cours. C'est pourquoi on est obligé d'utiliser la fonction val qui transforme une chaine en numérique.
C'est plus clair ?
A+ Blux
c'est moi le roi du pivot ! ;-)))
Si tu ne souhaites que sélectionner, alors il faut intégrer une contrainte dans ton SELECT, pour ne sélectionner que les caractères à gauche du / qui sont inférieurs à 4
Ca donne ça en SQL (on suppose que le champ s'appelle 'test') :
WHERE val(left(test,InStr(1,test,"/")-1))>4Comment ça marche :
On utilise la fonction instr qui cherche à quel endroit se trouve une chaine dans une autre : instr(1,test,"/") renvoie la position du caractère / en partant de la gauche. On ne peut pas se contenter de prendre les 2 premiers caractères de gauche, car des fois l'année est sur 1.
Il faut ensuite prendre les caractères à gauche, mais la position renvoyée au dessus est celle du /, il faut donc soustraire 1 :
left(test,instr(1,test,"/")-1)
Il ne reste qu'à tester que c'est inférieur à l'année en cours. C'est pourquoi on est obligé d'utiliser la fonction val qui transforme une chaine en numérique.
C'est plus clair ?
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
blux
Messages postés
26028
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
9 mai 2024
3 289
3 sept. 2004 à 11:38
3 sept. 2004 à 11:38
Voui, dans ce cas, il faut le mettre entre crochets []...
Est-ce que tu as au moins saisi la méthode utilisée ? (c'est quand même le plus important !)
A+ Blux
Est-ce que tu as au moins saisi la méthode utilisée ? (c'est quand même le plus important !)
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
salut!!
je ne sais pas si tu te rappelles mais j'avais un soucis pour une requete sur access concernant une date..ben g tjrs ce soucis!!
tu sais ce que le message d'erreur "appel de procedure incorrect" signifie?
merci d'avance!
je ne sais pas si tu te rappelles mais j'avais un soucis pour une requete sur access concernant une date..ben g tjrs ce soucis!!
tu sais ce que le message d'erreur "appel de procedure incorrect" signifie?
merci d'avance!
blux
Messages postés
26028
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
9 mai 2024
3 289
6 sept. 2004 à 09:12
6 sept. 2004 à 09:12
Ben désolé, mais j'ai dormi depuis !
Pas de souvenir...
Appel de procédure incorrect : c'est quand on appelle une procédure avec de mauvais paramètres (dixit la doc)...
A+ Blux
Pas de souvenir...
Appel de procédure incorrect : c'est quand on appelle une procédure avec de mauvais paramètres (dixit la doc)...
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
merci pour ta reponse!
ca y est ca marche!!!!!!!!!!!! en fait tu avais raison vendredi dernier..mais au lieu du caractere "/" c'etait "."..hum..oui je sais c tres bete com erreur!!
voila ma requete:
SELECT TableDecompteOperations.Subdivision, TableDecompteOperations.[Code Nature], TableDecompteOperations.[N° Op], Sum(TableDecompteOperations.C) AS SommeDeC, Sum(TableDecompteOperations.R) AS SommeDeR, Sum(TableDecompteOperations.M) AS SommeDeM, Sum(TableDecompteOperations.A) AS SommeDeA
FROM TableDecompteOperations
WHERE (((Left([TableDecompteOperations].[N° Op],InStr(1,[TableDecompteOperations].[N° Op],".")-1))<Right(Year(Date()),1))) OR (((Left([TableDecompteOperations].[N° Op],InStr(1,[TableDecompteOperations].[N° Op],".")-1))>80) AND ((TableDecompteOperations.[Code Nature]) Like "O"))
GROUP BY TableDecompteOperations.Subdivision, TableDecompteOperations.[Code Nature], TableDecompteOperations.[N° Op];
mon soucis com tu peux le voir c que vu que je selectionne que le dernier chiffre de mon annee actuelle cette requete ne sera valable que jusqu'en 2009...pour l'instant je vais me contenter de ca mais j'aurai voulu pouvoir continuer apres 2010..si jamais tu as une idee..
merci d'avance!
ca y est ca marche!!!!!!!!!!!! en fait tu avais raison vendredi dernier..mais au lieu du caractere "/" c'etait "."..hum..oui je sais c tres bete com erreur!!
voila ma requete:
SELECT TableDecompteOperations.Subdivision, TableDecompteOperations.[Code Nature], TableDecompteOperations.[N° Op], Sum(TableDecompteOperations.C) AS SommeDeC, Sum(TableDecompteOperations.R) AS SommeDeR, Sum(TableDecompteOperations.M) AS SommeDeM, Sum(TableDecompteOperations.A) AS SommeDeA
FROM TableDecompteOperations
WHERE (((Left([TableDecompteOperations].[N° Op],InStr(1,[TableDecompteOperations].[N° Op],".")-1))<Right(Year(Date()),1))) OR (((Left([TableDecompteOperations].[N° Op],InStr(1,[TableDecompteOperations].[N° Op],".")-1))>80) AND ((TableDecompteOperations.[Code Nature]) Like "O"))
GROUP BY TableDecompteOperations.Subdivision, TableDecompteOperations.[Code Nature], TableDecompteOperations.[N° Op];
mon soucis com tu peux le voir c que vu que je selectionne que le dernier chiffre de mon annee actuelle cette requete ne sera valable que jusqu'en 2009...pour l'instant je vais me contenter de ca mais j'aurai voulu pouvoir continuer apres 2010..si jamais tu as une idee..
merci d'avance!
blux
Messages postés
26028
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
9 mai 2024
3 289
6 sept. 2004 à 10:21
6 sept. 2004 à 10:21
Ben, il suffit de prendre les 2 derniers caractères de la date !
Si tu mets les 2 champs en numérique avec val, alors la comparaison marchera...
C'est trop simple ? ;-)
A+ Blux
Si tu mets les 2 champs en numérique avec val, alors la comparaison marchera...
C'est trop simple ? ;-)
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
loic
>
blux
Messages postés
26028
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
9 mai 2024
6 sept. 2004 à 10:42
6 sept. 2004 à 10:42
le souci c que si je met :
WHERE (((Left([TableDecompteOperations].[N° Op],InStr(1,[TableDecompteOperations].[N° Op],".")-1))=Right(Year(Date()),2)) AND ((TableDecompteOperations.[Code Nature]) Like "P" Or (TableDecompteOperations.[Code Nature])="A"))
au lieu de
WHERE (((Left([TableDecompteOperations].[N° Op],InStr(1,[TableDecompteOperations].[N° Op],".")-1))=Right(Year(Date()),1)) AND ((TableDecompteOperations.[Code Nature]) Like "P" Or (TableDecompteOperations.[Code Nature])="A"))
ben g plus aucun champ qui correspond...peut etre parceque je ne peux pas comparer deux chiffres a un seul?..est ce que je peux comparer "3" par ex à "04" ?
encore merci!
A+!
WHERE (((Left([TableDecompteOperations].[N° Op],InStr(1,[TableDecompteOperations].[N° Op],".")-1))=Right(Year(Date()),2)) AND ((TableDecompteOperations.[Code Nature]) Like "P" Or (TableDecompteOperations.[Code Nature])="A"))
au lieu de
WHERE (((Left([TableDecompteOperations].[N° Op],InStr(1,[TableDecompteOperations].[N° Op],".")-1))=Right(Year(Date()),1)) AND ((TableDecompteOperations.[Code Nature]) Like "P" Or (TableDecompteOperations.[Code Nature])="A"))
ben g plus aucun champ qui correspond...peut etre parceque je ne peux pas comparer deux chiffres a un seul?..est ce que je peux comparer "3" par ex à "04" ?
encore merci!
A+!
blux
Messages postés
26028
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
9 mai 2024
3 289
>
blux
Messages postés
26028
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
9 mai 2024
6 sept. 2004 à 10:45
6 sept. 2004 à 10:45
Si tu mets les 2 champs en numérique avec val, alors la comparaison marchera...
Il me semblait l'avoir écrit... :-)
A+ Blux
Il me semblait l'avoir écrit... :-)
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
loic
>
blux
Messages postés
26028
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
9 mai 2024
6 sept. 2004 à 12:16
6 sept. 2004 à 12:16
je te remercie.j'essaierai apres manger!
dsl si tu l'avais dit auparavant...c un peu confus pour moi!
merci!
a+!
dsl si tu l'avais dit auparavant...c un peu confus pour moi!
merci!
a+!
3 sept. 2004 à 11:28
j'avoue que j'ai fait un copier coller et que j'ai tout mis dans le critere de mon champ dans ma requete.or mon champs s'appelle N° Op
et g le message d'erreur suivant : l'expression comporte un point ! ou ( non valide et ca pointe sur InStr(
le fait qu'il y ai un espace dans le nom de mon champ peut poser un pb?
merci d'avance
3 sept. 2004 à 11:51
ben voila exactement ce que g mis :
val(left([TableDecompteOperations].[N° Op],InStr(1,[TableDecompteOperations].[N° Op],"/")-1))>4
et bien cela me met que la syntaxe de l'expression est incorrecte..j'avoue que je ne vois pas bien ou..
si jamais une erreur te saute aux yeux..
et encore merci!
3 sept. 2004 à 11:57
marche très bien chez moi, avec les différentes façons de l'écrire...
A+ Blux
3 sept. 2004 à 13:24
voila ce que donne ma requete access en sql :
SELECT TableDecompteOperations.Subdivision, TableDecompteOperations.[Code Nature], Sum(TableDecompteOperations.C) AS SommeDeC, Sum(TableDecompteOperations.R) AS SommeDeR, Sum(TableDecompteOperations.M) AS SommeDeM, Sum(TableDecompteOperations.A) AS SommeDeA, TableDecompteOperations.[N° Op]
FROM TableDecompteOperations
WHERE val(left([TableDecompteOperations].[N° Op],InStr(1,TableDecompteOperations.[N° Op],"/")-1))>4
GROUP BY TableDecompteOperations.Subdivision, TableDecompteOperations.[Code Nature], TableDecompteOperations.[N° Op]
HAVING (((TableDecompteOperations.[Code Nature]) Like "O"));
encore merci
a +!
3 sept. 2004 à 14:01
A+ Blux