6 Replies Latest reply: May 29, 2014 12:54 AM by Michael Fenton RSS

    LoadContainerGlobalVariables is not picking up the correct paths

    Michael Fenton

      Hi,

      We have a situation where there is a user who needs to reload their document on-demand.  The plan is that the user uploads some CSV files for loading, opens the app in QlikView Desktop, reloads and saves it to make it available in AccessPoint.

      The image below shows our current folder structure:

      Container Structure.jpg

      The user has NTFS read/write permissions on the app inside the 1.Application folder inside their container.  In addition to this, they have read-only on the System folder containing QVD and Import files and read-only permissions to the Shared_Folders container (ideally, they should only have permissions to specific sub-folders within QVD and Import folders, not the entire System container).

      When they execute a reload, the script is not picking up the correct path to the QVD and Import files.  From tracing through the script, I can see that the BasePath and other variables are set correctly, but when it gets to creating path variables to the QVD and Import folders in the System container it does not read them correctly.  The following lines set the QVD file path:

      // Get paths to QVD files call LoadContainerGlobalVariables('System','QVD'); let vL.MasterDataQVDPath = '$(vG.SystemQVDPath)6.MasterData\';

       

      After those lines, vG.SystemQVDPath still has the value from my development environment, not the server path.

      Should we be setting additional linking variables in the Variable Editor, giving the user additional NTFS permissions, or something else?

       

      Thanks,

      Michael

        • Re: LoadContainerGlobalVariables is not picking up the correct paths
          Magnus Berg

          HI Michael, if you have not done so, activate the application logging (document properties) and check for deployment framework error message, search for DF Error in the log.

          Best regards

          Magnus

            • Re: Re: LoadContainerGlobalVariables is not picking up the correct paths
              Michael Fenton

              Hi Magnus,

              The log file lines leading up to the first error are as follows.  Please note that the UNC path in the second line is correct.  The 'D:\...' path is incorrect, it is the path on my development machine.

              Also, we are using QDF v1.3.1 with QlikView Version:11.20.12235.

               

               

              28/05/2014 1:52:03 PM: 0032        SUB LoadContainerMap(vL.CVSTableName,vL.SpecificVariable,vL.GetRootPath)

              28/05/2014 1:52:03 PM: 0034        call LoadContainerMap('\\svqlikview\QlikViewDocs\2.Test\5.Finance\3.Include\1.BaseVariable\\ContainerMap.csv','Shared')

              28/05/2014 1:52:03 PM: 0011          SET vL.LoadContainerMapCount=

              28/05/2014 1:52:03 PM: 0015          vL.temp_table_map:

              28/05/2014 1:52:03 PM: 0016          LOAD *

              28/05/2014 1:52:03 PM: 0017          FROM

              28/05/2014 1:52:03 PM: 0018          '\\svqlikview\QlikViewDocs\2.Test\5.Finance\3.Include\1.BaseVariable\\ContainerMap.csv'

              28/05/2014 1:52:03 PM: 0019          (txt, utf8, embedded labels, delimiter is ',', msq)

              28/05/2014 1:52:03 PM:               4 fields found: ContainerPathName, ContainerFolderName, ContainerComments, RootPath, 16 lines fetched

              28/05/2014 1:52:03 PM: 0022          Left join

              28/05/2014 1:52:03 PM: 0023          Load ContainerPathName,count(ContainerPathName) as ContainerPathNameCount

              28/05/2014 1:52:03 PM: 0024          Resident vL.temp_table_map

              28/05/2014 1:52:03 PM: 0025          group by ContainerPathName

              28/05/2014 1:52:03 PM:               2 fields found: ContainerPathName, ContainerPathNameCount, 12 lines fetched

              28/05/2014 1:52:03 PM:               Joining/Keeping

              28/05/2014 1:52:03 PM: 0028          let vL.xxx = NoOfRows('vL.temp_table_map')

              28/05/2014 1:52:03 PM: 0030          for vL.ttt = 0 to vL.xxx-1

              28/05/2014 1:52:03 PM: 0032            LET vL.Comment =''

              28/05/2014 1:52:03 PM: 0034            LET vL.ContainerPathName = PurgeChar(trim(peek(FieldName(1,'vL.temp_table_map'),0,'vL.temp_table_map')),'=;,- '&chr(39))

              28/05/2014 1:52:03 PM: 0035            LET vL.ContainerFolderName = lower(PurgeChar(trim(peek(FieldName(2,'vL.temp_table_map'),0,'vL.temp_table_map')),'=;,'&chr(39)))

              28/05/2014 1:52:03 PM: 0036            LET vL.Comment = PurgeChar(trim(peek(FieldName(3,'vL.temp_table_map'),0,'vL.temp_table_map')),';,'&chr(39))

              28/05/2014 1:52:03 PM: 0037            LET vL.RootPath = lower(PurgeChar(trim(peek(FieldName(4,'vL.temp_table_map'),0,'vL.temp_table_map')),'=;,'&chr(39)))

              28/05/2014 1:52:03 PM: 0038            LET vL.ContainerPathNameCount = peek(FieldName(5,'vL.temp_table_map'),0,'vL.temp_table_map')

              28/05/2014 1:52:03 PM: 0041            if not 'Admin' = '' and not '0.administration' = '' then

              28/05/2014 1:52:03 PM: 0044              if not right( '0.administration' , 1 ) ='\' then

              28/05/2014 1:52:03 PM: 0045                let vL.ContainerName ='0.administration'&'\'

              28/05/2014 1:52:03 PM: 0046              else

              28/05/2014 1:52:03 PM: 0051              if   '0.administration\' =right(lower(''),len('0.administration\')) and '' = '' then

              28/05/2014 1:52:03 PM: 0074              if ('Shared'='Admin' or 'Shared'='0.administration')  then

              28/05/2014 1:52:03 PM: 0096              exit for when ''='True'

              28/05/2014 1:52:03 PM: 0097            endif

              28/05/2014 1:52:03 PM: 0098          next

              28/05/2014 1:52:03 PM: 0032            LET vL.Comment =''

              28/05/2014 1:52:03 PM: 0034            LET vL.ContainerPathName = PurgeChar(trim(peek(FieldName(1,'vL.temp_table_map'),1,'vL.temp_table_map')),'=;,- '&chr(39))

              28/05/2014 1:52:03 PM: 0035            LET vL.ContainerFolderName = lower(PurgeChar(trim(peek(FieldName(2,'vL.temp_table_map'),1,'vL.temp_table_map')),'=;,'&chr(39)))

              28/05/2014 1:52:03 PM: 0036            LET vL.Comment = PurgeChar(trim(peek(FieldName(3,'vL.temp_table_map'),1,'vL.temp_table_map')),';,'&chr(39))

              28/05/2014 1:52:03 PM: 0037            LET vL.RootPath = lower(PurgeChar(trim(peek(FieldName(4,'vL.temp_table_map'),1,'vL.temp_table_map')),'=;,'&chr(39)))

              28/05/2014 1:52:04 PM: 0038            LET vL.ContainerPathNameCount = peek(FieldName(5,'vL.temp_table_map'),1,'vL.temp_table_map')

              28/05/2014 1:52:04 PM: 0041            if not 'Shared' = '' and not '99.shared_folders' = '' then

              28/05/2014 1:52:04 PM: 0044              if not right( '99.shared_folders' , 1 ) ='\' then

              28/05/2014 1:52:04 PM: 0045                let vL.ContainerName ='99.shared_folders'&'\'

              28/05/2014 1:52:04 PM: 0046              else

              28/05/2014 1:52:04 PM: 0051              if   '99.shared_folders\' =right(lower(''),len('99.shared_folders\')) and '' = '' then

              28/05/2014 1:52:04 PM: 0074              if ('Shared'='Shared' or 'Shared'='99.shared_folders')  then

              28/05/2014 1:52:04 PM: 0076                if not '' = '' then

              28/05/2014 1:52:04 PM: 0082                  let vL.RootPath ='D:\Source\BusIntel\1.Dev\'

              28/05/2014 1:52:04 PM: 0083                endif

              28/05/2014 1:52:04 PM: 0084                if vL.ContainerPathNameCount = 1 then

              28/05/2014 1:52:04 PM: 0085                  SET vL.Exit= 'True'

              28/05/2014 1:52:04 PM: 0087                else

              28/05/2014 1:52:04 PM: 0094                exit for when 'True'='True'

              28/05/2014 1:52:04 PM: 0100          drop table 'vL.temp_table_map'

              28/05/2014 1:52:04 PM: 0103          SET vL.ttt =

              28/05/2014 1:52:04 PM: 0104          SET vL.xxx =

              28/05/2014 1:52:04 PM: 0105          SET vL.CVSTableName =

              28/05/2014 1:52:04 PM: 0106          SET vL.SpecificVariable =

              28/05/2014 1:52:04 PM: 0107          SET vL.GetRootPath =

              28/05/2014 1:52:04 PM: 0108          SET vL.Exit=

              28/05/2014 1:52:04 PM: 0109          SET vL.ContainerName=

              28/05/2014 1:52:04 PM: 0110          SET vL.ContainerPathNameCount=

              28/05/2014 1:52:04 PM: 0111        end sub

              28/05/2014 1:52:04 PM: 0037        SET vL.ContainerFolderName='99.shared_folders'

              28/05/2014 1:52:04 PM: 0040        SET vL.ContainerPathName='Shared'

              28/05/2014 1:52:04 PM: 0043        SET vL.RootPath='D:\Source\BusIntel\1.Dev\'

              28/05/2014 1:52:04 PM: 0045        if not 'Shared' = '' then

              28/05/2014 1:52:04 PM: 0049          trace '### DF 99.shared_folders'

              28/05/2014 1:52:04 PM: 0049          '### DF 99.shared_folders'

               

               

              28/05/2014 1:52:04 PM: 0050          trace '### DF Default Shared Container'

              28/05/2014 1:52:04 PM: 0050          '### DF Default Shared Container'

               

               

              28/05/2014 1:52:04 PM: 0053          SET vG.SharedBasePath = 'D:\Source\BusIntel\1.Dev\99.shared_folders\'

              28/05/2014 1:52:04 PM: 0057          sub vL.FileExist (vL.Root)

              28/05/2014 1:52:04 PM: 0058          call vL.FileExist ('D:\Source\BusIntel\1.Dev\99.shared_folders\*')

              28/05/2014 1:52:04 PM: 0011            if IsNull(filesize('D:\Source\BusIntel\1.Dev\99.shared_folders\*')) = -1  then

              28/05/2014 1:52:04 PM: 0012              SET vL.FileExist='false'

              28/05/2014 1:52:04 PM: 0013            else  

              28/05/2014 1:52:04 PM: 0016            set vL.Root=

              28/05/2014 1:52:04 PM: 0017          end sub

              28/05/2014 1:52:04 PM: 0060          if vL.FileExist = 'false' then

              28/05/2014 1:52:04 PM: 0061            trace '### DF Error Do not find vG.SharedBasePath'

              28/05/2014 1:52:04 PM: 0061            '### DF Error Do not find vG.SharedBasePath'

               

               

              28/05/2014 1:52:04 PM: 0062            trace '### DF Path D:\Source\BusIntel\1.Dev\99.shared_folders\'

              28/05/2014 1:52:04 PM: 0062            '### DF Path D:\Source\BusIntel\1.Dev\99.shared_folders\'

                • Re: LoadContainerGlobalVariables is not picking up the correct paths
                  Magnus Berg

                  Hi Michael, It seems to me like your Container Map (ContainerMap,csv) file is empty och contains wrong values. Could you please check that it contains your container architecture? Will be stored under 5.Finance\3.Include\1.BaseVariable\\ContainerMap.csv

                  If you are uncertain attache the map and I will have a look.

                  Best regards

                  Magnus

                    • Re: Re: LoadContainerGlobalVariables is not picking up the correct paths
                      Michael Fenton

                      Hi Magnus,

                      Attached is a copy of the Container Map.  It looks ok to me.

                      Michael

                      • Re: Re: LoadContainerGlobalVariables is not picking up the correct paths
                        Michael Fenton

                        In addition, here is an extract from the log file when it is run by a user with "Full control" NTFS permissions on the entire folder structure.  It completes successfully in this instance, so I am pretty sure that there is something missing from the other user's permissions.

                        The other user is able to open the ContainerMap.csv file.

                         

                         

                        29/05/2014 10:42:59 AM: 0032        SUB LoadContainerMap(vL.CVSTableName,vL.SpecificVariable,vL.GetRootPath)

                        29/05/2014 10:42:59 AM: 0034        call LoadContainerMap('\\svqlikview\QlikViewDocs\2.Test\5.Finance\3.Include\1.BaseVariable\\ContainerMap.csv','Shared')

                        29/05/2014 10:42:59 AM: 0011          SET vL.LoadContainerMapCount=

                        29/05/2014 10:42:59 AM: 0015          vL.temp_table_map:

                        29/05/2014 10:42:59 AM: 0016          LOAD *

                        29/05/2014 10:42:59 AM: 0017          FROM

                        29/05/2014 10:42:59 AM: 0018          '\\svqlikview\QlikViewDocs\2.Test\5.Finance\3.Include\1.BaseVariable\\ContainerMap.csv'

                        29/05/2014 10:42:59 AM: 0019          (txt, utf8, embedded labels, delimiter is ',', msq)

                        29/05/2014 10:42:59 AM:               4 fields found: ContainerPathName, ContainerFolderName, ContainerComments, RootPath, 16 lines fetched

                        29/05/2014 10:42:59 AM: 0022          Left join

                        29/05/2014 10:42:59 AM: 0023          Load ContainerPathName,count(ContainerPathName) as ContainerPathNameCount

                        29/05/2014 10:42:59 AM: 0024          Resident vL.temp_table_map

                        29/05/2014 10:42:59 AM: 0025          group by ContainerPathName

                        29/05/2014 10:42:59 AM:               2 fields found: ContainerPathName, ContainerPathNameCount, 12 lines fetched

                        29/05/2014 10:42:59 AM:               Joining/Keeping

                        29/05/2014 10:42:59 AM: 0028          let vL.xxx = NoOfRows('vL.temp_table_map')

                        29/05/2014 10:42:59 AM: 0030          for vL.ttt = 0 to vL.xxx-1

                        29/05/2014 10:42:59 AM: 0032            LET vL.Comment =''

                        29/05/2014 10:42:59 AM: 0034            LET vL.ContainerPathName = PurgeChar(trim(peek(FieldName(1,'vL.temp_table_map'),0,'vL.temp_table_map')),'=;,- '&chr(39))

                        29/05/2014 10:42:59 AM: 0035            LET vL.ContainerFolderName = lower(PurgeChar(trim(peek(FieldName(2,'vL.temp_table_map'),0,'vL.temp_table_map')),'=;,'&chr(39)))

                        29/05/2014 10:42:59 AM: 0036            LET vL.Comment = PurgeChar(trim(peek(FieldName(3,'vL.temp_table_map'),0,'vL.temp_table_map')),';,'&chr(39))

                        29/05/2014 10:42:59 AM: 0037            LET vL.RootPath = lower(PurgeChar(trim(peek(FieldName(4,'vL.temp_table_map'),0,'vL.temp_table_map')),'=;,'&chr(39)))

                        29/05/2014 10:42:59 AM: 0038            LET vL.ContainerPathNameCount = peek(FieldName(5,'vL.temp_table_map'),0,'vL.temp_table_map')

                        29/05/2014 10:42:59 AM: 0041            if not 'Admin' = '' and not '0.administration' = '' then

                        29/05/2014 10:42:59 AM: 0044              if not right( '0.administration' , 1 ) ='\' then

                        29/05/2014 10:42:59 AM: 0045                let vL.ContainerName ='0.administration'&'\'

                        29/05/2014 10:42:59 AM: 0046              else

                        29/05/2014 10:42:59 AM: 0051              if   '0.administration\' =right(lower(''),len('0.administration\')) and '' = '' then

                        29/05/2014 10:42:59 AM: 0074              if ('Shared'='Admin' or 'Shared'='0.administration')  then

                        29/05/2014 10:42:59 AM: 0096              exit for when ''='True'

                        29/05/2014 10:42:59 AM: 0097            endif

                        29/05/2014 10:42:59 AM: 0098          next

                        29/05/2014 10:42:59 AM: 0032            LET vL.Comment =''

                        29/05/2014 10:42:59 AM: 0034            LET vL.ContainerPathName = PurgeChar(trim(peek(FieldName(1,'vL.temp_table_map'),1,'vL.temp_table_map')),'=;,- '&chr(39))

                        29/05/2014 10:42:59 AM: 0035            LET vL.ContainerFolderName = lower(PurgeChar(trim(peek(FieldName(2,'vL.temp_table_map'),1,'vL.temp_table_map')),'=;,'&chr(39)))

                        29/05/2014 10:42:59 AM: 0036            LET vL.Comment = PurgeChar(trim(peek(FieldName(3,'vL.temp_table_map'),1,'vL.temp_table_map')),';,'&chr(39))

                        29/05/2014 10:42:59 AM: 0037            LET vL.RootPath = lower(PurgeChar(trim(peek(FieldName(4,'vL.temp_table_map'),1,'vL.temp_table_map')),'=;,'&chr(39)))

                        29/05/2014 10:42:59 AM: 0038            LET vL.ContainerPathNameCount = peek(FieldName(5,'vL.temp_table_map'),1,'vL.temp_table_map')

                        29/05/2014 10:42:59 AM: 0041            if not 'Shared' = '' and not '99.shared_folders' = '' then

                        29/05/2014 10:42:59 AM: 0044              if not right( '99.shared_folders' , 1 ) ='\' then

                        29/05/2014 10:42:59 AM: 0045                let vL.ContainerName ='99.shared_folders'&'\'

                        29/05/2014 10:42:59 AM: 0046              else

                        29/05/2014 10:42:59 AM: 0051              if   '99.shared_folders\' =right(lower(''),len('99.shared_folders\')) and '' = '' then

                        29/05/2014 10:42:59 AM: 0074              if ('Shared'='Shared' or 'Shared'='99.shared_folders')  then

                        29/05/2014 10:42:59 AM: 0076                if not '' = '' then

                        29/05/2014 10:42:59 AM: 0082                  let vL.RootPath ='\\svqlikview\QlikViewDocs\2.Test\'

                        29/05/2014 10:42:59 AM: 0083                endif

                        29/05/2014 10:43:00 AM: 0084                if vL.ContainerPathNameCount = 1 then

                        29/05/2014 10:43:00 AM: 0085                  SET vL.Exit= 'True'

                        29/05/2014 10:43:00 AM: 0087                else

                        29/05/2014 10:43:00 AM: 0094                exit for when 'True'='True'

                        29/05/2014 10:43:00 AM: 0100          drop table 'vL.temp_table_map'

                        29/05/2014 10:43:00 AM: 0103          SET vL.ttt =

                        29/05/2014 10:43:00 AM: 0104          SET vL.xxx =

                        29/05/2014 10:43:00 AM: 0105          SET vL.CVSTableName =

                        29/05/2014 10:43:00 AM: 0106          SET vL.SpecificVariable =

                        29/05/2014 10:43:00 AM: 0107          SET vL.GetRootPath =

                        29/05/2014 10:43:00 AM: 0108          SET vL.Exit=

                        29/05/2014 10:43:00 AM: 0109          SET vL.ContainerName=

                        29/05/2014 10:43:00 AM: 0110          SET vL.ContainerPathNameCount=

                        29/05/2014 10:43:00 AM: 0111        end sub

                        29/05/2014 10:43:00 AM: 0037        SET vL.ContainerFolderName='99.shared_folders'

                        29/05/2014 10:43:00 AM: 0040        SET vL.ContainerPathName='Shared'

                        29/05/2014 10:43:00 AM: 0043        SET vL.RootPath='\\svqlikview\QlikViewDocs\2.Test\'

                        29/05/2014 10:43:00 AM: 0045        if not 'Shared' = '' then

                        29/05/2014 10:43:00 AM: 0049          trace '### DF 99.shared_folders'

                        29/05/2014 10:43:00 AM: 0049          '### DF 99.shared_folders'

                         

                         

                        29/05/2014 10:43:00 AM: 0050          trace '### DF Default Shared Container'

                        29/05/2014 10:43:00 AM: 0050          '### DF Default Shared Container'

                         

                         

                        29/05/2014 10:43:00 AM: 0053          SET vG.SharedBasePath = '\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\'

                        29/05/2014 10:43:00 AM: 0057          sub vL.FileExist (vL.Root)

                        29/05/2014 10:43:00 AM: 0058          call vL.FileExist ('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\*')

                        29/05/2014 10:43:00 AM: 0011            if IsNull(filesize('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\*')) = -1  then

                        29/05/2014 10:43:00 AM: 0014              SET vL.FileExist='true'

                        29/05/2014 10:43:00 AM: 0015            endif

                        29/05/2014 10:43:00 AM: 0016            set vL.Root=

                        29/05/2014 10:43:00 AM: 0017          end sub

                        29/05/2014 10:43:00 AM: 0060          if vL.FileExist = 'false' then

                        29/05/2014 10:43:00 AM: 0067            Call GetContainerStructure (vL.GetContainerStructure)

                        29/05/2014 10:43:00 AM: 0036              vL.ContainerStructure:

                        29/05/2014 10:43:00 AM: 0037               LOAD * INLINE [

                        29/05/2014 10:43:00 AM: 0038               PhysicalFolderName, VariablePrefix, Comments

                        29/05/2014 10:43:00 AM: 0039               '1.Application','Application','QlikView Applications are resided in subfolders under 1.Applications'

                        29/05/2014 10:43:00 AM: 0040               '2.QVD','QVD','QlikView Data files are stored in subfolders under 2.QVD'

                        29/05/2014 10:43:00 AM: 0041               '3.Include','Include','Folder where QlikView Include files are stored. These are script parts that are called from the main QlikView script. '

                        29/05/2014 10:43:00 AM: 0042               '4.Mart', 'Mart','Resides QlikView Qvw marts (in subfolders) for data discovery usage, these folders could be shared.'

                        29/05/2014 10:43:00 AM: 0043               '5.Config','Config','Configuration and language files like Excel and txt. This folders could be shared to make configuration changes easier'

                        29/05/2014 10:43:00 AM: 0044               '6.Script','Script','Store for special scripts run by the publisher or scheduled tasks'

                        29/05/2014 10:43:00 AM: 0045               '7.Export','Export','Folder used to store from QlikView exported data, probably txt or qvx'

                        29/05/2014 10:43:00 AM: 0046               '8.Import','Import','Folder used to store import data from external systems'

                        29/05/2014 10:43:00 AM: 0047               '3.Include\1.BaseVariable','BaseVariable','Stores all the variables needed to use the framework, like paths inside the container'

                        29/05/2014 10:43:00 AM: 0048               '3.Include\2.Locale','Locale','Locale for different regions, used for easy migration between regions'

                        29/05/2014 10:43:00 AM: 0049               '3.Include\3.ConnString','ConnString','Stores connection strings to data sources'

                        29/05/2014 10:43:00 AM: 0050               '3.Include\4.Sub','Sub','Store for sub routines, this is a way to reuse code between applications '

                        29/05/2014 10:43:00 AM: 0051               '3.Include\5.ColorScheme','ColorScheme','Company standard Color Scheme would be placed here'

                        29/05/2014 10:43:00 AM: 0052               '3.Include\6.Custom','Custom','Store for custom include scripts'

                        29/05/2014 10:43:00 AM: 0053               '0.Template','Template','Used to identify Admin container and create extra variables used by Variable Editor'

                        29/05/2014 10:43:00 AM: 0054               ]

                        29/05/2014 10:43:00 AM:                   3 fields found: PhysicalFolderName, VariablePrefix, Comments, 15 lines fetched

                        29/05/2014 10:43:00 AM: 0055            end sub

                        29/05/2014 10:43:00 AM: 0068            FOR vL.VariableLoop = 1 to NoOfRows('vL.ContainerStructure')

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',1)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',1)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\1.Application') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedApplicationPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\1.Application\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\1.Application') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',2)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',2)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\2.QVD') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedQVDPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\2.QVD\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\2.QVD') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',3)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',3)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedIncludePath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',4)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',4)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\4.Mart') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedMartPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\4.Mart\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\4.Mart') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',5)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',5)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\5.Config') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedConfigPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\5.Config\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\5.Config') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',6)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',6)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\6.Script') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedScriptPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\6.Script\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\6.Script') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',7)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',7)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\7.Export') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedExportPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\7.Export\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\7.Export') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',8)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',8)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\8.Import') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedImportPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\8.Import\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\8.Import') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',9)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',9)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\1.BaseVariable') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedBaseVariablePath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\1.BaseVariable\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\1.BaseVariable') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',10)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',10)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\2.Locale') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedLocalePath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\2.Locale\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\2.Locale') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',11)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',11)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\3.ConnString') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedConnStringPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\3.ConnString\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\3.ConnString') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',12)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',12)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\4.Sub') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedSubPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\4.Sub\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\4.Sub') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',13)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',13)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\5.ColorScheme') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedColorSchemePath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\5.ColorScheme\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\5.ColorScheme') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',14)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',14)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\6.Custom') > 0 then

                        29/05/2014 10:43:00 AM: 0075                SET vG.SharedCustomPath='\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\6.Custom\'

                        29/05/2014 10:43:00 AM: 0078              elseif FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\3.Include\6.Custom') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0070              let vL.PhysicalFolderName = fieldvalue('PhysicalFolderName',15)

                        29/05/2014 10:43:00 AM: 0071              let vL.VariablePrefix = fieldvalue('VariablePrefix',15)

                        29/05/2014 10:43:00 AM: 0074              if ''='' and FileTime('\\svqlikview\QlikViewDocs\2.Test\99.shared_folders\0.Template') > 0 then

                        29/05/2014 10:43:00 AM: 0087            Next vL.VariableLoop

                        29/05/2014 10:43:00 AM: 0090            drop table vL.ContainerStructure

                        29/05/2014 10:43:00 AM: 0093            if not ''='' then

                        29/05/2014 10:43:00 AM: 0098            trace '### DF 99.shared_folders Finished'

                        29/05/2014 10:43:00 AM: 0098            '### DF 99.shared_folders Finished'

                         

                         

                        29/05/2014 10:43:00 AM: 0100          else

                        29/05/2014 10:43:00 AM: 0103        else

                        29/05/2014 10:43:00 AM: 0111        SET vL.ContainerFolderName=

                        29/05/2014 10:43:00 AM: 0112        SET vL.PhysicalFolderName=

                        29/05/2014 10:43:00 AM: 0113        SET vL.VariablePrefix=

                        29/05/2014 10:43:00 AM: 0114        SET vL.VariableLoop=

                        29/05/2014 10:43:00 AM: 0115        SET vL.Path=

                        29/05/2014 10:43:00 AM: 0116        SET vL.LinkShared_Folders=

                        29/05/2014 10:43:00 AM: 0117        set vL.VariableLoop=

                        29/05/2014 10:43:00 AM: 0118        set vL.GetContainerStructure=

                        29/05/2014 10:43:00 AM: 0119        SET vL.ContainerMapPath =

                        29/05/2014 10:43:00 AM: 0120        SET vL.ContainerPathName=

                        29/05/2014 10:43:00 AM: 0121        SET vL.RootPath=

                        29/05/2014 10:43:00 AM: 0122        SET vL.FileExist=

                        29/05/2014 10:43:00 AM: 0123        SET vL.ContanerName=

                        29/05/2014 10:43:00 AM: 0124        SET vL.Comment =

                        29/05/2014 10:43:00 AM: 0125        SET vL.ContainerIdentification=

                        29/05/2014 10:43:00 AM: 0126        SET vL.SingleFolder=

                        29/05/2014 10:43:00 AM: 0127        SET vL.SubStringSplitt=

                        29/05/2014 10:43:00 AM: 0128        SET vL.SubString=

                        29/05/2014 10:43:00 AM: 0130      end sub

                        29/05/2014 10:43:00 AM: 0135    endif

                  • Re: LoadContainerGlobalVariables is not picking up the correct paths
                    Michael Fenton

                    We were able to solve this by granting the user NTFS read permissions (Traverse folder / execute file, List folder / read data, Read attributes) on the top level folder (2.Test) with no inheritance to sub-folders and contents.  This means they can enumerate the containers, but cannot go into them unless they have specific permissions.

                     

                    It seems that the LoadContainerMap sub (called by LoadContainerGlobalVariables) needs to be able to see all the containers in the file system even though I am only requesting variables from the System folder.

                     

                    It would be handy to have a guide outlining the NTFS permissions required by different business roles in the QDF.