GeneXus - Dudas de Genexus 9.0

 
Vista:
sin imagen de perfil

Dudas de Genexus 9.0

Publicado por Edyth (9 intervenciones) el 08/06/2017 18:26:12
Buenos días a tod@s
Tengo un problema, tengo un evento en un botón que me descarga un xml de una pagina y me lo escribe en una ubicación en mi maquina. Esto en base al archivo que este seleccionado del Grid.

El problema es que cuando selecciono más de 1 línea en el Grid y le doy descargar, si lo hace pero solo me descarga bien el primer xml, los demás xml los pone pero no traen información.

Lo más raro es que si lo hago uno por uno (seleccionar uno y dar clic al botón) si lo hace correctamente.
Yo pensé que probablemente me faltaba limpiar alguna variable, así que intente limpiar algunas de las variables que se usan en VB pero no funciono. También intente limpiar la variable de Genexus que va y me escribe (XMLWrite) pero no sé cómo limpiarla.

Les mando un ejemplo de mi código. Las variables que inician con "&G_" quiere decir que pertenecen al Grid que tengo en pantalla.


Event 'Download_XML'
&InitPath = 'C:\files'
&caption = 'Seleccionar Directorio'
&Selected = ''

Call('gxSelDir', &Selected, &InitPath, &caption)
&Selected += '\\'
&Selected = StrReplace( &Selected, '\\', '\' )
&Selected = Trim(&Selected)

For Each Line
If &G_Sel = 'S' //ESTA ES LA VARIABLE DEL GRID checkbox para seleccionar linea

&rutaXML = &Selected + &G_nombre_archivo.Trim() + '.xml'

&URL = 'http://MiXML.com/download/getXML?id=' + &G_ID.Trim()
&xml = &G_Valor.Trim()
VB Dim xml As String
VB xml = [!&xml!]
VB Dim url_ws As String
VB url_ws = [!&URL!]

VB Dim xmlUrlEncode As String
VB Dim parametro As String
VB For i = 1 To Len(xml)
VB xmlUrlEncode = xmlUrlEncode & "%" & Right$("0" & Hex$(Asc(Mid$(xml, i, 1))), 2)
VB Next i
VB 'MsgBox "UrlEncode: " & xmlUrlEncode
VB Dim xmlhttp As Object
VB Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
VB xmlhttp.Open "POST", url_ws, False
VB xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
VB parametro = "valor=" & xmlUrlEncode
VB xmlhttp.setRequestHeader "Content-Length", Len(parametro)
VB xmlhttp.Send (parametro)
VB respuesta = xmlhttp.responseText
VB [!&respuesta!] = respuesta

&XMLWriter.Open(&rutaXML)
&XMLWriter.WriteRawText(&respuesta)
&XMLWriter.Close()


//LIMPIA VARIABLES PORQUE CUANDO DESCARGA MAS DE 1 XML SOLO EL PRIMERO LO HACE BIEN
&URL = NullValue(&URL)
&xml = NullValue(&xml)
&respuesta = NullValue(&respuesta)
VB Set xmlhttp = Nothing
VB Set respuesta = Nothing
// &XMLWriter= NullValue(&XMLWRITER) -- quise intentar esto pero me marco error
// &XMLWriter= '' -- quise intentar esto pero me marco error


EndIf // If &G_Sel = 'S'
EndFor


EndEvent // Download_XML'
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder