2012-02-09 14 views
7

Ho bisogno di trasferire le macro di dati di accesso dal mio db di test al mio db di produzione. Qualcuno sa come farlo?come esportare macro di dati di Access 2010

so che il trasferimento di tabelle da un accdb ad un altro sarà anche trasferire le macro di dati, ma non è un'opzione nel mio caso. So anche che posso ricrearli manualmente nell'accdb di produzione, ma questo mi lascia aperto agli errori e richiede di tenere il database di produzione inattivo per un tempo più lungo rispetto a uno scenario di trasferimento tramite script.

Se ho solo dovuto fare una volta questo non sarebbe un grosso problema, ma ho bisogno di fare molte volte nel corso di un progetto di sviluppo.

Ho provato esportare le tabelle in formato XML, ma le macro dati non sono inclusi.

Si prega di notare che sto chiedendo di Access 2010 data macro qui, non regolari macro di Access.

risposta

3

Non ho una grande risposta qui.

Tuttavia, in passato ho spesso fatto un "giornale di bordo" di modifiche alle tabelle e poi semplice usata che in loco.

Notare che è possibile tagliare + incollare il codice macro. E il codice salva come XML.

Ad esempio, questo trigger dopo la tabella di aggiornamento si presenta così in Access:

enter image description here

Se si taglia fuori il sopra (Ctrl-A, ctrl-cc) ,, allora si può incollare che in un blocco note. In realtà si può anche incollare/aprirlo in Visual Studio o qualsiasi editor XML, e si vede questo:

enter image description here

modo da poter tagliare + incolla da quelle macro.

come noto, in tal modo, in passato ho spesso tenuto un "log" di cambiamenti.

Quindi, se stavo lavorando fuori sede e ho modificato 2 moduli di codice, 4 moduli e 2 rapporti, poi ho avuto un po 'di log delle modifiche. Vorrei digitare in questo foglio quale oggetto è stato modificato.

Quando arrivo sul sito, guardo rapidamente quel foglio e so di importare i 3-5 oggetti e tale importazione è solo pochi minuti in cima.

Tuttavia, con i trigger di tabella e le procedure di archiviazione, è possibile avere più di pochi da copiare.

avrei neanche fare una delle due cose:

Utilizzare l'idea di registro e

a) Un-pubblicare la versione di sviluppo e portare con me al vostro sito di lavoro. Quindi importare nuovi moduli, report, ecc. Per il codice trigger, si taglia + incolla tra le due applicazioni.

b) Quando si modifica un trigger, quindi tagliare + incollare in un blocco note e posizionarli in una directory. Quando sei sul posto, prendi semplicemente un blocco note, taglia + incolla in produzione e poi sposta o copia l'oggetto del blocco note in una cartella "completata".

Quanto sopra è certamente meno ideale. Poi di nuovo in passato non ho sempre avuto il codice per scrivere un cambio di tabella, e l'utilizzo di un piccolo foglio di registro ha funzionato abbastanza bene.

Quindi in passato ho scritto spesso che tale e tale tabella è stata modificata e devo aggiungere una colonna di questo tipo.

Quindi è davvero una tua scelta se vuoi tagliare + incollare il codice macro come xml in piccoli documenti separati, o tagliare + incollare direttamente dallo sviluppo in produzione.

