Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous
Depuis ce matin je sèche sur la problématique suivante.
Une table ACCESS avec bcp de lignes de commandes. Je souhaite dont filtrer dès l'import pour ne pas charger la mémoire en tenant compte de l'année de commande. La date est stockée en txt dans la table. Je souhaite charger 3 années plus l'année en cours. Donc,
Essai 1
SQL SELECT
NUM,
DTEX,
CHP1,
CHP2,
MNT
FROM `TBL_CDE`
Where CHP1='280'
and Len(DTEX)>0
and (CHP2='130' or CHP2='650')
and num#(left(DTEX,4))>=$(ANNEE_DEB);
-> plante quand j'ajoute la dernière ligne
Essai 2:
SQL SELECT
NUM,
DTEX,
CHP1,
CHP2,
MNT
FROM `TBL_CDE`
Where CHP1='280'
and Len(DTEX)>0
and (CHP2='130' or CHP2='650')
and CINT(MID(DTEX,1,4))>=$(ANNEE_DEB);
-> Pas mieux
Quelqu'un aurait il réussi à ne charger que les lignes récentes d'une base ACCESS sur le critère d'un champ converti en entier ?
Merci d'avance pour votre aide...
Salut,
Pourquoi tu ne rajouterais pas un (preceeding) Load avant ton SQL select afin de pouvoir filtrer en utilisant la fonction Date#() pour interpreter le champ texte contenant la date?
LOAD
NUM,
DTEX,
CHP1,
CHP2,
MNT,
WHERE
CHP1='280'
AND Len(DTEX)>0
AND Match(CHP2,'130','650')
AND Date#(DTEX,'Le format de ta date ')>=$(ANNEE_DEB);
SQL Select
FROM
...
EDIT: rajout d'un AND avant Date#()
Autre gourde: enlever la virgule après MNT
Antoine
Bonjour et merci de vous intéresser à mon cas
Avec SELECT *, j'ai un erreur de lecture ODBC
avec un SELECT seul, j'ai 'dans l'instruction select, un mot est mal orthographié.....'
Etes vous sur qu'on puisse faire un load suivi des champs, un where puis un select ?
Ca fait plusieurs fois que je tente quelque chose de similaire sans succès.
Cdt
Fred
Bonjour Fred,
J'ai testé sur une connection OLE DB et ça a marché.
Je teste avec une connection ODBC et je vous tiens au courant.
Par curiosité, êtes vous en train de faire la selection à travers l'interface?
L'orthographe est mortelle dans ce genre d'exercice.
En parallele, je vous conseille de commencer par un
Load
un seul champ avec la clause Where
suivi d'un sql select avec ce meme champ afin de faire un troubleshooting controlé.
Bien à toi,
Antoine
Oui, ça marche.
Voici le log:
ODBC CONNECT32*
20/09/2013 18:18:44: 1393 LOAD Champx
20/09/2013 18:18:44: 1394
20/09/2013 18:18:44: 1395 Where Champx = '-'
20/09/2013 18:18:44: 1397 SQL SELECT Champx
20/09/2013 18:18:44: 1398 FROM `tableY`
20/09/2013 18:19:14: 1 fields found: Champx, 12.960 lines fetched
EDIT:
Bonjour Fred,
J'ai testé sur une connection OLE DB et ça a marché.
Je teste avec une connection ODBC et je vous tiens au courant.
Par curiosité, êtes vous en train de faire la selection à travers l'interface?
L'orthographe est mortelle dans ce genre d'exercice.
En parallele, je vous conseille de commencer par un
Load
un seul champ avec la clause Where
suivi d'un sql select avec ce meme champ afin de faire un troubleshooting controlé.
Bien à toi,
Antoine
Bonjour et merci beaucoup
Effectivement en ajoutant les champs un à un, je n'ai pas eu de plantage.
En question supplémentaire, je me demande s'il est possible de mettre le filtre dans le select. Ce qui permettrait, j'imagine, de faire faire le boulot par le moteur SQL (qui sera ORACLE à terme).
Merci encore
Fred
Avec plaisir.
Oui, le filtre est possible dans le select, dans la même logique, après le
From 'tableY'
Where Champx = '-'
Pour des operations plus avancées, il faut certe alors respecter la nomenclature SQL.
Bonne change
Antoine
Salut Fred,
Avez-vous réussi?
Cordialement,
Antoine
Salut
Oui tout s'alimente correctement. Merci beaucoup.
Je charge la mule petit à petit en faisant un maximum de filtres dans le SELECT. Comme c'est un traitement de nuit et qu'il y beaucoup de lignes, je fais que le moteur Oracle fasse le maximum.
Fred