4 Replies Latest reply: Nov 5, 2014 9:21 AM by SOULEIMANE BELARIBI RSS

    Échec de lecture OLEDB et jointure

      Bonjour,

      je souhaiterais savoir ou est l'erreur dans mon code!!
      Je souhaiterais joindre deux tables pour créer un 3 champs à partir des deux tables.

      lorsque j'essaye de déboguer, il y a cette erreur qui s'affiche

      Échec de lecture OLEDB

      Échec de lecture OLED

      SQL SELECT  "DOC_DATE",

                  "DEP_CODE",

                  "DEV_CODE",

                  "DIV_CODE",

      FROM ICP.dbo.DOCUMENTS;

       

      J'ai enlevé quelques colonnes dans ce script parce qu'il y a beaucoup de colonnes.

       

      Je souhaite créer le Champ QTE, POIDS, FRAIS1, voila mon code en entier:

       

      /*

      if([DOC_TYPE] = 'V',if([DOC_STYPE] = 'Cops Team','Yes','No') ) as [If static error is corp ops responsible]

      =If (DOC_TYPE ='V', 'Distinction',  If (Average>=60, 'Firs Class', If(Average>=50,'Second Class','fail')))

      If([Working Status] = 'Consultant' AND wildmatch([Location],'3PP*'),'Offshore Consultant',

       

      If([Working Status] = 'Consultant' AND not wildmatch([Location],'3PP*','Onshore Consultant',[Working Status]))

       

      )as YourField

      // VENTES

      If([DOC_TYPE] = 'V' AND wildmatch([DOC_STYPE],'P'),'Pro-forma',

      If([DOC_TYPE] = 'V' AND wildmatch([DOC_STYPE]),'D','Devis'),

      If([DOC_TYPE] = 'V' AND wildmatch([DOC_STYPE]),'C','Commandes'),

      If([DOC_TYPE] = 'V' AND wildmatch([DOC_STYPE]),'B','Bons de Livraison'),

      If([DOC_TYPE] = 'V' AND wildmatch([DOC_STYPE]),'R','Bons de Retour'),

      If([DOC_TYPE] = 'V' AND wildmatch([DOC_STYPE]),'F','Factures'),

      If([DOC_TYPE] = 'V' AND wildmatch([DOC_STYPE]),'1','Factures Financières'),

      If([DOC_TYPE] = 'V' AND wildmatch([DOC_STYPE]),'A','Avoirs'),

      If([DOC_TYPE] = 'V' AND wildmatch([DOC_STYPE]),'0','Avoirs Financiers'),

       

      // ACHAT

      If([DOC_TYPE] = 'A' AND wildmatch([DOC_STYPE]),'D','Demandes de Prix'),

      If([DOC_TYPE] = 'A' AND wildmatch([DOC_STYPE]),'C','Commandes'),

      If([DOC_TYPE] = 'A' AND wildmatch([DOC_STYPE]),'B','Bons de Réceptions'),

      If([DOC_TYPE] = 'A' AND wildmatch([DOC_STYPE]),'R','Bons de Retour'),

      If([DOC_TYPE] = 'A' AND wildmatch([DOC_STYPE]),'F','Factures'),

      If([DOC_TYPE] = 'A' AND wildmatch([DOC_STYPE]),'1','Factures Financières'),

      If([DOC_TYPE] = 'A' AND wildmatch([DOC_STYPE]),'A','Avoirs'),

      If([DOC_TYPE] = 'A' AND wildmatch([DOC_STYPE]),'0','Avoirs Financiers'),

      ) as 'Sous type de doc.'

      */       

      DIM_DOCUMENTS :

      LOAD     Month ("DOC_DATE") as Mois,

              Year ("DOC_DATE") as Année,

              date ("DOC_DATE") as Date,

              "DOC_TYPE",

              "DOC_STYPE",

              If(DOC_TYPE = 'A', 'Achat', if(DOC_TYPE = 'V', 'Ventes')) as Type_de_doc,

      /*Sous types de documents*/

              If(DOC_TYPE = 'V',

                if(DOC_STYPE = 'P', 'Pro-forma',

                if(DOC_STYPE = 'D', 'Devis',

                if(DOC_STYPE = 'C', 'Commandes',

                if(DOC_STYPE = 'B', 'Bons de Livraison',

                if(DOC_STYPE = 'R', 'Bons de Retour',

                if(DOC_STYPE = 'F', 'Factures',

                if(DOC_STYPE = '1', 'Factures Financières',

                if(DOC_STYPE = 'A', 'Avoirs',

                if(DOC_STYPE = '0', 'Avoirs Financiers',

                ))))))))),

                if(DOC_TYPE =  'A',

                if(DOC_STYPE = 'D', 'Demandes de Prix',

                if(DOC_STYPE = 'C', 'Commandes',

                if(DOC_STYPE = 'B', 'Bons de Réceptions',

                if(DOC_STYPE = 'R', 'Bons de Retour',

                if(DOC_STYPE = 'F', 'Factures',

                if(DOC_STYPE = '1', 'Factures Financières',

                if(DOC_STYPE = 'A', 'Avoirs',

                if(DOC_STYPE = '0', 'Avoirs Financiers')

                ))))))))

                ) as Sous_Type_de_doc,

              "DEP_CODE",

              "DEV_CODE",

              "DEV_CODE",

              "DIV_CODE",

              "DOC_DT_PRV",

              "DOC_EN_TTC",

              "DOC_ETAT",

              "DOC_NUMERO",

              "DOC_PIECE",

              "DOC_TX_DEV",

              "DOC_TXRFAC",

              "NAT_CODE",

              "PAY_CODE",

              "PCF_CODE",

              "PCF_PAYEUR",

              "PCF_REMMIN",

              "PCF_REMVAL",

              "PRJ_CODE",

              "REG_CODE",

              "REP_CODE",

              "SAL_CODE",

              "SRV_CODE",

              "TAR_CODE";

       

      SQL SELECT  "DOC_DATE",

                  "DEP_CODE",

                  "DEV_CODE",

                  "DIV_CODE",

                  "DOC_DT_PRV",

                  "DOC_EN_TTC",

                  "DOC_ETAT",

                  "DOC_NUMERO",

                  "DOC_PIECE",

                  Type_de_doc,

                  Sous_Type_de_doc,

                  "DOC_STYPE",

                  "DOC_TX_DEV",

                  "DOC_TXRFAC",

                  "DOC_TYPE",

                  "NAT_CODE",

                  "PAY_CODE",

                  "PCF_CODE",

                  "PCF_PAYEUR",

                  "PCF_REMMIN",

                  "PCF_REMVAL",

                  "PRJ_CODE",

                  "REG_CODE",

                  "REP_CODE",

                  "SAL_CODE",

                  "SRV_CODE",

                  "TAR_CODE"

      FROM ICP.dbo.DOCUMENTS;

       

      TmpTableDoc :

      Load "DOC_STYPE",

            "DOC_NUMERO"

      FROM DOCUMENTS;

      Join (TmpTableDoc)

      Load "DOC_NUMERO",

           "LIG_QTE"

      From LIGNES;

      Inner Join

      LOAD *,

      If(Match(DOC_STYPE ,'A', '0', 'R'),-(LIG_QTE),LIG_QTE) as 'Qte',

      If(Match(DOC_STYPE ,'A', '0', 'R'),-(LIG_QTE * L.LIG_POIDSN),(LIG_QTE * L.LIG_POIDSN)) as 'Poids',

      If(Match(DOC_STYPE ,'A', '0', 'R'),-(LIG_FRAIS * LIG_QTE),LIG_FRAIS * LIG_QTE) as 'Frais1'

      Resident;

       

       

      Je vous remercie par avance

        • Re: Échec de lecture OLEDB et jointure
          Ulrich COUEGNOUX

          Bonjour

           

          Le pb est dans ton SQL Select : les champs Type_de_doc et Sous_Type_de_doc sont définis dans ton LOAD, ils ne viennent pas de la table DOCUMENTS, tu dois supprimer ces 2 lignes dans ton script SQL.

           

          SQL SELECT  "DOC_DATE",

                      "DEP_CODE",

                      "DEV_CODE",

                      "DIV_CODE",

                      "DOC_DT_PRV",

                      "DOC_EN_TTC",

                      "DOC_ETAT",

                      "DOC_NUMERO",

                      "DOC_PIECE",

                      "DOC_STYPE",

                      "DOC_TX_DEV",

                      "DOC_TXRFAC",

                      "DOC_TYPE",

                      "NAT_CODE",

                      "PAY_CODE",

                      "PCF_CODE",

                      "PCF_PAYEUR",

                      "PCF_REMMIN",

                      "PCF_REMVAL",

                      "PRJ_CODE",

                      "REG_CODE",

                      "REP_CODE",

                      "SAL_CODE",

                      "SRV_CODE",

                      "TAR_CODE"

          FROM ICP.dbo.DOCUMENTS;

           

           

          En espérant avoir bien compris

          A+

          • Re: Échec de lecture OLEDB et jointure

            Je vous remercie pour votre réponse, je les ai enlevé et c'est la même erreur qui s'affiche.
            j'ai enlevé les doubles cote des champs dans le select mais c'est pareil

            lorsque j’arrête le débogage, et je sélectionne les champs a afficher par exemple, beh, le Mois, l'année et la date que j'ai crée sont vides!!

              • Re: Échec de lecture OLEDB et jointure
                Ulrich COUEGNOUX

                Le champ DOC_DATE est bien un format date ?

                J'avais eu le pb il y a quelques années : un champ qui paraissait date, mais qui ne l'était pas.

                La formule MAKEDATE() m'a permis de corriger : il faut "découper" les données, pour pouvoir mettre Année, Mois, Jour entre parenthèse.

                  • Re: Échec de lecture OLEDB et jointure

                    oui DOC_DATE est bien au format datetime, il est à ce format  2011-01-13 00:00:00.000, Ce que je cherche est d'avoir que l'année, le mot et la date (2011-01-13)

                    Mais quand je débogue, le problème Qlikview ne bloque pas sur la partie Load, mais celle du SELECT
                    J'ai essayé d'enlever DOC_DATE, juste pour vois, il m'affiche qu'il y a DOC_DATE qui manque. lorsque je le rajoute il y a l'erreur Échec de lecture OLEDB et jointure.