Qlik Community

QlikView App Development

Discussion Board for collaboration related to QlikView App Development.

Announcements
The #1 reason QlikView customers adopt Qlik Sense is a desire for a modern BI experience. Read More
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Not applicable

Execute a Macro inside load script

Hi All,

is possible execute an Qlikview macro inside a load script?

Tks

16 Replies
Highlighted
Partner
Partner

Thanks for your suggestion.

Finally I've decided to create a .bat file which calls the QV document, adding a flag variable that tells the document to generate the xml files, reload the document, save it and finally close it.

Now works easily. Thanks!!

Highlighted
Not applicable

HI Gordon,

  Hope u r fine,I used the code as placed in  your example

Function MonthDiff (startdate, enddate)

' return number of months between two dates

If IsDate(startdate) and IsDate(enddate) Then

MonthDiff = DateDiff("m", startdate, enddate)

End If

End Function

and try to invoke it in my script as follows

LET vExecFunction = MonthDiff(Date(AddMonths(Today(),-4)),Today());

and debug the script, I find vExecFunction variable holding null value

could you please let me know why it so.

Highlighted
Not applicable

hi,

I have tried several things to make this work but it is not working. I have a funktion that should automatically send a mail.

I call my function in the load script like this.

let mail = sendMailTest();

this works fine if I open qv and press the load script button, but when I load the qvw in the management console it doesnt work can anyone explain me the reason why??

regards,

MT

Highlighted
Creator II
Creator II

Hi MT,

Ive probably testing the same function. From the loading script a macro should be started and mail incl a pdf should be sent. I dont know why this is such a pain..

I heard sth about the OnPostReload Triggers. Maybe somehow it will work through triggers.

Unfortunately I dont find this "OnPost" trigger.

On execution trigger doesnt work in my case...

cheers chesterluck

Highlighted
Not applicable

Srinivasan Rangaswamy

I am having a code which execute at the script and display the message at the vb Script (Both are haveing issue at the call code any Tought process/Guidence)



1. I am loading at the script and

2 showing the completed time at the vbscript message box.


here is my peace of code.Can any one of you help me out on this.


QV Script


LET vStart = num(now());

Store * from  FactTemp into FactTemp.qvd (qvd) ;

LET vRunTime = interval(now() - $(vStart),'mm:ss');

call alp(vRunTime) ;


VB Macro

function alp(vRunTime)

msgbox vRunTime;

end function


or
   consider this example

QV script


call alp(20)

vb script


function alp(vRunTime)

msgbox vRunTime

end function

Highlighted
Not applicable

Hey Gordon Savage

I think the only reason why your example isn't working within my test application is because my Qlikview isn't recognizing DateDiff as a valid function. Despite that, your logic makes complete sense. In order to use the Macro Function in the Load Script, you call it like the following in the Load Script

Let vMonths = MonthDiff( Today(), Today() - 600)

I researched other sources and confirmed that you cannot utilize Macro Functions within Expressions on the front-end of Qlikview. In other words, I cannot utilize MonthDiff() in a Text Box.

This post contains an alternative function which worked in my application; it utilizes the same method, but a different macro function, which is why I believe the only reason MonthDiff() doesn't work is because of DateDiff() (Call VBA macro function from the load script | Lucian Cotea)

//Create this function in the Module

function Inc(Value)

Inc = Value+1

end function

//Use in Load Script

LET _VAR1 = Inc(1);

Last thing, there is no need to create a trigger for this macro in the document settings because it is a function. If it were a Sub, we'd need to create a trigger as mentioned previously.

I hope this helps!

Highlighted
Contributor III
Contributor III

Hi, Can I piggyback onto this query.

I've created a function that works okay (see attached screenshots), but was hoping to have it execute whilst the script loads. Have I done it properly?

Thanks