Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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 ! 😊
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.
J'ai refait le test sous QlikView (cf. pièce jointe), et cela fonctionne.
cordialement.
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 ! 😊
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.
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.