Newsgroup: it.comp.appl.access
Titolo: Application.exportXML -  escludere i campi indice e chiavi primarie

ciao a tutti, voglio sottoporvi la seguente osservazione.
Il metodo ExportXML consente di poter esportare una o più tabelle in
formato xml.
Ho necessità di esportare quasi tutti i campi di alcune tabelle
relazionate, in un file XML.
utilizzando questo metodo è possibile utilizzare l'argomento
otherflags e impostarlo al valore acExcludePrimaryKeyAndIndexes.
In pratica in questo modo dovrei escludere i campi indice e chiavi
primarie, che è esattamente quello che voglio!
Purtroppo il file creato in xml  contiene i campi indice e chiavi
primarie, e non so come fare per escludere i suddetti campi.
Questo metodo consente anche di esportare query maschere e report, ho
pensato così di esportare una maschera inserendo soltanto i campi che
mi interessano, ma anche questo tentativo non è andato a buon fine e
sembra che in ogni caso il metodo  faccia riferimento, in ultima
analisi, alle tabelle comprese le stramaledette chiavi primarie e
indici.
Ho scoperto che vi è un parser xml denominato msxml2, dal quale
indicando il giusto riferimento, è possibile manipolare documenti xml,
e quindi aggiungere nodi modificare nodi e Rimuovere nodi.
Avendo gia il documento creato mediante l'exportXML, ho provato a far
qualcosa ... ma ammetto che non lo trovo semplice (le guide che ho
trovato sono estremamente sintetiche).
Vorrei evitare di arrivare a quest'ultima soluzione, e sarei lieto se
qualcuno mi potesse indicare una possibile soluzione.
Grazie in anticipo


Ciao Grisu,
la proprietà di cui parli acExcludePrimaryKeyAndIndexes esclude le
informazioni sulle chiavi primarie e sugli indici dal file dello schema
(XSD) che eventualmente viene creato non dal file XML.
Per escludere alcuni campi dall'esportazione mi verrebbe da dire che
probabilmente il modo più semplice è quello di escluderli dalla query che
vai ad esportare.
Un altra possibilità è quella di agire con un file di trasformazione XSL che
applicato all'XLM consente di applicare delle trasformazioni nascondendo o
aggiungendo parti, ma la soluzione più immediata rimane a mio parere la
precdente.
-- 
Cinzia
---------------------------------------
|  
http://www.riolab.org
  |
---------------------------------------

Cinzia ha scritto:

Ciao Cinzia e Grazie per la tempestività nonostante la festività,
Queste prove le ho fatte, però non danno il risultato sperato. Mi
spiego.
Quando esporti query maschere o tabelle e utilizzi il metodo exportXML,
e i dati sono interessati da relazioni, non puoi togliere gli indici e
le chiavi primarie, perchè altrimenti li esporta come tabelle
separate. In altre parole se ho una relazione da 1 a molti che
interessa le tabelle Ordini e DettagliOrdini, voglio ottenere un file
xml  che abbia come elemento Padre Ordine e come Elemento figlio
DettagliOrdine. In tutto questo, Poichè il file xml non deve contenere
i campi relativi agli indici, se esporto senza indici (tabelle,
maschere , query); il file generato mi riporta dati delle tabelle,  ma
vado a perdere quella relazione padre-figlio tipica di XML.
Per Quanto riguarda la proprietà acExcludePrimaryKeyAndIndexes, sono
daccordo con te ma il fatto è che se analizzi il file generato .XSD,
ti accorgi che gli indici sono esportati ugualmente (si tratta di un
bug?)
A che serve Poter esportare report Query maschere se alla fine si rifà
sempre alle tabelle?
Sicuramente ci sarà un modo che consente di filtrare i campi!
Solo che io non lo conosco!
P.S. ho sentito tanto parlare di te alla scorsa edizione del CISA  a
Paola.

 Paola.
Ciao grisu,
ho provato con nortwind ad esportare in XML la tabella Orders e Order
Details, se tu  selezioni l'opzione acExcludePrimaryKeyAndIndexes ottieni
un file xsd con lo schema delle due tabelle ma nessuna indicazione sulle
chiavi primarie e gli indici se invece non selezioni l'opzione
acExcludePrimaryKeyAndIndexes   hai in più questo :
<xsd:appinfo>
<od:index index-name="PrimaryKey" index-key="OrderID " primary="yes"
unique="yes" clustered="no"/>
<od:index index-name="CustomerID" index-key="CustomerID " primary="no"
unique="no" clustered="no"/>
<od:index index-name="EmployeeID" index-key="EmployeeID " primary="no"
unique="no" clustered="no"/>
<od:index index-name="OrderDate" index-key="OrderDate " primary="no"
unique="no" clustered="no"/>
<od:index index-name="ShippedDate" index-key="ShippedDate " primary="no"
unique="no" clustered="no"/>
<od:index index-name="ShipPostalCode" index-key="ShipPostalCode "
primary="no" unique="no" clustered="no"/>
</xsd:appinfo>
 che appunto da informazioni su chiavi primarie e indici.
Mi pare di capire che a te interessa escludere qualche campo dall'XML
generato,  ma per fare questo  puoi usare ad esempio le trasformazioni XSLT
qui trovi 
http://msdn2.microsoft.com/en-us/library/ms763742.aspx
  tutta la
documentazione su XML XSLT e quantaltro con anche qualche esempio, spero
possano essere utili.
Ciao


 <od:index index-name="CustomerID" index-key="CustomerID " primary="no"
contenevano  ----primary="no"-------.
Quindi ti chiedo scusa per la precedente notazione... in effetti
speravo che il fatto di non trovare gli indici nel file di shema,
potesse essere significativo sulla questione dell'esportazione, anche
se avevo letto che la proprietà acExcludePrimaryKeyAndIndexes  agiva
solo per quanto riguarda l'esportazione di un eventuale file .XSD;...
Speravo in un bug ..  :-).
Proverò con l'XSLT, pazienza!
Ancora Grazie!