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: 
Anonymous
Not applicable

Exit for in load statement

Hi guys,

I'm loading n xml files into QV and searching for a string (which is in an auxiliary table) in a field from these xml.

The problem is that I need to stop searching for the string when I first find it, which would be something like 'exit for', and jump to the next file. Any ideas?

Thanks!

LET NumRows=NoOfRows('Criteria');

FOR each FILE in filelist (Root&'\*.xml')

FOR i=0 to $(NumRows)-1

LET vTexto=Peek('TEXTO',$(i),'Criteria');

LET vCaract=Peek('CARACT',$(i),'Criteria');

xml:

//NFe_mod1:

LOAD  

  Trim(Replace(Mid([NFe/infNFe/infAdic/infCpl],Index([NFe/infNFe/infAdic/infCpl],'$(vTexto)'),$(vCaract)),'$(vTexto)','')) as nr_liq,

  Num(replace([NFe/infNFe/total/ICMSTot/vNF],'.',','),'#.##0,##') as vlr_xml0,

  [NFe/infNFe/emit/CNPJ] as CNPJ,

  FileName([FILE]) as nome_arquivo  

  

FROM [$(FILE)](XmlSimple, Table is [nfeProc])

WHERE Index([NFe/infNFe/infAdic/infCpl],'$(vTexto)')<>0;

//NFe_mod2:

LOAD  

    Trim(Replace(Mid([infNFe/infAdic/infCpl],Index([infNFe/infAdic/infCpl],'$(vTexto)'),$(vCaract)),'$(vTexto)','')) as nr_liq,

    Num(replace([infNFe/total/ICMSTot/vNF],'.',','),'#.##0,##') as vlr_xml0,

    [infNFe/emit/CNPJ] as CNPJ,

    FileName([FILE]) as nome_arquivo

     

FROM [$(FILE)](XmlSimple, Table is [Nfe])

WHERE Index([infNFe/infAdic/infCpl],'$(vTexto)')<>0;

***Exit For would be here*****

NEXT

NEXT FILE

5 Replies
sunny_talwar

May be this

I see no if then... else... when and how do you know the condition is met? I guess where is the condition?

Anonymous
Not applicable
Author

Hi Sunny,

The condition is the string I'm searching for (in this case the variable vTexto). I have a list of a bunch of strings and I loop through then: If I find it, it should exit my first for, otherwise, it keeps on duplicating the record since I have similar strings (eg. Num:, Num, num)

sunny_talwar

I guess that is what I am unable to follow... how do the script know that the first string value has been found?

Anonymous
Not applicable
Author

Sorry I didnt make myself clear, but that's what I'm having difficulty!

I believe it would be something like EXIT FOR when Len(nr_liq)>0 but it's not working

sasiparupudi1
Master III
Master III

The reason for your exit for is not working because "nr_liq" is a Field and

the condition EXIT FOR when Len(nr_liq)>0 will not see the field nr_liq as it is not accessable out side the load statement.

You will have to use Peek function to get a record value

hth

Sasi