Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
pirotfab
Creator
Creator

boucle dans script

Bonjour,

J'essaie de recharger des qvd dans un script, mais seulement les deux dernières années

Ci-joint mon script qui ne s'arrête pas ...

Avez vous des idées ?

Merci

let vAnneeInitProdyear(today())-1;
let vAnneeMaxProd = year(today());


do while vAnneeInitProd <= vAnneeMaxProd

LOAD *
FROM
prodREEL_$(vAnneeInitProd).qvd
(
qvd);

Concatenate
LOAD *
FROM
prodOBJ_$(vAnneeInitProd).qvd
(
qvd);

let vAnneeInitProd = $(vAnneeInitProd)+1;
loop

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

‌Bonjour,

je me suis concentré sur le problème de boucle sans me préoccuper du code interne à la boucle.

essaye comme ceci:

let vAnneeInitProdyear(today())-1;
let vAnneeMaxProd = year(today());

for vAnnee=vAnneeInitProd to vAnneeMaxProd

    LOAD *
    FROM
    prodREEL_$(vAnnee).qvd
    (
qvd);

next


for vAnnee=vAnneeInitProd to vAnneeMaxProd

    Concatenate
        LOAD *
    FROM
    prodOBJ_$(vAnnee).qvd
    (
qvd);

next

View solution in original post

10 Replies
kevinchevrier
Partner - Creator III
Partner - Creator III

Bonjour Fabien,

Essaie peut-être :


Set vAnneeInitProdyear(today())-1;

Set vAnneeMaxProd = year(today());


do while vAnneeInitProd <= vAnneeMaxProd

LOAD *
FROM
prodREEL_$(vAnneeInitProd).qvd
(
qvd);

Concatenate
LOAD *
FROM
prodOBJ_$(vAnneeInitProd).qvd
(
qvd);

let vAnneeInitProd = $(vAnneeInitProd)+1;
loop

pirotfab
Creator
Creator
Author

Bonjour Kevin,

Quelle est la différence ?

Merci

kevinchevrier
Partner - Creator III
Partner - Creator III

Dans l'idée aucune. Mais peut-être qu'avec les SET ça marchera mieux...

Kevin

pirotfab
Creator
Creator
Author

Je n'ai pas vu ce détail. ^^

Apres modification, mon script s'arrête bien, cependant, mes données de la table FAIT ne sont plus chargées

Merci

sfatoux72
Partner - Specialist
Partner - Specialist

Si tu utilise SET tu auras l'expression dans ta variable et non pas le résultat de l'expression. Il faut donc utiliser LET.

Essaye ce script:

let vAnneeInitProdyear(today())-1;
let vAnneeMaxProd = year(today());

for vAnnee=vAnneeInitProd to vAnneeMaxProd

    LOAD *
    FROM
    prodREEL_$(vAnnee).qvd
    (
qvd);

    Concatenate
        LOAD *
    FROM
    prodOBJ_$(vAnnee).qvd
    (
qvd);

next

kevinchevrier
Partner - Creator III
Partner - Creator III

Set vAnneeInitProdyear(today())-1;

Set vAnneeMaxProd = year(today());


do while $(vAnneeInitProd) <= $(vAnneeMaxProd)

LOAD *
FROM
prodREEL_$(vAnneeInitProd).qvd
(
qvd);

Concatenate
LOAD *
FROM
prodOBJ_$(vAnneeInitProd).qvd
(
qvd);

let vAnneeInitProd = $(vAnneeInitProd)+1;
loop

pirotfab
Creator
Creator
Author

Bonjour,

Merci pour votre réponse.

J'ai bien les deux années qui se chargent, (en deux tables au lieu d'une seule)

ensuite différentes tables associées comme les clients se chargent aussi

mais le script ne s'arrête pas après l'achèvement, je suis obligé d'abandonner ?

Merci d'avance

sfatoux72
Partner - Specialist
Partner - Specialist

‌Bonjour,

je me suis concentré sur le problème de boucle sans me préoccuper du code interne à la boucle.

essaye comme ceci:

let vAnneeInitProdyear(today())-1;
let vAnneeMaxProd = year(today());

for vAnnee=vAnneeInitProd to vAnneeMaxProd

    LOAD *
    FROM
    prodREEL_$(vAnnee).qvd
    (
qvd);

next


for vAnnee=vAnneeInitProd to vAnneeMaxProd

    Concatenate
        LOAD *
    FROM
    prodOBJ_$(vAnnee).qvd
    (
qvd);

next

pirotfab
Creator
Creator
Author

Bonjour Sébastien,

Merci pour la réponse, cela fonctionne.

Il faut bien mettre la boucle à chaque table.

Bonne journée