Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
cancel
Showing results for 
Search instead for 
Did you mean: 
darrellbutler
Creator
Creator

Help with Looping Construct

I want to execute the following piece of code several times based on the number of customer orders for a given period. These customer order numbers will be stored in variables (not shown in code snippet)

What looping construct can I use to dynamically calculate the variables in step 2 and then generate the qvd table in step 3 .

//need to loop through this code to create variables

yield:

LOAD ORDER_NO,

     VATS_MADE,

     NUMBER_OF_BLOCKS,

     NUMBER_OF_BLOCKS / VATS_MADE as BLOCKS_PER_VAT;

LOAD mid(ORDER_NO, 2,6) as ORDER_NO ,

     VATS_MADE,

     NUMBER_OF_BLOCKS

FROM

G:\2_QVDLayer\Creamery_Production\FULL_CREAMERY_PRODUCTION_YIELD.qvd

(qvd);

//STEP 2 store variables based on data extracted from step above

LET vNoBlockPerVat = FieldValue('BLOCKS_PER_VAT',1);

LET vNoOfVats      = FieldValue('VATS_MADE', 1);

LET vOrder         = FieldValue('ORDER_NO',1) ;

DROP Table yield;

//STEP 3 using variables populated above create a qvd

VATS:

LOAD ORDER_NO,

         VATS,

         VATS * $(vNoBlockPerVat) as STARTING_BLOCK_NUMBER;

LOAD '$(vOrder)' as ORDER_NO,

          recno() as VATS    

          AutoGenerate $(vNoOfVats) ;

   

STORE * from VATS into g:\2_QVDLayer\vats; 

Concatenate

LOAD * From   g:\2_QVDLayer\vats;

Many thanks for any help offered.

Darrell

1 Solution

Accepted Solutions
bbi_mba_76
Partner - Specialist
Partner - Specialist

Hi,

maybe like this:

Tb1:

SQL select....

    ;

   

    LET v_rowTemp = NoOfRows('Tb1'); // get the total number of rows in table

   

    for i=1 to $(v_rowTemp)    

   

        LET vBLOCKS_PER_VAT = peek('BLOCKS_PER_VAT',$(i)-1,'Tb1');

        .....

     Tb2:

        SQL

            Select ...

            WHERE

                  vBLOCKS_PER_VAT = '$(vBLOCKS_PER_VAT)'

               ;

next

View solution in original post

2 Replies
bbi_mba_76
Partner - Specialist
Partner - Specialist

Hi,

maybe like this:

Tb1:

SQL select....

    ;

   

    LET v_rowTemp = NoOfRows('Tb1'); // get the total number of rows in table

   

    for i=1 to $(v_rowTemp)    

   

        LET vBLOCKS_PER_VAT = peek('BLOCKS_PER_VAT',$(i)-1,'Tb1');

        .....

     Tb2:

        SQL

            Select ...

            WHERE

                  vBLOCKS_PER_VAT = '$(vBLOCKS_PER_VAT)'

               ;

next
darrellbutler
Creator
Creator
Author

Grazie ! Many Thanks this excellent !