Passa al contenuto principale

PUTXMLDATA

DesktopWeb
warning
La specifica è deprecata nei sorgenti con STRICT maggiore o uguale a 3, al suo posto vedere classe BC_XML_DOCUMENT

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

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
TABELLAStringaINDesktopWeb
BLOBBlobOUTDesktopWeb
ERROREInteroINDesktopWeb
ELEMENTOXmlElementINObbligatorioDesktopWeb
TIPOSCRITTURAEnumerazioneINDesktopWeb
PROTEGGISCRITTURAInteroINDesktopWeb
CHIUDIInteroINValore non necessarioDesktopWeb
INIZIOInteroINValore non necessarioDesktopWeb
FINEInteroINValore non necessarioDesktopWeb
GESAzioneINDesktopWeb

TABELLA

StringaINInputValore non necessarioValore non necessarioDesktopWeb

Indica il nome del file XML da scrivere, completo di percorso.

BLOB

BlobOUTOutputValore non necessarioValore non necessarioDesktopWeb

Consente di indicare la variabile di tipo BLOB in cui deve essere salvato l'intero contenuto del file XML.

ERRORE

InteroINInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

Consente al programma di intercettare e gestire l'errore restituito dalla funzione.

suggerimento

Utilizzare uno dei metodi GetLastError*() della classe BCContextInfo per ottenere le informazioni dell'errore.

ELEMENTO

XmlElementINInputObbligatorioObbligatorioValore non necessarioValore non necessarioDesktopWeb

Identifica l'elemento da scrivere.

TIPOSCRITTURA

EnumerazioneINInputValore non necessarioValore non necessarioDesktopWeb

Identifica la Tipologia di scrittura del file nel caso in cui sia già esistente.

Parametro enumerato, può assumere i seguenti valori:

ValoreDescrizione
RICHIEDEÈ il comportamento di default, fino ad ora gestito, ovvero se il file esiste viene presentata una box di richiesta della sovrascrittura
RICOPRESe il file esiste viene prima cancellato e poi si procede con la scrittura, senza presentare nessun messaggio a video
NONRICOPRESe il file esiste non viene sovrascritto, e quindi si termina l'esecuzione della PUTXMLDATA

PROTEGGISCRITTURA

InteroINInputValore non necessarioValore non necessarioDesktopWeb

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

InteroINInputDesktopWeb

Se presente, indica al programma di eseguire la chiusura fisica del file XML.

INIZIO

InteroINInputDesktopWeb

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

InteroINInputDesktopWeb

Indica la fine dell'elemento e che quindi deve essere scritto sul file il tag di chiusura.

GES

AzioneINInputValore non necessarioValore non necessarioDesktopWeb

[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

CodiceDescrizione
22015Aggiornamento del file XXX. In fase di chiusura del file si e' verificato l'errore: 'Descrizione errore'
22018Scrittura file XML. Attenzione! Si e' verificato un errore nella scrittura dell'elemento 'XXX': 'Descrizione errore' Il file 'YYY' non viene scritto in formato corretto.
22020Scrittura file XML. Attenzione! L'elemento XXX non e' stato definito tramite @DEFXMLDATA, e non verra' quindi aggiornato!.
22021Impossibile avviare la scrittura su file XML: libreria MSXML4.dll non individuata
22022Scrittura su file XML non eseguita. Il file esiste e non viene ricoperto.
22023Attenzione! Impossibile creare il file XXX
22028PutXMLData - Scrittura file XML. Attenzione! Il file 'XXXX' esiste gia': sovrascrivere il file esistente?
22029Scrittura 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