2012-02-09 11 views
7

Potrzebuję przenieść makra danych dostępu z bazy danych testowej do mojej bazy produkcyjnej. Czy ktoś wie, jak to zrobić?jak wyeksportować makra danych dostępu do programu Access 2010

Wiem, że przenoszenie tabel z jednego accdb na inny spowoduje również transfer makr danych, ale nie jest to opcja w moim przypadku. Wiem też, że mogę je odtworzyć ręcznie w pliku accdb, ale to pozostawia mnie otwartymi na błędy i wymaga obniżenia produkcji bazy danych przez dłuższy czas niż scenariusz przeniesienia skryptów.

Gdybym tylko musiał to zrobić raz, nie byłoby to takie wielkie przedsięwzięcie, ale muszę to zrobić wiele razy w trakcie projektu rozwojowego.

Próbowałem wyeksportować tabele do formatu xml, ale makra danych nie zostały uwzględnione.

Proszę zauważyć, że pytam o Access 2010 makr danych tutaj, a nie o zwykłe makra dostępu.

Odpowiedz

3

Nie mam tutaj świetnej odpowiedzi.

Jednak w przeszłości często tworzyłem "dziennik" zmian w tabelach, a następnie proste używane na miejscu.

Należy pamiętać, że można wycinać i wklejać kod makra. Kod zapisuje się jako XML.

Na przykład, po aktualizacji tabeli spust wygląda to w programie Access:

enter image description here

Jeśli wyciąć powyżej (ctrl-a, ctrl-cc) ,, po czym można wklej to do notes z notatkami. W rzeczywistości można nawet wklej/otwórz go w Visual Studio lub dowolnego edytora XML, a widać to:

enter image description here

więc można wyciąć + wklej z tych makr.

Jak już wspomniano, w przeszłości często zachowywałem "dziennik" zmian.

Więc jeśli pracowałem poza witryną i zmodyfikowałem 2 moduły kodu, 4 formularze i 2 raporty, to miałem mały dziennik zmian. W tym arkuszu wpisałbym, który obiekt został zmieniony.

Kiedy dostaję się na stronę, to szybko rzuca okiem na ten arkusz i wiem, że mogę zaimportować 3-5 obiektów, a taki import to tylko kilka minut.

Jednak przy wyzwalaczach tabel i procedurach składowania można mieć więcej niż kilka kopii do skopiowania.

Chciałbym też zrobić jedną z dwóch rzeczy:

pomocą pomysł dziennika i

a) Un-opublikować wersję rozwojową i doprowadzić, że ze mną do miejsca pracy. Następnie importujesz nowe formularze, raporty itp. Dla kodu wyzwalającego, wycinasz + wklejasz między dwiema aplikacjami.

b) Po wprowadzeniu zmiany w wyzwalaczu, a następnie wyciąć i wkleić do dokumentu notatnika i umieścić w katalogu. Kiedy jesteś na miejscu, po prostu weź każdy notatnik, wytnij + wklej do produkcji, a następnie przenieś lub skopiuj element notatnika do "zrobionego" folderu.

Powyższe jest z pewnością mniej niż idealne. Z drugiej strony w przeszłości nie zawsze miałem kod, który pozwoliłby na wprowadzenie zmian w tabeli, a używanie niewielkiego arkusza dziennika działało całkiem dobrze.

Tak więc w przeszłości często właśnie zapisywałem, że taka i taka tabela została zmieniona i muszę dodać taką i taką kolumnę.

To naprawdę jest twój wybór, jeśli chcesz wyciąć + wkleić kod makra jako xml do osobnych małych dokumentów lub wyciąć i wkleić bezpośrednio z rozwoju do produkcji.

Wydaje mi się, że jeśli pracujesz w różnych lokalizacjach, to myślę, że najlepiej będzie opublikowac wersję rozwojową i zabrać ją ze sobą (zakładam, że wiesz/realaize, że możesz zrobić nieopublikowaną kopię aplikacja internetowa).

Tak więc formularze, moduły kodu, makra itp. Mogą być po prostu zaimportowane raczej łatwe (można usunąć formularze itp. I po prostu zaimportować z tej nieopublikowanej kopii).

Jednak w przypadku kodu tabeli? Musisz wyciąć + wkleić z tej nieopublikowanej kopii pojedynczo do jakiegoś obszaru przemieszczania lub jako zaznaczone wycięcie + wklej między aplikacjami.

Istnieje możliwość, że tekst save-as może tutaj działać, ale nie miałem jeszcze czasu na przygotowanie lepszego rozwiązania.