Penso che se si lavora in una posizione diversa, quindi penso che sia probabilmente meglio annullare la pubblicazione della versione di sviluppo e portarla con sé (presumo che tu sappia/realizzi che puoi fare una copia non pubblicata di un'applicazione web).

Quindi i moduli, i moduli di codice, le macro ecc. Possono essere importati semplicemente piuttosto facilmente (si eliminano i moduli ecc. E si importa solo da quella copia non pubblicata).

Tuttavia, per il codice tabella? Devi tagliare + incollare da quella copia non pubblicata uno alla volta in un'area di staging, o come annotato cut + paste tra le applicazioni.

C'è la possibilità che il testo di salvataggio come potrebbe funzionare qui, ma non ho ancora avuto il tempo di preparare una soluzione migliore.

Modifica: A proposito, in precedenza ho assunto un database di servizi Web, ma il consiglio si applica ancora ai database di accesso non Web.

+0

Grazie per il tuo tempo e per tutti i dettagli Albert. Le informazioni XML sono davvero utili. Anche Ctrl-C, Ctrl-V funziona davvero bene. In base alla tua reputazione, sto prendendo questo come risposta del Vangelo. Grazie ancora – unrazzle

6

Si consiglia di provare un paio di funzioni non documentate VBA

Per esportare:

SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml" 

Per importare:

LoadFromText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml" 
4

Per espandere su Martijn Pieters'/La risposta di Lanik (grazie Martijn e Lanik), ho avuto la necessità di creare virtualmente le stesse macro di dati su 28 diverse tabelle, con AfterInsert, AfterUpdate, AfterDelete e una macro dati denominata su ciascuna. Così, ho usato il comando SaveAsText

SaveAsText acTableDataMacro, "TableName", "C: \ PercorsoFile \ DataMacro.xml"

per creare un modello, poi utilizzato tale modello per creare il 28 xml file tramite un piccolo codice vba, sostituendo i nomi delle tabelle, le chiavi primarie, ecc. Ho anche creato 28 comandi LoadFromText. Potrei quindi utilizzare i comandi LoadFromText per caricare tutte le macro contemporaneamente, con un processo ripetibile. Ora che ho terminato i test, posso aggiornare rapidamente il database di produzione in questo modo o aggiungere facilmente le stesse macro di dati ad altre tabelle.

Così come altri sanno, LoadFromText sovrascrive eventuali macro precedenti, il che è eccezionale poiché non avevo il mio modello corretto al primo tentativo.

Considerato quanto sopra, il passaggio successivo consiste nel fare in modo che l'applicazione di database "updater" utilizzi un comando DoCmd.TransferDatabase per trasferire il modulo con una funzione/sottotitoli con tutti i comandi LoadFromText sul file .accdb. Dovrebbe anche trasferire una macro per eseguire la funzione/sub. Ho provato ad avere il mio programma di aggiornamento quindi eseguire la macro per caricare i dati macro, ma la sicurezza di accesso ha impedito. quindi, potrebbe essere necessario che il tuo utente apra il database e lo abiliti, quindi esegui la macro.Questo è più complicato se potessimo modificare direttamente le macro dei dati, ma forniamo una soluzione che risolva il problema.

+0

Ottima risposta. Ho riscontrato un problema durante l'utilizzo del codice 'SaveAsText acTableDataMacro' e [Ho postato una domanda qui] (http://stackoverflow.com/questions/31755802/can-i-use-access-vba-to -Determinare-se-a-tavolo-ha-un-data-macro). –

0

Ho avuto lo stesso problema con l'impossibilità di trovare la macro corretta per esportare in formato xml. Tuttavia, ho potuto fare clic con il tasto destro del mouse sulla mia query ed esportare in xml in questo modo, quindi sapevo che era possibile.

Tuttavia, volevo farlo funzionare da un pulsante e ho trovato un modo semplice per farlo senza scrivere alcun codice vba.

Per prima cosa è necessario esportare la tabella o la query manualmente facendo clic con il pulsante destro del mouse sulla tabella o query e selezionando l'esportazione e scegliere xml come tipo di file. Alla fine è possibile salvare i passaggi di esportazione, è sufficiente selezionare la casella per salvare i passaggi e assegnare ai passaggi di esportazione un nome appropriato. Dopo aver eseguito questa operazione, è possibile eseguire i passaggi di esportazione tramite una macro utilizzando l'azione RunSavedImportExport. Basta selezionare il nome dell'esportazione salvata che hai creato quando hai esportato manualmente. Lavoro fatto. Spero che questo aiuti gli altri.

+2

FYI: I dati macro non sono inclusi nell'XML - l'ho appena provato su Access 2013. – HarveyFrench

0

Fare clic con il tasto destro del mouse sulla macro e selezionare Export e quindi selezionare il database che riceverà la macro.

+0

So che funziona con i normali macro elencati nel riquadro di spostamento, ma si applica anche ai macro dati, ad esempio, prima del cambiamento, Dopo l'inserimento, ...? (Non penso che lo faccia.) –

Problemi correlati