Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Conversion dans un SELECT

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...

8 Replies
Anonymous
Not applicable
Author

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

Not applicable
Author

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

Anonymous
Not applicable
Author

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

Anonymous
Not applicable
Author

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

Not applicable
Author

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

Anonymous
Not applicable
Author


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

Anonymous
Not applicable
Author


Salut Fred,

Avez-vous réussi?

Cordialement,


Antoine

Not applicable
Author

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