Edytuj: Przy okazji, w powyższym przypadku założyłem bazę danych usług internetowych, ale porady nadal dotyczą baz danych innych niż Internet.

+0

Dzięki za poświęcony czas i za wszystkie szczegóły, Albert. Informacje XML są naprawdę przydatne. Również Ctrl-C, Ctrl-V działa również bardzo dobrze. W oparciu o twoją reputację, przyjmuję to jako odpowiedź ewangelii. Jeszcze raz dziękuję – unrazzle

6

Możesz spróbować parę nieudokumentowanych funkcji VBA

Aby wyeksportować:

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

Aby zaimportować:

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

Aby rozwinąć na Martijn Pieters'/odpowiedź Lanik użytkownika (dzięki Martijn i Lanik), potrzebowałem stworzyć praktycznie te same makra danych w 28 różnych tabelach, z każdym po nich: AfterInsert, AfterUpdate, AfterDelete i nazwanym makrem danych. Więc użyłem SaveAsText polecenie

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

aby utworzyć szablon, a następnie użył tego szablonu, aby utworzyć 28 xml pliki za pomocą małego kodu vba, zastępując nazwy tabel, klucze podstawowe itp. Stworzyłem również 28 poleceń LoadFromText. Następnie mogłem użyć poleceń LoadFromText, aby załadować wszystkie makra naraz, z powtarzalnym procesem. Po zakończeniu testów mogę szybko zaktualizować bazę danych produkcji w ten sposób lub łatwo dodać te same makra danych do innych tabel.

A więc inni wiedzą, LoadFromText nadpisuje wszelkie poprzednie makra, co jest wspaniałe, ponieważ nie miałem poprawnego szablonu przy pierwszym podejściu.

W związku z powyższym, następnym krokiem jest, aby aplikacja bazy danych "aktualizatora" użyła komendy DoCmd.TransferDatabase w celu przesłania modułu za pomocą funkcji/podrzędnego ze wszystkimi poleceniami LoadFromText do danych .accdb. Powinien także przenieść makro, aby uruchomić funkcję/sub. Próbowałem, aby mój program aktualizujący wykonał makro, aby załadować makra danych, ale zabezpieczenia dostępu uniemożliwiły to. więc możesz potrzebować, aby twój użytkownik otworzył bazę danych i ją aktywował, a następnie uruchom makro.To jest bardziej skomplikowane, jeśli możemy edytować makra danych bezpośrednio, ale zapewnia obejście, które rozwiązuje problem.

+0

Doskonała odpowiedź. Występuje problem podczas używania twojego kodu 'SaveAsText acTableDataMacro' i [napisałem tutaj pytanie] (http://stackoverflow.com/questions/31755802/can-i-use-access-vba-to -determine-if-a-table-ma-dane-makro). –

0

Miałem ten sam problem, ponieważ nie mogłem znaleźć właściwego makra, aby wyeksportować go w formacie xml. Byłem jednak w stanie kliknąć prawym przyciskiem myszy na moje zapytanie i eksportować do xml w ten sposób, więc wiedziałem, że to możliwe.

Jednak chciałem, aby uruchomić go z przycisku i znalazłem prosty sposób robienia tego bez pisania kodu vba.

Najpierw wyeksportuj tabelę lub zapytanie ręcznie, klikając prawym przyciskiem myszy tabelę lub zapytanie i wybierając opcję Eksportuj, a następnie wybierz plik xml jako typ pliku. Na koniec musisz zapisać kroki eksportu, po prostu zaznacz pole, aby zapisać kroki i nadaj krokom eksportowym odpowiednią nazwę. Po wykonaniu tej czynności można następnie uruchomić kroki eksportu za pomocą makra za pomocą akcji RunSavedImportExport. Po prostu wybierz nazwę zapisanego eksportu, który utworzyłeś po ręcznym wyeksportowaniu. Zadanie wykonane. Mam nadzieję, że to pomoże innym.

+2

FYI: Makra danych nie są zawarte w XML - próbowałem go po Access 2013. – HarveyFrench

0

Kliknij prawym przyciskiem myszy makro i wybierz opcję Export, a następnie wybierz bazę danych, która ma otrzymać makro.

+0

Wiem, że działa z normalnymi makrami wymienionymi w okienku nawigacji, ale ma również zastosowanie do makr danych, np. Przed zmianą, Po Wstawieniu ...? (Nie sądzę, że tak.) –

Powiązane problemy