Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

InputField Macro hangs server in AJAX

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

0 Replies