I'm using the QDF Framework version 1.7.1 but I think this also affected 1.7.
I install the framework to C:\Qv-Docs\SourceDocs\01.DWQLIKDEV-LOCAL on my pc
or I install it to E:\Qv-Docs\SourceDocs\01.DWQLIKDEV on the server. I copy the container contents from the server to my pc.
I map a drive Q: to the \\localhost path to the framework on my pc so it is easier to get to all the files and I may have the copy of the QDF containers on different paths among the several computers I use so the mapped Q:\ drive keeps things consistent.
When I reload my applications using the Q:\ mapped drive the vG.Shared* variables do not get updated and if I delete these variables from the qlik application they do not get reloaded.
I would like to figure out how to use the QDF framework on a network drive letter
and have the framework load these programs:
### QDF Info, 2.GenericContainerLoader.qvs Started'
vL.temp_table_map << ContainerMap 3 Lines fetched
vL.temp_table_map 3 Lines fetched
'### QDF Info, found Shared container, mounting as vG.SharedBasePath'
If I modify the 0.init.qvs file and comment out the if statement then my programs run correctly when running from the mapped network drive. I'm not sure what is going on because the statement:
IsNull(filesize('$(vG.$(vL.QDF.LinkShared_Folders)BasePath)\Initlink.qvs'))
results in 0 for both tests running it from the actual path on C:\ or the mapped network drive on Q:
// Shared_Folders Initiation
//if not IsNull(filesize('$(vG.$(vL.QDF.LinkShared_Folders)BasePath)\Initlink.qvs'))=-1 then
// trace '### QDF Info, $(vL.QDF.LinkShared_Folders) Global Variables using cache';
//else
$(Include=$(vG.SubPath)\4.GenericContainerLoader.qvs);
// Load Include for LCGV function
// This function is to be used inside the Qlik scripts to link between containers
CALL LCGV('$(vL.QDF.LinkShared_Folders)');
if IsNull(filesize('$(vG.$(vL.QDF.LinkShared_Folders)BasePath)\Initlink.qvs'))=-1 then
set vL.QDF.LinkShared_Folders =; // If no shared container found remove link
trace '### QDF Info, Shared container is missing';
endif
//endif;
Hi Andy, the cache is there to avoid recreation of the global variables during every load. If cache does not work in your case it's easy to disable by adding this line first in the script (works in v1.7.1):
set vG.BasePath=;
Hope that this helps, regards
Magnus
in the init script?
Before the init section in the load script.
SET vG.BasePath=; //Uncomment this line to reset cache
$(Include=lib://Root\InitLink.qvs);
regards Magnus
Thanks. Do you think the QDF framework should work with a mapped network drive.
Andy, the cache function is a compromise to reduce amount of QDF related lines in the logs, this after several complains.The cache identifies container reuse by comparing the current URL with the previous, if change identified QDF does a total reload refreshing the cache for the new environment. When using mapped drives it's possible that two different environments have the same URL, but that can be ok as long as the container structures are identical between the environments. Else you need to clear the cache every reload by null the vG.BasePath variable. I think this is the best possible compromise.
Hope this helps.
Regards Magnus
Magnus, after testing this I find this does not cause the Shared variables to be reset to the new path.
In my case of running a QDF qvw application on a mapped local drive the fix you suggest to SET vG.BasePath=; does not cause my init.qvs script to rewrite the vG.Shared variables but instead runs 'Global Variables using cache'
Then you are probably running 1.7 instead of 1.7.1 where that is fixed. You can add
SET vG.SharedBasePath=;
as well that will clean out shared varables in release 1.7
cheers