PUTXMLDATA
La specifica '@PUTXMLDATA si occupa di scrivere gli elementi in formato XML.
La scrittura di un file XML da programma BC avviene in modo sequenziale, per elementi.
La logica di scrittura prevede che ciascuna '@PUTXMLDATA, richiamata dopo che il programma avrà impostato in modo opportuno le variabili definite per l'elemento in '@DEFXMLDATA, si occupa di scaricare un elemento e i suoi attributi, richiamando successivamente una routine per scaricare gli elementi di dettaglio (se presenti), annidando a piacere i medesimi.
È necessario qualificare la specifica che provvede a chiudere completamente il file.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| TABELLA | Stringa | ||||
| BLOB | Blob | ||||
| ERRORE | Intero | ||||
| ELEMENTO | XmlElement | ||||
| TIPOSCRITTURA | Enumerazione | ||||
| PROTEGGISCRITTURA | Intero | ||||
| CHIUDI | Intero | ||||
| INIZIO | Intero | ||||
| FINE | Intero | ||||
| GES | Azione |
TABELLA
Indica il nome del file XML da scrivere, completo di percorso.
BLOB
Consente di indicare la variabile di tipo BLOB in cui deve essere salvato l'intero contenuto del file XML.
ERRORE
Consente al programma di intercettare e gestire l'errore restituito dalla funzione.
Utilizzare uno dei metodi GetLastError*() della classe BCContextInfo per ottenere le informazioni dell'errore.
ELEMENTO
Identifica l'elemento da scrivere.
TIPOSCRITTURA
Identifica la Tipologia di scrittura del file nel caso in cui sia già esistente.
Parametro enumerato, può assumere i seguenti valori:
| Valore | Descrizione |
|---|---|
RICHIEDE | È il comportamento di default, fino ad ora gestito, ovvero se il file esiste viene presentata una box di richiesta della sovrascrittura |
RICOPRE | Se il file esiste viene prima cancellato e poi si procede con la scrittura, senza presentare nessun messaggio a video |
NONRICOPRE | Se il file esiste non viene sovrascritto, e quindi si termina l'esecuzione della PUTXMLDATA |
PROTEGGISCRITTURA
Abilita la modalità di scrittura protetta, ovvero la specifica scrive un file temporaneo e lo rinomina con il nome effettivo solo quando la scrittura è terminata correttamente.
Il file temporaneo scritto avrà il nome composto come:
\<tabella\> BC \<nome file effettivo\>.~\<estensione senza primo carattere\> \</tabella\>
Ad esempio se sto scrivendo il file CFGAGHI.SXP, il file temporaneo sarà CFGAGHI.~XP.
Può assumere i seguenti valori:
- 0 No, non abilita la modalità di protezione
- 1 Sì, abilita la modalità di protezione
CHIUDI
Se presente, indica al programma di eseguire la chiusura fisica del file XML.
INIZIO
Indica che di un certo elemento deve essere scritto solo il tag di inizio; la scrittura del contenuto dell'elemento sarà operato da un'altra specifica @PUTXMLDATA, così come la chiusura. L'indicazione di questo parametro sottintende la scrittura degli attributi dell'elemento (sia = che /).
FINE
Indica la fine dell'elemento e che quindi deve essere scritto sul file il tag di chiusura.
GES
[ScriviSottoElementi] Definisce la routine di scrittura dei sottoelementi (composti) che deve essere richiamata successivamente alla scrittura degli attributi dell'elemento a cui si riferisce.
Errori
| Codice | Descrizione |
|---|---|
| 22015 | Aggiornamento del file XXX. In fase di chiusura del file si e' verificato l'errore: 'Descrizione errore' |
| 22018 | Scrittura file XML. Attenzione! Si e' verificato un errore nella scrittura dell'elemento 'XXX': 'Descrizione errore' Il file 'YYY' non viene scritto in formato corretto. |
| 22020 | Scrittura file XML. Attenzione! L'elemento XXX non e' stato definito tramite @DEFXMLDATA, e non verra' quindi aggiornato!. |
| 22021 | Impossibile avviare la scrittura su file XML: libreria MSXML4.dll non individuata |
| 22022 | Scrittura su file XML non eseguita. Il file esiste e non viene ricoperto. |
| 22023 | Attenzione! Impossibile creare il file XXX |
| 22028 | PutXMLData - Scrittura file XML. Attenzione! Il file 'XXXX' esiste gia': sovrascrivere il file esistente? |
| 22029 | Scrittura file XML. Attenzione! Errore nella copia del file XXX nel file YYY! Il file di destinazione e' occupato! |
Esempi
Scrittura di elementi XML con sub di gestione
' 1) Definizione degli elementi ed attributi rilevanti per l'elaborazione
'@DEFXMLDATA DENUNCEMENSLI "\\DenunceMensili"
ENDDATA
'@DEFXMLDATA DATIMITTENTE "\\DenunceMensili\\DatiMittente"
"Tipo" DatiMitTipo [=]
"CFPersonaMittente" DatiMitCF [/]
"RagSocMittente" DatiMitRS [/]
"Softwarehouse" DatiMitSH [/]
"SedeINPS" DatiMitINPS [/]
ENDDATA
'@DEFXMLDATA AZIENDA "\\DenunceMensili\\Azienda"
"CFAzienda" AziendaCF [=]
"AnnoMeseDenuncia" AziendaAM [=]
"RagSocAzienda" AziendaRS [=]
ENDDATA
'@DEFXMLDATA POSCONTRIBUTIVA "\\DenunceMensili\\Azienda\\PosContributiva"
"Composizione" PCComposizione [=]
ENDDATA
'@DEFXMLDATA MATRICOLA "\\DenunceMensili\\Azienda\\Matricola"
"Codice" MatricolaCod [/]
"Descrizione" MatricolaDes [/]
"Coefficiente" MatricolaCoeff [/]
ENDDATA
' 2) Scrittura del file, a partire dalla radice
'@PUTXMLDATA TABELLA[XmlFile] _
ERRORE[Errore] _
ELEMENTO[DENUNCEMENSLI] GES[ScriviDenunceMensili()] _
CHIUDI
IF Errore <> 0 THEN
MESSAGEBOX(#ERRORE,"Errore","Terminata con errore: " + BCContextInfo.GetLastErrorMessage())
ENDIF
...
'@SRP ScriviDenunceMensili()
' L'elemento DENUNCEMENSILI contiene 2 sottoelementi: DATIMITTENTE e
' AZIENDA: li devo scrivere entrambi, uno di seguito all'altro.
' DATIMITTENTE non ha sottoelementi, per cui non prevede una sub
' di gestione
' Valorizzazione delle variabili DatiMit*
'@PUTXMLDATA TABELLA[XmlFile] ELEMENTO[DATIMITTENTE] ERRORE[Errore]
' Valorizzazione delle variabili Azienda*
'@PUTXMLDATA TABELLA[XmlFile] _
ELEMENTO[AZIENDA] GES[ScriviAzienda()] _
ERRORE[Errore]
Return
...
'@SRP ScriviAzienda()
' L'elemento AZIENDA contiene 2 sottoelementi: POSCONTRIBUTIVA e
' MATRICOLA: li devo scrivere entrambi, uno di seguito all'altro.
' Entrambi questi elementi non hanno sottoelementi, per cui non
' prevedono sub di gestione
' Valorizzazione delle variabili PC*
'@PUTXMLDATA TABELLA[XmlFile] ELEMENTO[POSCONTRIBUTIVA] ERRORE
' Valorizzazione delle variabili Matricola*
'@PUTXMLDATA TABELLA[XmlFile] ELEMENTO[MATRICOLA]
Return
Scrittura di elementi XML con utilizzo della notazione INIZIO-FINE
' 1) Definizione degli elementi ed attributi rilevanti per l'elaborazione
'@DEFXMLDATA DENUNCEMENSLI "\\DenunceMensili"
ENDDATA
'@DEFXMLDATA DATIMITTENTE "\\DenunceMensili\\DatiMittente"
"Tipo" DatiMitTipo [=]
"CFPersonaMittente" DatiMitCF [/]
"RagSocMittente" DatiMitRS [/]
"Softwarehouse" DatiMitSH [/]
"SedeINPS" DatiMitINPS [/]
ENDDATA
'@DEFXMLDATA AZIENDA "\\DenunceMensili\\Azienda"
"CFAzienda" AziendaCF [=]
"AnnoMeseDenuncia" AziendaAM [=]
"RagSocAzienda" AziendaRS [=]
ENDDATA
'@DEFXMLDATA POSCONTRIBUTIVA "\\DenunceMensili\\Azienda\\PosContributiva"
"Composizione" PCComposizione [=]
ENDDATA
'@DEFXMLDATA MATRICOLA "\\DenunceMensili\\Azienda\\Matricola"
"Codice" MatricolaCod [/]
"Descrizione" MatricolaDes [/]
"Coefficiente" MatricolaCoeff [/]
ENDDATA
' 2) Scrittura del file, a partire dalla radice
'@PUTXMLDATA TABELLA[XmlFile] ELEMENTO[DENUNCEMENSLI] _
ERRORE[Errore] _
INIZIO
IF Errore <> 0 THEN
MESSAGEBOX(#ERRORE,"Errore","Terminata con errore: " + BCContextInfo.GetLastErrorMessage())
ENDIF
' L'elemento DENUNCEMENSILI contiene 2 sottoelementi: DATIMITTENTE e
' AZIENDA: li devo scrivere entrambi, uno di seguito all'altro.
' DATIMITTENTE non ha sottoelementi, per cui non prevede una sub
' di gestione
...
' Valorizzazione delle variabili PC*
'@PUTXMLDATA TABELLA[XmlFile] ELEMENTO[POSCONTRIBUTIVA] ERRORE[Errore]
...
' Valorizzazione delle variabili Matricola*
'@PUTXMLDATA TABELLA[XmlFile] ELEMENTO[MATRICOLA] ERRORE[Errore]
'@PUTXMLDATA TABELLA[XmlFile] ELEMENTO[AZIENDA] ERRORE[Errore] _
FINE
'@PUTXMLDATA TABELLA[XmlFile] ELEMENTO[DENUNCEMENSLI] ERRORE[Errore] _
FINE CHIUDI
IF Errore <> 0 THEN
MESSAGEBOX(#ERRORE,"Errore","Terminata con errore: " + BCContextInfo.GetLastErrorMessage())
ENDIF
Scrittura di un file XML con utilizzo della scrittura protetta
'@PUTXMLDATA TABELLA["prova.xml"] _
ELEMENTO[ELENCO] INIZIO _
TIPOSCRITTURA[#RICOPRE] PROTEGGISCRITTURA
'@PUTXMLDATA TABELLA["prova.xml"] ELEMENTO[SUB-ELENCO1]
'@PUTXMLDATA TABELLA["prova.xml"] ELEMENTO[SUB-ELENCO2]
'@PUTXMLDATA TABELLA["prova.xml"] ELEMENTO[SUB-ELENCO3]
'@PUTXMLDATA TABELLA["prova.xml"] ELEMENTO[ELENCO] FINE CHIUDI