Saya terlibat dengan memperbarui solusi Access. Ini memiliki jumlah VBA yang baik, sejumlah pertanyaan, sejumlah kecil tabel, dan beberapa formulir untuk entri data & pembuatan laporan. Ini kandidat yang ideal untuk Akses.
Saya ingin membuat perubahan pada desain tabel, VBA, kueri, dan formulir. Bagaimana saya bisa melacak perubahan saya dengan kontrol versi? (kami menggunakan Subversion, tetapi ini berlaku untuk semua rasa) Saya dapat menempelkan seluruh mdb dalam subversi, tetapi itu akan menyimpan file biner, dan saya tidak akan tahu bahwa saya baru saja mengubah satu baris kode VBA.
Saya berpikir tentang menyalin kode VBA untuk memisahkan file, dan menyimpannya, tetapi saya bisa melihat mereka dengan cepat tidak sinkron dengan apa yang ada di database.
sumber
Jawaban:
Kami menulis skrip kami sendiri di VBScript, yang menggunakan Application.SaveAsText () yang tidak didokumentasikan dalam Access untuk mengekspor semua kode, formulir, makro dan modul laporan. Ini dia, itu harus memberi Anda beberapa petunjuk. (Hati-hati: beberapa pesan dalam bahasa Jerman, tetapi Anda dapat dengan mudah mengubahnya.)
EDIT: Untuk meringkas berbagai komentar di bawah:
Proyek kami mengasumsikan .adp-file. Untuk mendapatkan pekerjaan ini dengan .mdb / .accdb, Anda harus mengubah OpenAccessProject () menjadi OpenCurrentDatabase (). (Diperbarui untuk digunakanOpenAccessProject()
jika melihat ekstensi .adp, gunakan yang lainOpenCurrentDatabase()
.)decompose.vbs:
Jika Anda memerlukan Perintah yang dapat diklik, alih-alih menggunakan baris perintah, buat file bernama "decompose.cmd" dengan
Secara default, semua file yang diekspor masuk ke subfolder "Scripts" dari aplikasi-Akses Anda. File .adp / mdb juga disalin ke lokasi ini (dengan akhiran "stub") dan dilucuti dari semua modul yang diekspor, membuatnya sangat kecil.
Anda HARUS memeriksa rintisan ini dengan file sumber, karena sebagian besar pengaturan akses dan bilah menu kustom tidak dapat diekspor dengan cara lain. Pastikan untuk melakukan perubahan pada file ini saja, jika Anda benar-benar mengubah beberapa pengaturan atau menu.
Catatan: Jika Anda memiliki Autoexec-Makros yang didefinisikan dalam Aplikasi Anda, Anda mungkin harus menahan tombol Shift ketika Anda menjalankan dekomposisi untuk mencegahnya mengeksekusi dan mengganggu ekspor!
Tentu saja, ada juga skrip terbalik, untuk membangun Aplikasi dari "Sumber" -Direktori:
compose.vbs:
Sekali lagi, ini cocok dengan pendamping "compose.cmd" yang berisi:
Ia meminta Anda untuk mengkonfirmasi menimpa aplikasi Anda saat ini dan pertama kali membuat cadangan, jika Anda melakukannya. Itu kemudian mengumpulkan semua file sumber di Direktori Sumber dan memasukkan kembali mereka ke dalam rintisan.
Selamat bersenang-senang!
sumber
Tampaknya ada sesuatu yang cukup tersedia di Access:
Tautan ini dari msdn menjelaskan cara menginstal add-in kontrol sumber untuk Microsoft Access. Ini dikirimkan sebagai unduhan gratis sebagai bagian dari Access Developer Extensions for Access 2007 dan sebagai add-in gratis terpisah untuk Access 2003.
Saya senang Anda mengajukan pertanyaan ini dan saya meluangkan waktu untuk mencarinya, karena saya juga ingin kemampuan ini. Tautan di atas memiliki informasi lebih lanjut tentang ini dan tautan ke peralatan tambahan.
Pembaruan:
Saya menginstal add-in untuk Access 2003. Ini hanya akan bekerja dengan VSS, tetapi itu memungkinkan saya untuk memasukkan objek Access (formulir, kueri, tabel, modul, dll) ke dalam repositori. Saat Anda mengedit item apa pun di dalam repo, Anda diminta untuk memeriksanya, tetapi Anda tidak harus melakukannya. Selanjutnya saya akan memeriksa bagaimana menangani dibuka dan diubah pada suatu sistem tanpa tambahan. Saya bukan penggemar VSS, tapi saya benar-benar suka membayangkan menyimpan objek akses dalam repo.
Update2:
Mesin tanpa add-in tidak dapat membuat perubahan apa pun pada struktur basis data (tambahkan bidang tabel, parameter kueri, dll.). Pada awalnya saya pikir ini mungkin menjadi masalah jika seseorang perlu, karena tidak ada cara yang jelas untuk menghapus database Access dari kontrol sumber jika Access tidak memiliki tambahan add-in.
Id menemukan bahwa menjalankan database "kompak dan perbaikan" meminta Anda jika Anda ingin menghapus database dari kontrol sumber. Saya memilih ya dan dapat mengedit database tanpa add-in. Artikel di tautan di atas juga memberikan instruksi dalam mengatur Access 2003 dan 2007 untuk menggunakan Sistem Tim. Jika Anda dapat menemukan penyedia MSSCCI untuk SVN, ada kemungkinan besar Anda bisa menggunakannya.
sumber
Solusi menulis / dekomposisi yang diposting oleh Oliver sangat bagus, tetapi memiliki beberapa masalah:
Saya berencana untuk memperbaiki ini sendiri, tetapi menemukan sudah ada solusi bagus yang tersedia: timabell / msaccess-vcs-integrasi di GitHub. Saya telah menguji msaccess-vcs-integrasi dan itu berfungsi dengan baik.
Diperbarui 3 Maret 2015 : Proyek ini awalnya dipelihara / dimiliki oleh bkidwell di Github, tetapi ditransfer ke timabell - tautan di atas ke proyek diperbarui sesuai dengan itu. Ada beberapa fork dari proyek asli oleh bkidwell, misalnya oleh ArminBra dan matonb , yang seharusnya tidak digunakan AFAICT.
Kelemahan menggunakan msaccess-vcs-integrasi dibandingkan dengan solusi dekomposisi Olivers:
Bagaimanapun, rekomendasi saya yang jelas adalah msaccess-vcs-integrasi. Itu memecahkan semua masalah yang saya miliki dengan menggunakan Git pada file yang diekspor.
sumber
Olivers menjawab batu, tetapi
CurrentProject
referensi itu tidak berhasil untuk saya. Saya akhirnya merobek nyali dari tengah ekspornya dan menggantinya dengan ini, berdasarkan solusi serupa oleh Arvin Meyer . Memiliki keuntungan mengekspor Kueri jika Anda menggunakan mdb, bukan adp.sumber
Kami mengembangkan alat internal kami sendiri, di mana:
Seluruh sistem cukup pintar untuk memungkinkan kami menghasilkan versi "runtime" aplikasi Access kami, secara otomatis dihasilkan dari file txt (modul, dan formulir yang dibuat ulang dengan perintah undocument application.loadFromText) dan file mdb (tabel).
Mungkin terdengar aneh tapi berhasil.
sumber
Berdasarkan ide-ide posting ini dan entri serupa di beberapa blog saya telah menulis aplikasi yang bekerja dengan format file mdb dan adp. Ini mengimpor / mengekspor semua objek database (termasuk tabel, referensi, relasi dan properti database) ke file teks biasa. Dengan file-file itu Anda dapat bekerja dengan kontrol versi sumber apa pun. Versi berikutnya akan memungkinkan impor kembali file teks biasa ke database. Akan ada juga alat baris perintah
Anda dapat mengunduh aplikasi atau kode sumber dari: http://accesssvn.codeplex.com/
salam
sumber
Menghidupkan kembali utas lama tapi ini bagus. Saya telah mengimplementasikan dua skrip (compose.vbs / decompose.vbs) untuk proyek saya sendiri dan mengalami masalah dengan file .mdb lama:
Itu terhenti ketika sampai ke formulir yang menyertakan kode:
Access mengatakan itu memiliki masalah dan itulah akhir ceritanya. Saya menjalankan beberapa tes dan bermain-main mencoba untuk mengatasi masalah ini dan menemukan utas ini dengan pekerjaan di akhir:
Tidak dapat membuat basis data
Pada dasarnya (seandainya utasnya mati), Anda mengambil .mdb dan melakukan "Simpan sebagai" ke format .accdb yang baru. Maka sumber yang aman atau menyusun / membusuk barang akan bekerja. Saya juga harus bermain-main selama 10 menit untuk mendapatkan sintaks baris perintah yang tepat untuk skrip penulisan (de) agar berfungsi dengan benar jadi inilah info itu juga:
Untuk menulis (misalkan barang Anda berada di C: \ SControl (buat sub folder bernama Sumber untuk menyimpan file yang diekstrak):
Itu dia!
Versi Access di mana saya mengalami masalah di atas termasuk Access 2000-2003 ".mdb" database dan memperbaiki masalah dengan menyimpannya ke dalam format 2007-2010 ".accdb" sebelum menjalankan skrip penulisan / dekomposisi. Setelah konversi, skrip berfungsi dengan baik!
sumber
Solusi hanya file teks (termasuk kueri, tabel, dan hubungan)
Saya telah mengubah pasangan skrip Oliver sehingga mereka mengekspor / mengimpor hubungan, tabel, dan kueri selain modul, kelas, formulir, dan makro. Semuanya disimpan dalam file plaintext, jadi tidak ada file database yang dibuat untuk disimpan dengan file teks dalam kontrol versi.
Ekspor ke file teks (decompose.vbs)
Anda dapat menjalankan skrip ini dengan menelepon
cscript decompose.vbs <path to file to decompose> <folder to store text files>
. Jika Anda menghilangkan parameter kedua, itu akan membuat folder 'Sumber' tempat database berada. Harap perhatikan bahwa folder tujuan akan dihapus jika sudah ada.Sertakan data dalam tabel yang diekspor
Ganti baris 93:
oApplication.ExportXML acExportTable, myObj.Name, , sExportpath & "\" & myObj.Name & ".table.txt"
dengan garis
oApplication.ExportXML acExportTable, myObj.Name, sExportpath & "\" & myObj.Name & ".table.txt"
Impor kefile Buat basis data (compose.vbs)Anda dapat menjalankan skrip ini dengan menelepon
cscript compose.vbs <path to file which should be created> <folder with text files>
. Jika Anda menghilangkan parameter kedua, itu akan melihat ke folder 'Sumber' di mana database harus dibuat.Impor data dari file teks
Ganti baris 14:
const acStructureOnly = 0
denganconst acStructureOnly = 1
. Ini hanya akan berfungsi jika Anda telah memasukkan data dalam tabel yang diekspor.Hal-hal yang tidak tercakup
Salah satu sumber saya yang lain saat mengerjakan skrip ini adalah jawaban ini , yang membantu saya mencari cara untuk mengekspor hubungan.
sumber
Ada gotcha - VSS 6.0 hanya dapat menerima MDB menggunakan add-in di bawah sejumlah objek, yang mencakup semua tabel, kueri, modul, dan formulir lokal. Tidak tahu batas objek yang tepat.
Untuk membangun aplikasi prod lantai 10 tahun kami, yang sangat besar, kami terpaksa menggabungkan 3 atau 4 MDB terpisah dari SS menjadi satu MDB, yang mempersulit pembuatan otomatis hingga kami tidak membuang waktu untuk melakukannya.
Saya pikir saya akan mencoba skrip di atas untuk memuntahkan MDb ini ke SVN dan menyederhanakan build untuk semua orang.
sumber
Bagi mereka yang menggunakan Access 2010, SaveAsText bukan metode yang terlihat di Intellisense tetapi tampaknya metode yang valid, seperti yang disebutkan skrip Arvin Meyer yang berfungsi baik untuk saya.
Yang menarik, SaveAsAXL adalah baru untuk 2010 dan memiliki tanda tangan yang sama dengan SaveAsText, meskipun tampaknya itu hanya akan bekerja dengan database web, yang memerlukan SharePoint Server 2010.
sumber
Kami memiliki masalah yang sama beberapa waktu lalu.
Percobaan pertama kami adalah alat pihak ketiga yang menawarkan proxy API SourceSafe untuk Subversion untuk digunakan dengan MS Access dan VB 6. Alat ini dapat ditemukan di sini .
Karena kami tidak puas dengan alat itu, kami beralih ke Visual SourceSafe dan VSS Acces Plugin.
sumber
Saya menggunakan Oasis-Svn http://dev2dev.de/
Saya hanya bisa mengatakan itu menyelamatkan saya setidaknya sekali. MDB saya tumbuh melebihi 2 GB dan itu mematahkannya. Saya bisa kembali ke versi lama dan mengimpor Formulir dan baru saja kehilangan satu atau dua hari kerja.
sumber
Saya menemukan alat ini di SourceForge: http://sourceforge.net/projects/avc/
Saya belum pernah menggunakannya, tapi ini mungkin permulaan untuk Anda. Mungkin ada beberapa alat pihak ke-3 lain yang terintegrasi dengan VSS atau SVN yang melakukan apa yang Anda butuhkan.
Secara pribadi saya hanya menyimpan file teks biasa untuk menyimpan perubahan log. Ketika saya melakukan MDB biner, saya menggunakan entri dalam log perubahan sebagai komentar komit saya.
sumber
Untuk kelengkapan ...
Selalu ada "Alat Visual Studio [TAHUN] untuk Sistem Microsoft Office" ( http://msdn.microsoft.com/en-us/vs2005/aa718673.aspx ) tetapi tampaknya membutuhkan VSS. Bagi saya VSS (kerusakan otomatis) lebih buruk daripada 347 poin simpanan saya di jaringan berbagi yang saya backup.
sumber
Saya menggunakan Add-in Access 2003: Source Code Control . Ini bekerja dengan baik. Satu Masalah adalah karakter yang tidak valid seperti ":".
Saya masuk dan keluar. Secara internal Add-In melakukan hal yang sama dengan kode di sana, tetapi dengan lebih banyak dukungan alat. Saya dapat melihat apakah suatu objek diperiksa dan menyegarkan objek.
sumber
Anda juga dapat menghubungkan akses MS Anda ke Server Team Foundation. Ada juga varian Express gratis untuk hingga 5 pengembang. Bekerja dengan sangat baik!
Edit: tautan tetap
sumber
Jawaban dari Oliver sangat berhasil. Temukan versi lengkap saya di bawah ini yang menambahkan dukungan untuk kueri Access.
(silakan lihat jawaban dari Oliver untuk informasi lebih lanjut / penggunaan)
decompose.vbs:
compose.vbs:
sumber
Saya mencoba membantu berkontribusi untuk jawabannya dengan menambahkan opsi ekspor untuk Kueri dalam database akses. (Dengan banyak bantuan dari jawaban SO lainnya )
Belum dapat mengerjakan itu kembali ke fitur 'menulis', tetapi bukan itu yang saya perlukan untuk dilakukan saat ini.
Catatan: Saya juga menambahkan ".txt" ke masing-masing nama file yang diekspor di decompose.vbs sehingga kontrol sumber akan segera menunjukkan kepada saya file yang berbeda.
Semoga itu bisa membantu!
sumber
Entri ini menjelaskan pendekatan yang sama sekali berbeda dari entri lainnya, dan mungkin bukan yang Anda cari. Jadi saya tidak akan tersinggung jika Anda mengabaikan ini. Tapi setidaknya itu adalah makanan untuk dipikirkan.
Dalam beberapa lingkungan pengembangan perangkat lunak komersial profesional, manajemen konfigurasi (CM) dari pengiriman perangkat lunak biasanya tidak dilakukan dalam aplikasi perangkat lunak itu sendiri atau proyek perangkat lunak itu sendiri. CM dikenakan pada produk akhir yang dapat dikirim, dengan menyimpan perangkat lunak dalam folder CM khusus, di mana file dan foldernya ditandai dengan identifikasi versi. Misalnya, Clearcase memungkinkan manajer data untuk "memeriksa" file perangkat lunak, menetapkannya sebagai "cabang", menetapkannya sebagai "gelembung", dan menerapkan "label". Ketika Anda ingin melihat dan mengunduh file, Anda harus mengonfigurasi "config spec" Anda untuk menunjuk ke versi yang Anda inginkan, kemudian masukkan ke dalam folder dan itu ada.
Hanya sebuah ide.
sumber
Bagi siapa pun yang terjebak dengan Access 97, saya tidak bisa mendapatkan jawaban lain untuk berfungsi. Menggunakan kombinasi jawaban Oliver dan DaveParillo yang luar biasa dan membuat beberapa modifikasi, saya dapat membuat skrip bekerja dengan database Access 97 kami. Ini juga sedikit lebih ramah pengguna karena menanyakan folder mana untuk meletakkan file.
AccessExport.vbs:
Dan untuk mengimpor file ke dalam basis data, Anda harus membuat ulang basis data dari awal atau Anda ingin memodifikasi file di luar Access karena suatu alasan.
AccessImport.vbs:
sumber