Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
delphinewalter
Contributor III
Contributor III

Master Calendar "Error in expression: ')' expected"

Bonjour, 

 

j'ai un problème avec la création d'un master calendar qui me retourne l'erreur "Error in expression:
')' expected". Le script est le suivant : 

CalendarTemp:
LOAD
	Max(CalendarDate) AS DateMax,
	Min(CalendarDate) AS DateMin
RESIDENT Ventes;

LET vMaxDate = FieldValue('DateMax', 1);
LET vMinDate = FieldValue('DateMin', 1) -1; // Needed to control the minum date autogenerated in Sales table is included in the MasterCalendar

DROP TABLE CalendarTemp;

TempCalendar: 
LOAD ($(vMinDate) + IterNo() -1) As Num, 
     Date($(vMinDate) + IterNo() - 1) as TempDate 
     AutoGenerate 1 While ($(vMinDate) + IterNo() -1<=$(vMaxDate)); 
noconcatenate

MasterCalendar:
LOAD TempDate AS CalendarDate, 
     week(TempDate) As CalendarWeek, 
     Year(TempDate) As CalendarYear, 
     Month(TempDate) As CalendarMonth, 
     Day(TempDate) As CalendarDay, 
     date(monthstart(TempDate),'MMM-YYYY') as MonthYear, 
     //num(date(monthstart(TempDate))) as MonthYear,
     Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as WeekYear, 
     WeekDay(TempDate) as WeekDay ,
     InYearToDate(date(TempDate),date($(vMaxDate)),0) as YTD_flag,
     InYearToDate(date(TempDate),date($(vMaxDate)),-1) as LY_flag
Resident TempCalendar Order By TempDate ASC;
Drop Table TempCalendar;

le passage qui pose problème et génère l'erreur est le suivant :

TempCalendar: 
LOAD ($(vMinDate) + IterNo() -1) As Num, 
     Date($(vMinDate) + IterNo() - 1) as TempDate 
     AutoGenerate 1 While ($(vMinDate) + IterNo() -1<=$(vMaxDate)); 

ce que je ne comprends pas, c'est que j'utilise ce bout de code à l'identique dans un autre fichier qlikview, et que je n'ai aucun problème avec.  en regardant sur le forum, j'ai vu que certains proposaient de mettre $(=vMinDate) ou '$(vMinDate)' mais ça ne fonctionne pas non plus. 

Merci pour vos idées ! 😊

9 Replies
delphinewalter
Contributor III
Contributor III
Author

je l'ai copié dans un 3e fichier, et ça ne fonctionne pas non plus, je ne comprends toujours pas pourquoi ça fonctionne dans un seul de mes fichiers et pas les autres.
Merci pour votrr aide !
Seyko
Partner - Creator
Partner - Creator

Bonjour,

J'ai fait le test avec un champ type date totalement aléatoire (sous Qlik Sense) et cela fonctionne parfaitement (cf. pièce jointe).  As-tu essayé de faire le test avec un autre champ de type date autre que le CalendarDate?

cordialement.

Excuse my english, i'm french!
delphinewalter
Contributor III
Contributor III
Author

bonsoir,

je n'ai qu'un champ de date dans ma table.
j'ai eu l'idée de tester en retirant la ligne "Drop Table TempCalendar;" et ça fonctionne. Ca n'explique toujours pas pourquoi dans un document le script complet fonctionne et pas dans les deux autres.
je suis sous Qlikview.
Seyko
Partner - Creator
Partner - Creator

J'ai refait le test sous QlikView (cf. pièce jointe), et cela fonctionne. 

cordialement.

Excuse my english, i'm french!
delphinewalter
Contributor III
Contributor III
Author

bonjour Seyko, 

merci pour ta réponse. c'est justement ça mon problème : un même code fonctionne sur un fichier et pas sur l'autre.

Je te mets ici les deux codes plus complets :

1. script fonctionnant :

temp_entete:
LOAD distinct num#(TIERS_code) as TIERS_code, 
       V_num_fact, 
       V_annee, 
       V_mois,
       V_type,
       V_cond_paiement
  FROM [C:\Users\...\ENTETE_fact.qvd] (qvd);
  
