Import excel access . pivot

Fermé
loic - 3 sept. 2004 à 09:25
 loic - 6 sept. 2004 à 12:16
bonjour a tous!
g un soucis concernant un champs sous access.
j'importe sous access une table d'excel dont un champ est de la forme 1/35/14 ou 97/65/78 par ex , la premiere partie correspondant a l'annee (dans l'ex 1 pour 2001 et 97 pour 1997) or je souhaite ne selectionner que les enregistrements dont l'année est inferieure a l'annee en cours (donc la premiere partie <4 pour cette annee ,5 pour l' annee prochaine)..on m'a parle de "pivot" afin de repondre a mon probleme mais je ne saisis toujours pas(de transformer mon champs texte ,de rajouter 2000 ou 1900 puis de traiter la date)
si quelqu'un pouvait me renseigner un peu..
merci d'avance!
A voir également:

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
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') :
 WHERE val(left(test,InStr(1,test,"/")-1))>4
Comment ç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"
0
merci pour toutes ces infos!!
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
0
remoi!!

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!
0
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:57
je vois pas du tout !
SELECT Table1.[N° test]
FROM Table1
WHERE val(left([table1].[N° test],InStr(1,table1.[N° test],"/")-1))>4;
marche très bien chez moi, avec les différentes façons de l'écrire...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
loic > blux Messages postés 26028 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 9 mai 2024
3 sept. 2004 à 13:24
en fait g un nouveau message d'erreur maintenant : "appel de procedure incorrect"...je ne comprend pas
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 +!
0
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
3 sept. 2004 à 14:01
Ton GROUP BY a 3 champs, alors que ton SELECT n'en a que 2...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
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
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
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
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!
0
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
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
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
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!
0
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
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
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
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
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+!
0
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
Si tu mets les 2 champs en numérique avec val, alors la comparaison marchera...

Il me semblait l'avoir écrit... :-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
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
je te remercie.j'essaierai apres manger!
dsl si tu l'avais dit auparavant...c un peu confus pour moi!
merci!
a+!
0