9 Replies Latest reply: Sep 26, 2013 8:39 AM by Frederic Gallard RSS

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

        • Re: Conversion dans un SELECT
          Antoine Frangieh

          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

            • Re: Conversion dans un SELECT

              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

                • Re: Conversion dans un SELECT
                  Antoine Frangieh

                  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

                    • Re: Conversion dans un SELECT
                      Antoine Frangieh

                      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