Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Calling a script from a macro

Hi Everyone,

I need to provide a QV solution for the users which does the following:

1. gets a value from a selector (say VALUE)

2. deletes a set of rows from a sql server DB (delete from table where field = VALUE)

3. deletes the same set of data from the relevant qvd file

4. reloads the data.

For doing so, I have thought I could use a button with a macro and I have found out how to connect to the sql server DB and delete the rows.

However, I don't know how to reflect these changes on the .qvd file as well as I don't see a way of calling the store command from within a macro. Is this possible?

Any other (maybe simpler) solution anyone can think of would be much appreciated.

Thanks and Best Wishes,

Melania

4 Replies
jagan
Luminary Alumni
Luminary Alumni

Hi,

Check this link hope it helps you.

http://community.qlik.com/docs/DOC-2784

Regards,

Jagan.

Not applicable
Author

Hi Jagan,

that's cool, thanks a mil.

I also need to delete some data from the QVD file and I was wondering if it's possible to:

1. delete the data from the QV logical tables in memory with something like

SET Result = ActiveDocument.DynamicUpdateCommand ("DELETE Table FACT Where FAC_id_extraction = 20120316114852")

and then

2. execute a store command to store the content of the table (after deletion) into the qvd file but I haven't ound any examples of calling a QV script from within a macro (whereas the opposite is quite common - i.e. calling a macro from a script). Is there any chance I can invoke a store command from within a macro?

Thanks a million,

Melania

jagan
Luminary Alumni
Luminary Alumni

Hi,

I don't think it is easier, but we can do this by saving the deleted records IDs in a CSV or Excel file in macro, and during reload exclude this values by using Except().  Check script below

DeletedIDs:

LOAD

     FAC_id_extraction

FROM FileName;

DATA:

LOAD

*

FROM FileName.qvd (qvd)

WHERE NOT EXISTS(FAC_id_extraction);

STORE DATA INTO FileName.qvd;

DROP TABLE DeletedIDs;

Regards,

Jagan.

Not applicable
Author

Hi Jagan,

I was thinking about calling the Releoad method from within the macro.

However, this forces the re-execution of the entire reload script. Can I execute just a portion of the reload script and not the entire one?

If the answer is not, then I think I'll write a macro that does that:

- delete the rows from the SQL Server DB table

- execute a Reload from the macro

I will also have to modify the script to perform an insert/delete/update operation (as explained in the QV reference manual - using qvd for incremental load - case 4).

I was just trying to avoid to re-execute the entire script just to align the content of a qvd file with the database table after a few rows have been deleted.

Thanks a million and Best Wishes,

Melania