Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello,
I'm trying to create a list of filenames and directories using methods described here:
Loop through root directory (including subfolders) and list filenames of *.csv
During Debug, I find that the variables 'SubDirectory' and 'FoundFile' are producing <NULL> which subsequently doesn't create a table.
There are indeed many directories which each contain multiple csv files in the specified location. I have changed the location of them to a new directory and re-pointed the path as well with the same results. I've tried with and without '\' in the CALL statement.
No errors are produced.
Any advice?
sub GetCSVFileNames(Root)
for each FoundFile in filelist( Root & '\*.csv')
FileList:
Load
filename('$(FoundFile)') as FileName,
filedir('$(FoundFile)') as FileDir
Autogenerate(1);
next FoundFile
for each SubDirectory in dirlist( Root & '\*' )
call GetCSVFileNames(SubDirectory)
next SubDirectory
end sub
Call GetCSVFileNames('C:\datafiles') ;
This is related to Loop Through Directory Structure to load data however I'm trying to start by simplifying things.
Thank you!
Ok, I think I'm under control mostly. I changed the following which seemed to help thing:
Instead of a relative path, Qlik Sense doesn't like those much, so I used a lib: and it is much happier.
call DoDir ('lib://datafiles')
Full code below:
sub DoDir (Root)
for each Ext in 'csv'
for each FoundFile in filelist (Root&'/*.' &Ext)
FileList:
LOAD
'$(FoundFile)' as FullPathName,
'$(Dir)' as FileDir,
right('$(Dir)', 😎 as FileDate,
Subfield(Subfield('$(File)', '\', SubstringCount('$(File)', '\') + 1), '.', 1) as FileBase,
FileSize('$(FoundFile)') as Size
autogenerate 1;
next FoundFile
next Ext
for each Dir in dirlist (Root&'/*' )
call DoDir (Dir)
next Dir
end sub
call DoDir ('lib://datafiles')
Could be related to this: Qlik Sense Legacy mode
Nothing like spending 5 days spinning your wheels trying to figure out what you're doing wrong in a simple sub statement only to find it's an .ini setting!!
Thanks!! I added the StandardReload=0 line and POOF, data.
Ugh. Thanks again - hopefully headway may occur now!!
Ok - maybe I spoke too soon. It does in fact perform the loop and cycle through the data the appropriate amount of times, however no data is populated in the ensuing table:
Shows 54 rows and 3 fields (correct), however there is no data populated. I inserted a table in the UI just to double-check and nope, no data. Any idea why it wouldn't be populating what it's obviously finding?
Ok, I think I'm under control mostly. I changed the following which seemed to help thing:
Instead of a relative path, Qlik Sense doesn't like those much, so I used a lib: and it is much happier.
call DoDir ('lib://datafiles')
Full code below:
sub DoDir (Root)
for each Ext in 'csv'
for each FoundFile in filelist (Root&'/*.' &Ext)
FileList:
LOAD
'$(FoundFile)' as FullPathName,
'$(Dir)' as FileDir,
right('$(Dir)', 😎 as FileDate,
Subfield(Subfield('$(File)', '\', SubstringCount('$(File)', '\') + 1), '.', 1) as FileBase,
FileSize('$(FoundFile)') as Size
autogenerate 1;
next FoundFile
next Ext
for each Dir in dirlist (Root&'/*' )
call DoDir (Dir)
next Dir
end sub
call DoDir ('lib://datafiles')