Qlik Community

QlikView Scripting

Discussion Board for collaboration on QlikView Scripting.

datanibbler
Esteemed Contributor

Tablename()?

Hi,

can anybody please explain to me the use of this function which is not detailed in the help_file?

I have been proposed this as part of a code to clean up all existing tables (but for specific ones), but I guess it can also be used in combination with the TRACE command to see which tables exist at a given point, e.g. within a subroutine, each time it is called.

From the help_file I know that it takes the table_number as a parameter - but what is the table_number?

Thanks a lot!

Best regards,

DataNibbler

Tags (1)
1 Solution

Accepted Solutions
MVP
MVP

Re: Tablename()?

Table_number is the sequence number of loaded tables. The first loaded table has number 0, second one 1, .. 2, .... That means if you have loaded tables like :

Tab1:

Load

          * From <>;

Tab2:

Load

          * From <>;

TableName(0) -> returns 'Tab1'

TableName(1) -> returns 'Tab2'

Hoep this helps.

7 Replies
MVP
MVP

Re: Tablename()?

Table_number is the sequence number of loaded tables. The first loaded table has number 0, second one 1, .. 2, .... That means if you have loaded tables like :

Tab1:

Load

          * From <>;

Tab2:

Load

          * From <>;

TableName(0) -> returns 'Tab1'

TableName(1) -> returns 'Tab2'

Hoep this helps.

datanibbler
Esteemed Contributor

Re: Tablename()?

Hi tresesco,

it does help. I supposed so much, but having it from someone who knows is better.

Unfortunately, in the context I want to use this currently, I don't know the sequence, so that doesn't really help me - but it is good to know. I might be able to use this lateron.

Thanks!

Best regards,

DataNibbler

MVP
MVP

Re: Tablename()?

for tab=1 to 3

  trace **********;

  Table$(tab):

  load

  rand() * 100  as [Field Table$(tab)]

  AutoGenerate 10;

  // trace with tablename and tablenumber

  for i=0 to NoOfTables()-1

   let t=TableName(i);

   let n=TableNumber(TableName(i));

   trace TableName is $(t);

   trace TableNumber is $(n);

  next;

next;

MVP
MVP

Re: Tablename()?

DataNibbler wrote:

I have been proposed this as part of a code to clean up all existing tables (but for specific ones),...

So you know the names of the tables before hand, if so, would not simply using Drop Tables help? Am I missing something?

datanibbler
Esteemed Contributor

Re: Tablename()?

Hi tresesco,

the context was a subroutine and for some reason some fragmented tables were being created in the individual iterations, but I didn't know for sure where and why - and I cannot write a DROP statement for a fragment anyway beecause of the "-" ...

Of course, whenever you know the names of interim tables, dropping them right away with this statement is the more elegant solution.

Also, I am having trouble with the TRACE: I can set a variable to TableName(0) and then write a TRACE statement with the value of that - but somehow writing TRACE TableName(0) or something like that won't work.

Can you help me there?

Thanks a lot!

MVP
MVP

Re: Tablename()?

Alternative could be, like:

vTab=TableName(0);

Trace $(vTab); sleep 1000;

datanibbler
Esteemed Contributor

Re: Tablename()?

Hi,

yep, exactly as I thought. It works fine. Only the TableName() can't be directly inserted into the TRACE for whatever reason. You have to go via a variable.

In the log_file, you then always have two lines - one with the complete TRACE_statement and one with its output ;-)

Community Browser