temp_TRANSACTIONS:
  LOAD [N° d'écriture] as V_num_fact, 
     -[Montant - Solde]*[% TVA]/100 as V_TVA, 
     [Axe analytique 2] as V_cat_vente, 
     upper(Article) as ART_code, 
     Quantité as V_qte, 
     -[Montant - Solde] as V_CA_HT,
     -[Montant - Solde]/Quantité as V_PNHT,
     date(Date) as CalendarDate
FROM
[C:\Users\...\TransactionsCompta.xlsx]
(ooxml, embedded labels, table is Sheet1) where not Match(Article,'');
left Join
  LOAD TIERS_code, 
       V_num_fact, 
       V_annee, 
       V_mois,
       V_type,
       V_cond_paiement
  Resident temp_entete;
DROP Table temp_entete;

NoConcatenate
Table_TRANSACTION:
  LOAD V_num_fact,
       V_TVA,
       V_cat_vente,
       ART_code,
       V_qte,
       V_CA_HT,
       V_PNHT,
       TIERS_code,
       V_annee,
       V_mois,
       V_type,
       date(CalendarDate) as CalendarDate,
       V_cond_paiement
   Resident temp_TRANSACTIONS Where not Match(TIERS_code,'');
Concatenate
  LOAD R_num_fact as V_num_fact, 
       R_annee as V_annee, 
       R_mois as V_mois, 
       R_CAht as V_CA_HT, 
       R_qte as V_qte, 
       R_ART_code as ART_code, 
       R_TVA as V_TVA, 
       num#(R_TIERS_code) as TIERS_code,
       date(CalendarDate) as CalendarDate,
       R_cond_paiement as V_cond_paiement
  FROM [C:\Users\...\REMISES_sur_FACTURES.qvd] (qvd) 
       Where not Match(R_TIERS_code,'');
Concatenate // rajout des ventes eshop
  LOAD V_num_fact, 
       V_qte, 
       V_PNHT, 
       V_CA_HT, 
       V_mois, 
       V_annee,
       TIERS_code, 
       V_cat_vente, 
       V_TVA, 
       V_type, 
       upper(ART_code) as ART_code,
       date#(date(CalendarDate)) as CalendarDate,
       '00 - Comptant' as V_cond_paiement
  FROM [C:\Users\...\ESHOP.qvd] (qvd);
Concatenate // rajout des ventes boutique
  LOAD num#(TIERS_code) as TIERS_code, 
       V_num_fact, 
       V_mois, 
       V_annee, 
       V_qte, 
       upper(ART_code) as ART_code, 
       V_PNHT, 
       V_CA_HT, 
       V_PGHT, 
       V_cat_vente, 
       V_TVA, 
       'Écriture de vente' as V_type,
       date#(date(CalendarDate)) as CalendarDate,
       '00 - Comptant' as V_cond_paiement
  FROM [C:\Users\...\Tiller.qvd](qvd);

STORE Table_TRANSACTION into Table_TRANSACTION.qvd;
DROP Table temp_TRANSACTIONS;

CalendarTemp:
LOAD
	Max(CalendarDate) AS DateMax,
	Min(CalendarDate) AS DateMin
RESIDENT Table_TRANSACTION;

LET vMaxDate = FieldValue('DateMax', 1);
LET vMinDate = FieldValue('DateMin', 1) -1; // Needed to control the minum date autogenerated in Sales table is included in the MasterCalendar

DROP TABLE CalendarTemp;

TempCalendar: 
LOAD $(vMinDate) + IterNo()-1 As Num, 
     Date($(vMinDate) + IterNo() - 1) as TempDate 
     AutoGenerate 1 While ($(vMinDate) + IterNo() -1<=$(vMaxDate)); 
noconcatenate

MasterCalendar:
LOAD TempDate AS CalendarDate, 
     week(TempDate) As CalendarWeek, 
     Year(TempDate) As CalendarYear, 
     Month(TempDate) As CalendarMonth, 
     Day(TempDate) As CalendarDay, 
     date(monthstart(TempDate),'MMM-YYYY') as MonthYear, 
     Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as WeekYear, 
     WeekDay(TempDate) as WeekDay ,
     InYearToDate(date(TempDate),date($(vMaxDate)),0) as YTD_flag,
     InYearToDate(date(TempDate),date($(vMaxDate)),-1) as LY_flag
Resident TempCalendar Order By TempDate ASC;
Drop Table TempCalendar;

2. script retournant l'erreur en objet :

Ventes:
LOAD TIERS_code, 
     V_num_fact, 
     date#(date(CalendarDate)) as CalendarDate, 
     V_mois, 
     V_annee, 
     [Order Status], 
     [Item Status], 
     V_qte, 
     upper(ART_code) as ART_code, 
     V_PNHT, 
     V_CA_HT, 
     V_PGHT, 
     V_cat_vente, 
     V_TVA
FROM
[C:\Users\...\Tiller.qvd]
(qvd);

CalendarTemp:
LOAD
	Max(CalendarDate) AS DateMax,
	Min(CalendarDate) AS DateMin
RESIDENT Ventes;

LET vMaxDate = FieldValue('DateMax', 1);
LET vMinDate = FieldValue('DateMin', 1) -1; // Needed to control the minum date autogenerated in Sales table is included in the MasterCalendar

DROP TABLE CalendarTemp;

TempCalendar: 
LOAD ($(vMinDate) + IterNo() -1) As Num, 
     Date($(vMinDate) + IterNo() - 1) as TempDate 
     AutoGenerate 1 While ($(vMinDate) + IterNo() -1<=$(vMaxDate)); 
noconcatenate

MasterCalendar:
LOAD TempDate AS CalendarDate, 
     week(TempDate) As CalendarWeek, 
     Year(TempDate) As CalendarYear, 
     Month(TempDate) As CalendarMonth, 
     Day(TempDate) As CalendarDay, 
     date(monthstart(TempDate),'MMM-YYYY') as MonthYear, 
     Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as WeekYear, 
     WeekDay(TempDate) as WeekDay ,
     InYearToDate(date(TempDate),date($(vMaxDate)),0) as YTD_flag,
     InYearToDate(date(TempDate),date($(vMaxDate)),-1) as LY_flag
Resident TempCalendar Order By TempDate ASC;
Drop Table TempCalendar;

 

Le 1er script qui fonctionne utilise tiller.qvd et eshop.qvd et quand je ne prends que tiller.qvd ou que eshop.qvd, là ça ne fonctionne plus, et c'est ce que je ne comprends pas. (en gros, j'ai un fichier avec les ventes globales, un qui se concentre sur les ventes de la boutique (Tiller) et un qui se concentre sur les ventes de notre site internet (eshop)). Je ne te mets pas le 3e script car c'est la même chose, sauf qu'au lieu d'utiliser tiller.qvd, j'utilise eshop.qvd.

merci si tu as une idée ! 😊

Seyko
Partner - Creator
Partner - Creator

Bonjour Delphine,

C'est assez troublant! J'ai à nouveau refait le test avec le script "qui ne fonctionne pas" et cela marche chez moi.  C'est peut-être préférable que je fasses le test avec l'un de tes QVD (si c'est possible). Le problème prend peut-être sa source depuis le fichier.

cordialement.

Excuse my english, i'm french!
delphinewalter
Contributor III
Contributor III
Author

Bonsoir Seyko, 

je veux bien t'envoyer mon fichier, mais je n'arrive pas à le faire en message privé : je ne trouve pas où est la pièce jointe.

delphinewalter
Contributor III
Contributor III
Author

Bonjour Seyko,

je voulais juste te dire que mon script est reparti : je n'ai rien changé mais je n'ai plus le message d'erreur... Ca reste un mystère, mais au moins j'ai mon calendrier !
Seyko
Partner - Creator
Partner - Creator

Bonjour Delphine,

Cela reste assez intriguant, mais c'est une bonne nouvelle si tout fonctionne à nouveau. N'oublie donc de clôturer ton post comme résolu du coup.

cordialement.
Excuse my english, i'm french!