Using a function with a changing input value within a loop

rachel_lomasky
rachel_lomasky New Altair Community Member
edited November 2024 in Community Q&A

I'm trying to figure out why my macro is not being reset correctly within a loop.

 

I have a "Loop files."  Inside that I have a Generate Macro->Generate Report->Add section.

 

  • The Generate Macro creates a macro called "without_extension" with the function "replace(%{file_name},".tsv","")".
  • The Generate Report creates an Excel file with report name: %{without_extension}
  • The Add section adds to report name: %{without_extension}

I would expect, given three files in the directory being looped, three reports, each with one section added.  I get the three reports.  However, only one of the three has a section added.  If I delete that one from the directory being looped, a different one has the section.

 

Please help me understand what I am doing wrong setting the macro.

 

Many thanks in advance.

 

 

 

Best Answer

  • rachel_lomasky
    rachel_lomasky New Altair Community Member
    Answer ✓

    The problem is that it was being reinitialized within the loop.  It was user error.

Answers

  • Thomas_Ott
    Thomas_Ott New Altair Community Member

    Based on your explaination I think what's happening is that the the file is being overwritten each time the loop is finished. What you should do is name the report generated with the Loop Files macro %{file_name}. If the files that are being looped have unique file names then the reports will be generated with the filename. 

  • rachel_lomasky
    rachel_lomasky New Altair Community Member

    Hi,

     

    Thank you.  Yes, the file names are based on the macro: 

    Excel file name = %{without_extension}.xls

  • Thomas_Ott
    Thomas_Ott New Altair Community Member

    try using %{file_name} from the Loop Files. that macro extracts the name of the file and then you can save it.

  • rachel_lomasky
    rachel_lomasky New Altair Community Member
    Answer ✓

    The problem is that it was being reinitialized within the loop.  It was user error.