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 original
Private 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