0 Replies Latest reply: Jun 16, 2015 10:40 AM by Andrew Houston-Floyd RSS

    InputField Macro hangs server in AJAX

    Andrew Houston-Floyd

      Hi everyone,

       

      I wanted to use InputField to change multiple rows at once, and used the macro below. In development, the macro worked well, having no problem with several thousand rows. However, when I published to a website and tried the macro through AJAX, it worked, BUT it was only able to handle a small number of rows at a time - with a larger number, it stopped responding, and task manager showed the server CPU was continuously cycling from 0%-40% usage. I left for 10 minutes with no change.

       

      Does anyone know if I can improve performance in AJAX? The macro below is in VBscript. The file is ~60MB with 1.7M rows.

       

      sub UpdateValues

       

          dim vRemainingInputIds

          dim vDividerLocation

          dim vCurrentInputId

         

          ' Set the macro variables to current variable values

          set vInputIds         = ActiveDocument.Variables("vSelectedInputIds")

          set vValueOption    = ActiveDocument.Variables("vSelectedValueOption")

         

          ' add one divider in the end to avoid handling the special case of not finding it

          vRemainingInputIds = vInputIds.getcontent.string & "|"

         

          ' loop through all the ReferenceProductInputIds and set them to the selected Product

          Do While len(vRemainingInputIds) > 0

         

              ' find the next divider |

              vDividerLocation = instr(1, vRemainingInputIds, "|") - 1

       

              ' get the ReferenceProductInputId using the position of the divider

              vCurrentInputId = left(vRemainingInputIds, vDividerLocation)

             

              'msgbox(vCurrentInputId)

             

              ' Update the ReferenceProductInput on the current id | [FieldName].SetInputFieldValue Row, Value

              ActiveDocument.Fields("InputValue").SetInputFieldValue vCurrentInputId, vValueOption.getcontent.string

             

              ' remove the used id from the list

              vRemainingInputIds = right(vRemainingInputIds, len(vRemainingInputIds) - 1 - vDividerLocation)

             

              'msgbox(vRemainingInputIds)

             

          Loop

       

       

      end sub