Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
OmarBenSalem

Generic script to delete all tables

Hi all,

After constructing my model (tables); my main purposes were:

1) Store all tables in QVDs:

FOR i = 0 to NoOfTables()-1 

LET vTabName = TableName($(i)); 

STORE $(vTabName) into [lib://blabla/QVD/$(vTabName)$(vSaveFile).qvd] (qvd); 

NEXT i 

2) drop all the tables (after storing them in qvds) :


//drop tables

FOR j = 1 to NoOfTables()

LET vTabName2 = TableName($(j)); 

Drop table "$(vTabName2)";

NEXT j 

The problem is that the first part (storing the tables works perfectly) while the second one does not.

In fact, from the 15 tables I have, some are deleted and nearly the half ARE NOT.


I have tried :

Drop table "$(vTabName2)";

Drop table '$(vTabName2)';

Drop table $(vTabName2);

Drop table vTabName2;



Nothing works as expected...

When I try the same script with inline tables, all is deleted !


Any idea on what could be the cause of such a behaviour? Thanks

1 Solution

Accepted Solutions
agigliotti
Partner - Champion
Partner - Champion

i'm using the below script in Qlikview that works fine.

LET vL.NumTabelle = NoOfTables();

FOR j=0 to $(vL.NumTabelle)-1

 

LET vL.nomeTabella = TableName(0);

  DROP Table [$(vL.nomeTabella)];

NEXT j;

I hope it helps.

View solution in original post

11 Replies
OmarBenSalem
Author

agigliotti
Partner - Champion
Partner - Champion

i'm using the below script in Qlikview that works fine.

LET vL.NumTabelle = NoOfTables();

FOR j=0 to $(vL.NumTabelle)-1

 

LET vL.nomeTabella = TableName(0);

  DROP Table [$(vL.nomeTabella)];

NEXT j;

I hope it helps.

sunny_talwar

Why don't you drop them after storing?

FOR i = 0 to NoOfTables()-1

LET vTabName = TableName($(i));

STORE $(vTabName) into [lib://blabla/QVD/$(vTabName)$(vSaveFile).qvd] (qvd);

DROP Table $(vTabName);

NEXT i

OmarBenSalem
Author

I tried that, and the result was the same

OmarBenSalem
Author

That worked perfectly !

jonathandienst
Partner - Champion III
Partner - Champion III

Count backwards - the TableName($i) is being affected by the Drop Table:

For i = NoOfTables()-1 to 0 Step -1

    LET vTabName = TableName($(i));

    STORE $(vTabName) into [lib://blabla/QVD/$(vTabName)$(vSaveFile).qvd] (qvd);

    DROP Table $(vTabName);

Next


Or always reference the first table:

FOR i = 0 to NoOfTables()-1

    LET vTabName = TableName(0);

    STORE $(vTabName) into [lib://blabla/QVD/$(vTabName)$(vSaveFile).qvd] (qvd);

    DROP Table $(vTabName);

Next

Logic will get you from a to b. Imagination will take you everywhere. - A Einstein
OmarBenSalem
Author

when I did this, some data was missing in the qvds !

sunny_talwar

I suggest to avoid using Generic load if you plan to combine them... just use loop to create new fields...

hariishr
Contributor III
Contributor III

i am using QLIK SENSE FEB 2020. this worked. thank you