Jestem zaangażowany w aktualizację rozwiązania Access. Ma dużą liczbę VBA, wiele zapytań, niewielką liczbę tabel i kilka formularzy do wprowadzania danych i generowania raportów. To idealny kandydat do programu Access.
Chcę wprowadzić zmiany w projekcie tabeli, języku VBA, zapytaniach i formularzach. Jak mogę śledzić moje zmiany za pomocą kontroli wersji? (używamy Subversion, ale to dotyczy dowolnego smaku) Mogę umieścić cały plik mdb w Subversion, ale będzie to przechowywanie pliku binarnego i nie będę w stanie stwierdzić, że zmieniłem tylko jedną linię kodu VBA.
Myślałem o skopiowaniu kodu VBA do oddzielnych plików i zapisaniu ich, ale zauważyłem, że szybko tracą synchronizację z tym, co jest w bazie danych.
ms-access
version-control
Nathan DeWitt
źródło
źródło
Odpowiedzi:
Napisaliśmy własny skrypt w języku VBScript, który używa nieudokumentowanej Application.SaveAsText () w programie Access do eksportowania całego kodu, formularzy, makr i modułów raportów. Oto on, powinien dać ci kilka wskazówek. (Uwaga: niektóre wiadomości są w języku niemieckim, ale możesz to łatwo zmienić).
EDYCJA: podsumowanie różnych komentarzy poniżej:
Nasz projekt zakłada plik .adp. Aby uzyskać tę pracę z .mdb / .accdb, musisz zmienić OpenAccessProject () na OpenCurrentDatabase (). (Zaktualizowano do użycia,OpenAccessProject()
jeśli widzi rozszerzenie .adp, w przeciwnym razie użyjOpenCurrentDatabase()
.)decompose.vbs:
Jeśli potrzebujesz polecenia, które można kliknąć, zamiast używać wiersza poleceń, utwórz plik o nazwie „decompose.cmd” z
Domyślnie wszystkie wyeksportowane pliki trafiają do podfolderu „Skrypty” aplikacji Access. Plik .adp / mdb jest również kopiowany do tej lokalizacji (z przyrostkiem „stub”) i usuwany ze wszystkich wyeksportowanych modułów, dzięki czemu jest naprawdę mały.
MUSISZ sprawdzić ten kod w plikach źródłowych, ponieważ większości ustawień dostępu i niestandardowych pasków menu nie można wyeksportować w żaden inny sposób. Tylko pamiętaj, aby zatwierdzić zmiany w tym pliku tylko wtedy, gdy naprawdę zmieniłeś jakieś ustawienie lub menu.
Uwaga: Jeśli masz zdefiniowane Autoexec-Makros w swojej Aplikacji, być może będziesz musiał przytrzymać klawisz Shift podczas wywoływania dekompozycji, aby zapobiec jej wykonywaniu i zakłócaniu eksportu!
Oczywiście istnieje również skrypt odwrotny do zbudowania Aplikacji z katalogu "Source":
compose.vbs:
Ponownie dotyczy to towarzyszącego pliku „compose.cmd” zawierającego:
Prosi o potwierdzenie zastąpienia bieżącej aplikacji i najpierw tworzy kopię zapasową, jeśli to zrobisz. Następnie zbiera wszystkie pliki źródłowe w katalogu źródłowym i ponownie wstawia je do kodu pośredniczącego.
Baw się dobrze!
źródło
Wydaje się, że jest to coś całkiem dostępnego w programie Access:
To łącze z witryny msdn wyjaśnia, jak zainstalować dodatek kontroli źródła dla programu Microsoft Access. Jest to dostarczane bezpłatnie jako część rozszerzeń Access Developer dla programu Access 2007 oraz jako oddzielny bezpłatny dodatek do programu Access 2003.
Cieszę się, że zadałeś to pytanie i poświęciłem czas, aby je sprawdzić, ponieważ ta umiejętność też mi się spodobała. Powyższy link zawiera więcej informacji na ten temat i linki do dodatków.
Aktualizacja:
Zainstalowałem dodatek dla Access 2003. Będzie działał tylko z VSS, ale pozwala mi umieszczać obiekty Access (formularze, kwerendy, tabele, moduły itp.) W repozytorium. Kiedy idziesz edytować dowolny element w repozytorium, zostaniesz poproszony o jego sprawdzenie, ale nie musisz. Następnie sprawdzę, jak radzi sobie z otwieraniem i zmianą w systemach bez dodatku. Nie jestem fanem VSS, ale bardzo podoba mi się myśl o przechowywaniu obiektów dostępu w repozytorium.
Aktualizacja2:
Maszyny bez dodatku nie mogą wprowadzać żadnych zmian w strukturze bazy danych (dodawać pola tabeli, parametry zapytań itp.). Na początku pomyślałem, że może to być problem, jeśli ktoś będzie musiał, ponieważ nie było widocznego sposobu usunięcia bazy danych Access z kontroli źródła, jeśli Access nie miał załadowanego dodatku.
Odkryłem, że uruchomiona baza danych „Kompaktuj i napraw” wyświetla monit, czy chcesz usunąć bazę danych z kontroli źródła. Zdecydowałem się tak i mogłem edytować bazę danych bez dodatku. Artykuł w powyższym łączu zawiera również instrukcje dotyczące konfigurowania programu Access 2003 i 2007 do korzystania z systemu Team System. Jeśli możesz znaleźć dostawcę MSSCCI dla SVN, istnieje duża szansa, że zadziała.
źródło
Rozwiązanie Compose / Decompose opublikowane przez Olivera jest świetne, ale ma pewne problemy:
Planowałem to naprawić samodzielnie, ale odkryłem, że jest już dostępne dobre rozwiązanie: integracja timabell / msaccess-vcs- on GitHub. Przetestowałem integrację msaccess-vcs i działa świetnie.
Zaktualizowano 3 marca 2015 : Projekt był pierwotnie utrzymywany / należał do bkidwell na Github, ale został przeniesiony do timabell - powyższy link do projektu jest odpowiednio aktualizowany. Istnieje kilka wideł z oryginalnego projektu bkidwell, na przykład ArminBra i matonb , których AFAICT nie powinien być używany.
Wadą korzystania z integracji msaccess-vcs-w porównaniu z rozwiązaniem Oliversa decompose:
W każdym razie moje wyraźne zalecenie to integracja msaccess-vcs. Rozwiązał wszystkie problemy, jakie miałem z używaniem Gita na eksportowanych plikach.
źródło
Olivers odpowiada, że
CurrentProject
działa , ale odniesienie nie działa dla mnie. Skończyło się na tym, że wyrwałem wnętrzności ze środka jego eksportu i zastąpiłem je tym, w oparciu o podobne rozwiązanie Arvina Meyera . Ma tę zaletę, że eksportuje zapytania, jeśli używasz mdb zamiast adp.źródło
Opracowaliśmy własne narzędzie wewnętrzne, w którym:
Cały system jest na tyle inteligentny, że pozwala nam tworzyć wersje „runtime” naszej aplikacji Access, automatycznie generowane z plików txt (moduły i formularze odtwarzane za pomocą polecenia undocument application.loadFromText) oraz plików mdb (tabel).
Może to zabrzmieć dziwnie, ale działa.
źródło
Opierając się na pomysłach z tego postu i podobnych wpisów na niektórych blogach napisałem aplikację, która działa z formatami plików mdb i adp. Importuje / eksportuje wszystkie obiekty bazy danych (w tym tabele, odniesienia, relacje i właściwości bazy danych) do zwykłych plików tekstowych. Dzięki tym plikom możesz pracować z dowolną kontrolą wersji źródła. Następna wersja pozwoli zaimportować z powrotem zwykłe pliki tekstowe do bazy danych. Będzie też narzędzie wiersza poleceń
Aplikację lub kod źródłowy możesz pobrać ze strony: http://accesssvn.codeplex.com/
pozdrowienia
źródło
Wskrzeszenie starego wątku, ale ten jest dobry. Zaimplementowałem dwa skrypty (compose.vbs / decompose.vbs) dla własnego projektu i napotkałem problem ze starymi plikami .mdb:
Zatrzymuje się, gdy przechodzi do formularza zawierającego kod:
Access twierdzi, że ma problem i to koniec historii. Przeprowadziłem kilka testów i pobawiłem się, próbując obejść ten problem, i znalazłem ten wątek z obejściem na końcu:
Nie można utworzyć bazy danych
Zasadniczo (na wypadek, gdyby wątek przestał działać), bierzemy plik .mdb i robimy „Zapisz jako” w nowym formacie .accdb. Wtedy źródło bezpieczne lub komponuj / dekomponuj będzie działać. Musiałem też bawić się przez 10 minut, aby uzyskać odpowiednią składnię wiersza poleceń, aby skrypty (de) komponowania działały poprawnie, więc oto również te informacje:
Aby komponować (powiedzmy, że twoje rzeczy znajdują się w C: \ SControl (utwórz podfolder o nazwie Source, aby przechowywać rozpakowane pliki):
Otóż to!
Wersje programu Access, w których wystąpił powyższy problem, obejmują bazy danych Access 2000-2003 „.mdb” i rozwiązały problem, zapisując je w formatach „.accdb” 2007–2010 przed uruchomieniem skryptów tworzenia / dekompozycji. Po konwersji skrypty działają dobrze!
źródło
Rozwiązanie oparte wyłącznie na plikach tekstowych (w tym zapytania, tabele i relacje)
Zmieniłem parę skryptów Olivera tak, aby oprócz modułów, klas, formularzy i makr eksportowały / importowały relacje, tabele i zapytania . Wszystko jest zapisywane w zwykłych plikach tekstowych, więc nie ma utworzonego pliku bazy danych do przechowywania z plikami tekstowymi w kontroli wersji.
Eksport do plików tekstowych (decompose.vbs)
Możesz wykonać ten skrypt, wywołując
cscript decompose.vbs <path to file to decompose> <folder to store text files>
. Jeśli pominiesz drugi parametr, utworzy on folder „Source”, w którym znajduje się baza danych. Należy pamiętać, że folder docelowy zostanie wyczyszczony, jeśli już istnieje.Uwzględnij dane w wyeksportowanych tabelach
Zastąp wiersz 93:
oApplication.ExportXML acExportTable, myObj.Name, , sExportpath & "\" & myObj.Name & ".table.txt"
z linią
oApplication.ExportXML acExportTable, myObj.Name, sExportpath & "\" & myObj.Name & ".table.txt"
Importuj dopliku Utwórz bazę danych (compose.vbs)Możesz wykonać ten skrypt, wywołując
cscript compose.vbs <path to file which should be created> <folder with text files>
. Jeśli pominiesz drugi parametr, zajrzy on do folderu „Source”, w którym powinna zostać utworzona baza danych.Importuj dane z pliku tekstowego
Zastąpić linię 14,
const acStructureOnly = 0
zconst acStructureOnly = 1
. To zadziała tylko wtedy, gdy umieścisz dane w eksportowanej tabeli.Rzeczy, które nie są objęte gwarancją
Jednym z moich innych zasobów podczas pracy nad tym skryptem była ta odpowiedź , która pomogła mi dowiedzieć się, jak eksportować relacje.
źródło
Jest pewien problem - VSS 6.0 może akceptować MDB tylko przy użyciu dodatku w ramach określonej liczby obiektów, która obejmuje wszystkie lokalne tabele, zapytania, moduły i formularze. Nie znam dokładnego limitu obiektów.
Aby zbudować naszą 10-letnią aplikację do produkcji podłóg, która jest ogromna, jesteśmy zmuszeni połączyć 3 lub 4 oddzielne MDB z SS w jeden MDB, co komplikuje automatyczne kompilacje do tego stopnia, że nie tracimy czasu na robienie tego.
Myślę, że spróbuję powyższego skryptu, aby wypluć ten MDb do SVN i uprościć kompilacje dla wszystkich.
źródło
Dla osób korzystających z Access 2010 SaveAsText nie jest widoczną metodą w Intellisense, ale wydaje się, że jest to poprawna metoda, ponieważ wspomniany wcześniej skrypt Arvina Meyera działał dobrze.
Co ciekawe, SaveAsAXL jest nowością w 2010 roku i ma taką samą sygnaturę jak SaveAsText, chociaż wygląda na to, że będzie działać tylko z internetowymi bazami danych, które wymagają SharePoint Server 2010.
źródło
Niedawno mieliśmy ten sam problem.
Naszą pierwszą próbą było narzędzie innej firmy, które oferuje proxy SourceSafe API dla Subversion do użytku z MS Access i VB 6. Narzędzie można znaleźć tutaj .
Ponieważ nie byliśmy zadowoleni z tego narzędzia, przerzuciliśmy się na Visual SourceSafe i wtyczkę VSS Acces.
źródło
Używam Oasis-Svn http://dev2dev.de/
Mogę tylko powiedzieć, że przynajmniej raz mnie to uratowało. Moje mdb rosło powyżej 2 GB i to go zepsuło. Mógłbym wrócić do starej wersji i zaimportować Formularze i po prostu stracić dzień pracy.
źródło
Znalazłem to narzędzie na SourceForge: http://sourceforge.net/projects/avc/
Nie korzystałem z tego, ale może to być dla ciebie początek. Mogą istnieć inne narzędzia innych firm, które integrują się z VSS lub SVN i robią to, czego potrzebujesz.
Osobiście po prostu trzymam pod ręką zwykły plik tekstowy, aby prowadzić dziennik zmian. Kiedy zatwierdzam binarną bazę MDB, używam wpisów w dzienniku zmian jako mojego komentarza do zatwierdzenia.
źródło
Dla pełności...
Zawsze istnieje „Visual Studio [YEAR] Tools for the Microsoft Office System” ( http://msdn.microsoft.com/en-us/vs2005/aa718673.aspx ), ale wydaje się, że wymaga to VSS. Dla mnie VSS (automatyczne uszkodzenie) jest gorsze niż moje 347 punktów zapisu na moim udziale sieciowym z kopią zapasową Uber.
źródło
Używam dodatku Access 2003: kontrola kodu źródłowego . To działa dobrze. Jednym z problemów są nieprawidłowe znaki, takie jak „:”.
Melduję się i wychodzę. Wewnętrznie dodatek robi to samo, co kod tam na górze, ale z większą obsługą narzędzi. Mogę sprawdzić, czy obiekt jest wyrejestrowany i odświeżyć obiekty.
źródło
Możesz także połączyć swój MS Access z Team Foundation Server. Dostępny jest również darmowy wariant Express dla maksymalnie 5 programistów. Działa naprawdę dobrze!
Edycja: naprawiony link
źródło
Odpowiedź Olivera działa świetnie. Poniżej znajduje się moja rozszerzona wersja, która dodaje obsługę zapytań programu Access.
(proszę zobaczyć odpowiedź od Olivera, aby uzyskać więcej informacji / użytkowania)
decompose.vbs:
compose.vbs:
źródło
Próbowałem przyczynić się do jego odpowiedzi, dodając opcję eksportu zapytań w bazie danych dostępu. (Z dużą pomocą innych odpowiedzi SO )
Nie mogłem włożyć tego z powrotem w funkcję „tworzenia”, ale nie potrzebuję tego teraz.
Uwaga: dodałem również „.txt” do każdej z wyeksportowanych nazw plików w decompose.vbs, aby kontrola źródła natychmiast pokazała mi różnice między plikami.
Mam nadzieję, że to pomoże!
źródło
Ten wpis opisuje zupełnie inne podejście od innych wpisów i może nie być tym, czego szukasz. Więc nie obrażę się, jeśli to zignorujesz. Ale przynajmniej daje do myślenia.
W niektórych profesjonalnych komercyjnych środowiskach programistycznych zarządzanie konfiguracją (CM) elementów oprogramowania nie jest zwykle wykonywane w samej aplikacji lub w samym projekcie oprogramowania. CM nakłada się na końcowe produkty dostarczane, zapisując oprogramowanie w specjalnym folderze CM, w którym zarówno plik, jak i jego folder są oznaczone identyfikacją wersji. Na przykład Clearcase umożliwia menedżerowi danych „zaewidencjonowanie” pliku oprogramowania, przypisanie mu „gałęzi”, przypisanie mu „dymka” i zastosowanie „etykiet”. Jeśli chcesz zobaczyć i pobrać plik, musisz skonfigurować swoją "specyfikację konfiguracyjną", aby wskazywała żądaną wersję, a następnie cd do folderu i tam jest.
Tylko pomysł.
źródło
Dla każdego, kto utknął w Access 97, nie udało mi się uzyskać innych odpowiedzi. Korzystając z kombinacji doskonałych odpowiedzi Olivera i DaveParillo oraz wprowadzając pewne modyfikacje, udało mi się sprawić, by skrypty działały z naszymi bazami danych Access 97. Jest też nieco bardziej przyjazny dla użytkownika, ponieważ pyta, w którym folderze umieścić pliki.
AccessExport.vbs:
W przypadku importowania plików do bazy danych, jeśli trzeba będzie ponownie utworzyć bazę danych od podstaw lub z jakiegoś powodu chcesz zmodyfikować pliki poza programem Access.
AccessImport.vbs:
źródło