Condividi tramite

VBA E XML

Anonimo
2015-03-28T14:55:22+00:00

Salve a tutti avrei una domanda relativa alla creazione di file xml tramite vba access, il mio problema è descritto qua sotto.

ho usato questo codice per creare l' xml:

Dim objDom As DOMDocument

   Dim objRootElem As IXMLDOMElement

   Dim objMemberElem As IXMLDOMElement

   Dim objMemberRel As IXMLDOMAttribute

   Dim objMemberName As IXMLDOMElement

   Set objDom = New DOMDocument

   ' Creates root element

   Set objRootElem = objDom.createElement("fatturaElettronica")

   objDom.appendChild objRootElem

   ' Creates Member element

   Set objMemberElem = objDom.createElement("FatturaElettronicaHeader")

   objRootElem.appendChild objMemberElem

   ' Creates Attribute to the Member Element

   'Set objMemberRel = objDom.createAttribute("")

   'objMemberRel.nodeValue = "Father"

  ' objMemberElem.setAttributeNode objMemberRel

   ' Create element under Member element, and

   ' gives value "some guy"

   Set objMemberName = objDom.createElement("DatiTrasmissione")

   objMemberElem.appendChild objMemberName

   objMemberName.Text = ""

   ' Saves XML data to disk.

   objDom.Save ("d:\archivio2\prova4.xml")

Fin qui ok il codice funziona ma sono fermo all'ultima riga ovvero volevo sapere se esiste un modo per creare altri sotto elementi dal quell'elemento sempre in vba si intende.

mi serve e sono in alto mare qualcuno ha idee su questo argomento.

ringrazio tutti in anticipo.

Tanino

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

12 risposte

Ordina per: Più utili
  1. Anonimo
    2015-03-28T16:15:34+00:00

    ciao Tanino,

    credo che tu debba ciclare il recordset fino a eof e creare i nodi corrispondi ai fields/records che hai nella tabella.

    del tipo :

    parte delle dichiarazioni:

        Dim node As MSXML2.IXMLDOMNode

        Dim i As Integer

        Dim rst As DAO.Recordset

    '

    '

    '

     Do While Not rst.EOF

            Set node = objDom.createElement(rst.Fields(i).Name)

            'objMemberElem.appendChild objMemberName

            'objMemberElem.appendChild node

            objRootElem.appendChild node

            node.Text = Nz(rst.Fields(i).Value, "nullo")

            'objMemberName.Text = ""

            i = i + 1

            If i = rst.Fields.Count - 1 Then i = 0

            rst.MoveNext

        Loop

         ' Saves XML data to disk.

     objDom.Save ("d:\archivio2\prova4.xml")

    facci sapere!

    ciao, Sandro.

    La risposta è stata utile?

    2 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2015-03-29T12:34:59+00:00

    Ciao scusa l'impressione, per essere precisi a me serve creare un XML compatibile   con quello richiesto per l'invio della fattura elettronica, i dati di voi prenderli da diverse tabelle, ho scaricato lo schema adatto dal. Sito dell'Agenzia delle. Entrate e ora devo riprodurlo basandomi sul mio data base access.

    Basta una **** e non lo accetta.

    In altre parole si compone come il. Mio codice,  ma bisogna farlo più specifico per quello ti ho chiesto il modo di fare altri sottoelementi basati su sottoelementi. 

    Saluto Tanino

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-03-29T11:30:20+00:00

    ciao Tanino,

    credo tu debba darci qualche indicazione in più....

    il file xml che devi creare per certo "prende" per così' dire le informazione da tabelle.

    quindi, stiamo parlando di una tabella o più tabelle? questo incide su come il file xml deve essere creato.

    Generalmente in un db normalizzato hai una tabella per le fatture ed un'altra per le "righe" ti trovi in questo scenario?

    Nel precedente post manca il riferimento alla variabile oggetto del recordset,

    set rst=dbegine(0)(0).openRecordset("miaTabella", dbopentable)

    da inserire prima del ciclo do...while....

    sostituisci ovviamente miaTabella, con il nome corretto della tabella per la quale necessiti il file xml.

    E' un'ipotesi solamente in attesa di info più precise.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-03-29T11:01:43+00:00

    Ciao Sandro grazie della dritta, il problema è che mi da un messaggio riferito all'oggetto suppongo sia riferito alle tabelle, ma ho due domande, conosco poco il vba cerco di interpretare e adattare.

    come inserisco i riferimenti alle tabelle interessate?

    la stringa che mi hai dato ove la inserisco esattamente?

    scusa le domande all'apparenza stupide.

    Grazie Mille

    saluti Tanino

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-03-28T16:26:51+00:00

    meglio così :

     Do While Not rst.EOF

           For i = 0 To rst.Fields.Count - 1

               Set node = objDom.createElement(rst.Fields(i).Name)

               'objMemberElem.appendChild objMemberName

               'objMemberElem.appendChild node

               objRootElem.appendChild node

               node.Text = Nz(rst.Fields(i).Value, "nullo")

               'objMemberName.Text = ""

            Next

        rst.MoveNext

       Loop

    Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento