Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Use of two variables in EDX

Hi

I have several reports that use EDX. They all use one SQL variable that I send thru the macro.

Now I have to expand it and add another one as well.

But I cannot get it to work.

The macro runs, and it flag no errors.

Here is the code:(red text = the new parts in the code)

Hope you have an idea to what might be wrong.

****************

Sub TriggerEDX()

Dim objHttp

Dim strUrl

Dim strData

Dim strKeyRequest

Dim strKeyAwnser

Dim stringSQL

Dim stringBatchID

SET varSQL = ActiveDocument.Variables("vSQL")

SET varSQL2 = ActiveDocument.Variables("vCIPStepSQL")

    'Set task name

    Dim strTaskName

    strTaskName = "MES_CIP"

    Dim strTaskPassword

    strTaskPassword = inputbox("Please enter task password")

    ' Create a HTTP instance

    Set objHttp = CreateObject("Microsoft.XMLHTTP")

   

    strUrl = "http://localhost:4720/qtxs.asmx"

    'Get key for  HTTP

    strKeyRequest ="<Global method=""GetTimeLimitedRequestKey"" />"

   

    'Do HTTP call to server

    objHttp.open "POST",strUrl,false

    objHttp.setRequestHeader "Content-Type","text/xml"

    objHttp.setRequestHeader "Content-Length", Len(strKeyRequest)

    objHttp.Send strKeyRequest

   

    'Parse the awnser

    Dim strKey

    strKey = ParseKeyAwnser(objHttp.ResponseText)

   

   

    'Get the string to send in the request that triggers the task

    Dim strEDXRequest

   

    strEDXRequest = GetEDXRequestString(strKey,strTaskName,strTaskPassword,varSQL.GetContent.String,varSQL2.GetContent.String)

   

    'Do the actual request to trigger the task

    objHttp.open "POST",strUrl,false

    objHttp.setRequestHeader "Content-Type","text/xml"

    objHttp.setRequestHeader "Content-Length", Len(strKeyRequest)

    objHttp.Send strEDXRequest

   

    'Get the awnser, the awnser can contain different things but for now I only care to see if we find success

    dim strAwnser

    strAwnser = objHttp.ResponseText

   

    'The awnser if success looks like this

    '<RequestEDX>

    '  <RequestEDXResult>

    '    <TaskStartResult>Success</TaskStartResult>

    '    <Log />

    '  </RequestEDXResult>

    '</RequestEDX>

   

   

   

    if(Instr(strAwnser,"<TaskStartResult>Success</TaskStartResult>") > 0) then

        msgbox("Loading, please wait!")

    else

        msgbox(strAwnser)

    end if

   

End Sub

Function ParseKeyAwnser(strKeyAwnser)

'The Awnser should look something like this

'<GetTimeLimitedRequestKey>

'  <GetTimeLimitedRequestKeyResult>ltqFrklyIwdx1zFXIhNE8TT3RnHy6Peq</GetTimeLimitedRequestKeyResult>

'</GetTimeLimitedRequestKey>

Dim intStartPos

Dim IntKeyLen

'Get the starting and the end position of the key

intStartPos = InStr(strKeyAwnser,"<GetTimeLimitedRequestKeyResult>")+Len("<GetTimeLimitedRequestKeyResult>")

intKeyLen = InStrRev(strKeyAwnser,"</GetTimeLimitedRequestKeyResult>") - intStartPos

'Get and return the key

ParseKeyAwnser = Mid(strKeyAwnser,intStartPos,intKeyLen)

End Function

Function GetEDXRequestString(strRequestKey,strTaskName,strTaskPassword,stringSQL,stringBatchID)

'The request to send look like this

'<Global method="RequestEDX" key="RJtp/RJZAjAd3IlwEUTEKhQgiMafRoze">

  '<i_TaskIDOrTaskName>MyTaskName</i_TaskIDOrTaskName>

  '<i_Password>MyTaskPassword</i_Password>

  '<i_VariableName /><i_VariableName />

  '<i_VariableValueList /><i_VariableValueList />

  '</Global>

'Make the string and insert the key

GetEDXRequestString = "<Global method=""RequestEDX"" key=""" & strRequestKey &  """><i_TaskIDOrTaskName>" & strTaskName & "</i_TaskIDOrTaskName><i_Password>" & strTaskPassword & "</i_Password><i_VariableName >vSQL;vCIPStepSQL</i_VariableName ><i_VariableValueList ><string>" & stringSQL & ";" & stringBatchID & "</string></i_VariableValueList ></Global>"

                                         

End Function

****************

BR

Dan

0 Replies