12 Replies Latest reply: Sep 6, 2011 5:34 AM by Luca Cavallari RSS

    combining two scripts to 1

    Aissam Boumejjane

      Hi There,

       

      I'm quit new to qlikview and therefore still struggeling with "advanced" scripting.

       

      if(Interval(Date(Date#(POD,'DD-MM-YYYY hh:mm'), 'DD-MM-YYYY hh:mm') - date(Date#(DEP, 'DD-MM-YYYY hh:mm'),'DD-MM-YYYY hh:mm'), 'd hh:mm') <= 8,'ON TIME','LATE') as Status.


      if(
      Interval(Date(Date#(POD, 'DD-MM-YYYY hh:mm'), 'DD-MM-YYYY hh:mm') -date(Date#(DEP, 'DD-MM-YYYY hh:mm'), 'DD-MM-YYYY hh:mm'), 'd hh:mm') <= 7,'ONTIME','LATE') as StatusII.


      How can I combine both scripts to 1 script/field? Suppose I want to state that shipments to destination [which is the fieldname] “JFK” have a maximum of 8 days and shipments to “DBX” have a maximum of 7 days. Should I use another if statement?

       

      I want to do this so I don’t have to create a field for each specific ‘requirement’.

       

      Thanks in advance!!!

       

      Regards,

       

      iSam

        • combining two scripts to 1
          Luca Cavallari

          If think you could use another IF inside that expression, instead of <=8 you could put:

           

          ...<= IF( destination="JFK",8,

                    IF( destination="DBX",7........))   , 'ON TIME','LATE') as STATUS.

           

           

          so now you can have only one STATUS field for each destitnation.

          let me know if it works ok for you

           

           

          (i think you can make your code even easyer, you dont need all that 'Date(date#(....))' functions to format your dates,

          Date#() is to format 'text' into a date, Date() is to format a numeric/date field)

            • Re: combining two scripts to 1
              Aissam Boumejjane

              Thanks for your help:  Unfortunately Qlikview says it can’t find the field name “BJS”. However when I look in the data source and in the qlikview application “BJS” does exits.

               

              What am I doing wrong?

               

               

               

              if(interval(Date#(POD, 'DD-MM-YYYY hh:mm'), 'DD-MM-YYYY') - Date#(DEP, 'DD-MM-YYYY hh:mm'),'DD-MM-YYYY'), 'D'<= If(="BJS", 8, If(="IZM,AMS", 7)),  'OnTime', 'Late' as Status,

                • combining two scripts to 1
                  Luca Cavallari

                  Sorry, when you compare a string you have to use a single ' and not ",

                  i wrote wrong before, you should write the destitnation like this 'BJS'.

                    • Re: combining two scripts to 1
                      Aissam Boumejjane

                      Thanks a lot for your help!!!! It seems to be OK now!!

                        • Re: combining two scripts to 1

                          Ich werde ab  05.09.2011 nicht im Büro sein. Ich kehre zurück am

                          23.09.2011.

                           

                          Ich werde Ihre Nachrichten nach meiner Rückkehr beantworten.

                           

                           

                           

                          Diese E-Mail kann Betriebs- oder Geschäftsgeheimnisse oder sonstige vertrauliche Informationen enthalten. Sollten Sie diese E-Mail irrtümlich erhalten haben, ist Ihnen eine Verwertung des Inhalts, eine Vervielfältigung oder Weitergabe der E-Mail ausdrücklich untersagt.

                          Bitte benachrichtigen Sie uns und vernichten Sie die empfangene E-Mail. Vielen Dank!

                        • Re: combining two scripts to 1
                          Aissam Boumejjane

                          I think cheered too early L. When I add the new field to a chart, it seems to be a miss calculation. I get to different results:

                           

                           

                           

                          One charts says 74 onTime, another say 51 ontime :S. It’s confussing.

                           

                           

                           

                          This is the script for Status2:     if(Interval(Date(Date#(POD, 'DD-MM-YYYY hh:mm'), 'DD-MM-YYYY') - Date(Date#(DEP, 'DD-MM-YYYY hh:mm'), 'DD-MM-YYYY'), 'D')<=7, 'OnTime', 'Late') as Status2,

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                          And this is the expression for StatusX:  if(interval(Date(Date#(POD, 'DD-MM-YYYY hh:mm'), 'DD-MM-YYYY') - Date(Date#(DEP, 'DD-MM-YYYY hh:mm'),'DD-MM-YYYY'), 'D')<= If(Re: combining two scripts to 1='BJS', 8, If(Re: combining two scripts to 1='IZM' or 'AMS', 7)),  'OnTime', 'Late') as StatusX,  //the one you help me with J

                           

                           

                           

                          Both of the above charts have the same chart expression:  Count({<Destination={'IZM', 'AMS'}>} TransitTime +1) 

                           

                           

                           

                           

                           

                          Is the problem within the chart expression or script?

                           

                           

                           

                          Thanks for all your help!!!

                           

                           

                           

                          iSam

                            • Re: combining two scripts to 1

                              Ich werde ab  05.09.2011 nicht im Büro sein. Ich kehre zurück am

                              23.09.2011.

                               

                              Ich werde Ihre Nachrichten nach meiner Rückkehr beantworten.

                               

                               

                               

                              Diese E-Mail kann Betriebs- oder Geschäftsgeheimnisse oder sonstige vertrauliche Informationen enthalten. Sollten Sie diese E-Mail irrtümlich erhalten haben, ist Ihnen eine Verwertung des Inhalts, eine Vervielfältigung oder Weitergabe der E-Mail ausdrücklich untersagt.

                              Bitte benachrichtigen Sie uns und vernichten Sie die empfangene E-Mail. Vielen Dank!

                              • combining two scripts to 1
                                Luca Cavallari

                                the IF expression should be like this:

                                If(destination='IZM' or destination='AMS', 7)       you have to compare the field everytime.

                                 

                                i think it's correct the result of your expression, because in the first case (Status2) you are checking only what is <=7 and most is on time,

                                in the second case you are also checking what is <=8 for some destination, so it is logical to me that you have more  'Late' results...

                              • Re: combining two scripts to 1

                                Ich werde ab  05.09.2011 nicht im Büro sein. Ich kehre zurück am

                                23.09.2011.

                                 

                                Ich werde Ihre Nachrichten nach meiner Rückkehr beantworten.

                                 

                                 

                                 

                                Diese E-Mail kann Betriebs- oder Geschäftsgeheimnisse oder sonstige vertrauliche Informationen enthalten. Sollten Sie diese E-Mail irrtümlich erhalten haben, ist Ihnen eine Verwertung des Inhalts, eine Vervielfältigung oder Weitergabe der E-Mail ausdrücklich untersagt.

                                Bitte benachrichtigen Sie uns und vernichten Sie die empfangene E-Mail. Vielen Dank!

                              • Re: combining two scripts to 1

                                Ich werde ab  05.09.2011 nicht im Büro sein. Ich kehre zurück am

                                23.09.2011.

                                 

                                Ich werde Ihre Nachrichten nach meiner Rückkehr beantworten.

                                 

                                 

                                 

                                Diese E-Mail kann Betriebs- oder Geschäftsgeheimnisse oder sonstige vertrauliche Informationen enthalten. Sollten Sie diese E-Mail irrtümlich erhalten haben, ist Ihnen eine Verwertung des Inhalts, eine Vervielfältigung oder Weitergabe der E-Mail ausdrücklich untersagt.

                                Bitte benachrichtigen Sie uns und vernichten Sie die empfangene E-Mail. Vielen Dank!

                              • Re: combining two scripts to 1

                                Ich werde ab  05.09.2011 nicht im Büro sein. Ich kehre zurück am

                                23.09.2011.

                                 

                                Ich werde Ihre Nachrichten nach meiner Rückkehr beantworten.

                                 

                                 

                                 

                                Diese E-Mail kann Betriebs- oder Geschäftsgeheimnisse oder sonstige vertrauliche Informationen enthalten. Sollten Sie diese E-Mail irrtümlich erhalten haben, ist Ihnen eine Verwertung des Inhalts, eine Vervielfältigung oder Weitergabe der E-Mail ausdrücklich untersagt.

                                Bitte benachrichtigen Sie uns und vernichten Sie die empfangene E-Mail. Vielen Dank!

                              • Re: combining two scripts to 1

                                Ich werde ab  05.09.2011 nicht im Büro sein. Ich kehre zurück am

                                23.09.2011.

                                 

                                Ich werde Ihre Nachrichten nach meiner Rückkehr beantworten.

                                 

                                 

                                 

                                Diese E-Mail kann Betriebs- oder Geschäftsgeheimnisse oder sonstige vertrauliche Informationen enthalten. Sollten Sie diese E-Mail irrtümlich erhalten haben, ist Ihnen eine Verwertung des Inhalts, eine Vervielfältigung oder Weitergabe der E-Mail ausdrücklich untersagt.

                                Bitte benachrichtigen Sie uns und vernichten Sie die empfangene E-Mail. Vielen Dank!