Hola,
Os comento lo que necesito a ver si me podéis ayudar.
Tengo un función en la que guardo unas datos en unas variables y esta después de llamar a unas funciones que hacen unas comprobaciones, crea el primer tag de un xml y llama varias veces a una función que lo que hace es cargar los datos en el xml y al salir del bucle que hay en la primera función llama de nuevo a esa función que genera el xml para cargar los datos que faltan ya que los datos que faltan son cosas que tengo que calcular de lo anterior.
Os dejo la función esta para que entendáis mejor (marco en negrita la función que se encarga de generar el xml):
Código vb:
Ver originalPrivate Sub sExtraerDatosXML(ByVal oCentro)
Dim oHijo, oNieto, oBizNieto, oRaiz As MSXML2.IXMLDOMNode
Dim oXMLDocFSGS As MSXML2.DOMDocument60
On Error GoTo error:
If oCentro.Attributes(0).baseName = "code" Then
strInCODE = oCentro.Attributes(0).Text
strInCODE = Left(strInCODE, 15) 'ACORTAR A 100
End If
iImporte = 0
For Each oHijo In oCentro.childNodes
Select Case oHijo.nodeName
Case "FirstPeriod"
strInFECINIYEAR = IIf(IsNull(oHijo.Attributes(0).Text), "", oHijo.Attributes(0).Text)
strInFECINIMTH = IIf(IsNull(oHijo.Attributes(1).Text), "", oHijo.Attributes(1).Text)
Case "LastPeriod"
strInFECFINYEAR = IIf(IsNull(oHijo.Attributes(0).Text), "", oHijo.Attributes(0).Text)
strInFECFINMTH = IIf(IsNull(oHijo.Attributes(1).Text), "", oHijo.Attributes(1).Text)
Case "AssetCategories"
Call sValidarDatosCode
FechaINI = DateSerial(strInFECINIYEAR, strInFECINIMTH + 0, 1)
FechaFIN = DateSerial(strInFECFINYEAR, strInFECFINMTH + 1, 0)
Call calcularUON1(strInCODE)
'GENERAR PRIMERA PARTE DEL XML
Set oXMLDocFSGS = New MSXML2.DOMDocument60
Set oRaiz = oXMLDocFSGS.createNode(NODE_ELEMENT, "PARTIDAS", "")
oXMLDocFSGS.appendChild oRaiz
For Each oNieto In oHijo.childNodes
Select Case oNieto.nodeName
Case "AssetCategory"
strInCATEGORYCODE = IIf(IsNull(oNieto.Attributes(0).Text), "", oNieto.Attributes(0).Text)
strInCATEGORYDESCRIPT = IIf(IsNull(oNieto.Attributes(1).Text), "", oNieto.Attributes(1).Text)
strInCATEGORYCASH = IIf(IsNull(oNieto.Attributes(2).Text), "", oNieto.Attributes(2).Text)
For Each oBizNieto In oNieto.childNodes
Select Case oBizNieto.nodeName
Case "AccountingAmount"
strInAMOUNTCURRENCY = IIf(IsNull(oBizNieto.Attributes(0).Text), "", oBizNieto.Attributes(0).Text)
strInIMPORTE = IIf(IsNull(oBizNieto.Text), "", oBizNieto.Text)
End Select
Next
End Select
'guarda en importe para luego mandarlo en el importe general
iImporte = CDbl(Replace(strInIMPORTE, ".", ",")) + iImporte
Call sValidarDatosCategory(CDbl(Replace(strInIMPORTE, ".", ",")))
[B]TratarAsset oXMLDocFSGS, oRaiz, strACCIONNivel2, strInCATEGORYDESCRIPT, strInCATEGORYCODE, CDbl(Replace(strInIMPORTE, ".", ",")), strInCODE[/B]
Next
End Select
Next
'genera los datos del xml que faltan metiendo el importe general
[B]TratarAsset oXMLDocFSGS, oRaiz, strACCIONNivel1, "code", strInCODE, iImporte, strInCODE[/B]
Set oHijo = Nothing
Exit Sub
error:
End Sub