Nasıl Erişim geliştirme ile sürüm kontrol sistemi kullanıyor musunuz?
Erişim çözümü güncelleme ile dahil oldum. VBA, sorguları bir dizi, tablolar küçük bir miktar, ve veri girişi ve rapor oluşturma için birkaç form iyi bir miktar var. Erişim için ideal bir aday.
Tablo, tasarım, VBA, sorguları ve formları değişiklik yapmak istiyorum. Nasıl sürüm kontrolü ile yaptığım değişiklikleri takip edebilirim? (Subversion kullanıyoruz, ama bu gider için herhangi bir lezzet) ben sopa tüm mdb subversion, ama bu olacak saklanması bir ikili dosya, ve ben mümkün olmayacaktır söyle ben sadece değişti bir satır VBA kodu.
Ayrı dosyalar için VBA kod, kopyalama, ve bu tasarruf hakkında düşündüm, ama veritabanında ne ile hızlı bir şekilde senkronize çıkıyorum görebiliyordum.
CEVAP
Belgesiz Uygulamanın kullandığı örnek olarak kendi senaryosunu yazdı.() SaveAsText vermek için Erişim kodunu, form, rapor, makro ve modülleri. Burada sana bir kaç ipucu vermek gerekir. (Dikkat: mesaj Almanca, ancak kolayca değiştirebilirsiniz.)
EDİT:
Özetlemek altında çeşitli yorumlar:
Projemiz bir varsayar .adp dosya. Bu işe almak için ./mdb.accdb, OpenAccessProject değiştirmek zorunda() OpenCurrentDatabase(). (Eğer görürse OpenAccessProject()
kullanmak için güncellendi .adp uzantısı başka kullanım OpenCurrentDatabase()
.)
ayrıştırmak.benzer:
' Usage:
' CScript decompose.vbs <input file> <path>
' Converts all modules, classes, forms and macros from an Access Project file (.adp) <input file> to
' text and saves the results in separate files to <path>. Requires Microsoft Access.
'
Option Explicit
const acForm = 2
const acModule = 5
const acMacro = 4
const acReport = 3
' BEGIN CODE
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
dim sADPFilename
If (WScript.Arguments.Count = 0) then
MsgBox "Bitte den Dateinamen angeben!", vbExclamation, "Error"
Wscript.Quit()
End if
sADPFilename = fso.GetAbsolutePathName(WScript.Arguments(0))
Dim sExportpath
If (WScript.Arguments.Count = 1) then
sExportpath = ""
else
sExportpath = WScript.Arguments(1)
End If
exportModulesTxt sADPFilename, sExportpath
If (Err <> 0) and (Err.Description <> NULL) Then
MsgBox Err.Description, vbExclamation, "Error"
Err.Clear
End If
Function exportModulesTxt(sADPFilename, sExportpath)
Dim myComponent
Dim sModuleType
Dim sTempname
Dim sOutstring
dim myType, myName, myPath, sStubADPFilename
myType = fso.GetExtensionName(sADPFilename)
myName = fso.GetBaseName(sADPFilename)
myPath = fso.GetParentFolderName(sADPFilename)
If (sExportpath = "") then
sExportpath = myPath & "\Source\"
End If
sStubADPFilename = sExportpath & myName & "_stub." & myType
WScript.Echo "copy stub to " & sStubADPFilename & "..."
On Error Resume Next
fso.CreateFolder(sExportpath)
On Error Goto 0
fso.CopyFile sADPFilename, sStubADPFilename
WScript.Echo "starting Access..."
Dim oApplication
Set oApplication = CreateObject("Access.Application")
WScript.Echo "opening " & sStubADPFilename & " ..."
If (Right(sStubADPFilename,4) = ".adp") Then
oApplication.OpenAccessProject sStubADPFilename
Else
oApplication.OpenCurrentDatabase sStubADPFilename
End If
oApplication.Visible = false
dim dctDelete
Set dctDelete = CreateObject("Scripting.Dictionary")
WScript.Echo "exporting..."
Dim myObj
For Each myObj In oApplication.CurrentProject.AllForms
WScript.Echo " " & myObj.fullname
oApplication.SaveAsText acForm, myObj.fullname, sExportpath & "\" & myObj.fullname & ".form"
oApplication.DoCmd.Close acForm, myObj.fullname
dctDelete.Add "FO" & myObj.fullname, acForm
Next
For Each myObj In oApplication.CurrentProject.AllModules
WScript.Echo " " & myObj.fullname
oApplication.SaveAsText acModule, myObj.fullname, sExportpath & "\" & myObj.fullname & ".bas"
dctDelete.Add "MO" & myObj.fullname, acModule
Next
For Each myObj In oApplication.CurrentProject.AllMacros
WScript.Echo " " & myObj.fullname
oApplication.SaveAsText acMacro, myObj.fullname, sExportpath & "\" & myObj.fullname & ".mac"
dctDelete.Add "MA" & myObj.fullname, acMacro
Next
For Each myObj In oApplication.CurrentProject.AllReports
WScript.Echo " " & myObj.fullname
oApplication.SaveAsText acReport, myObj.fullname, sExportpath & "\" & myObj.fullname & ".report"
dctDelete.Add "RE" & myObj.fullname, acReport
Next
WScript.Echo "deleting..."
dim sObjectname
For Each sObjectname In dctDelete
WScript.Echo " " & Mid(sObjectname, 3)
oApplication.DoCmd.DeleteObject dctDelete(sObjectname), Mid(sObjectname, 3)
Next
oApplication.CloseCurrentDatabase
oApplication.CompactRepair sStubADPFilename, sStubADPFilename & "_"
oApplication.Quit
fso.CopyFile sStubADPFilename & "_", sStubADPFilename
fso.DeleteFile sStubADPFilename & "_"
End Function
Public Function getErr()
Dim strError
strError = vbCrLf & "----------------------------------------------------------------------------------------------------------------------------------------" & vbCrLf & _
"From " & Err.source & ":" & vbCrLf & _
" Description: " & Err.Description & vbCrLf & _
" Code: " & Err.Number & vbCrLf
getErr = strError
End Function
Eğer tıklanabilir bir Komut, Komut satırını kullanmak yerine ihtiyacınız varsa, bir dosya "ayrıştırmak.oluşturun cmd" ile
cscript decompose.vbs youraccessapplication.adp
Varsayılan olarak, tüm ihraç dosyaları "alt Erişim-uygulama. Komut girmek .dosya da bu konuma kopyalanır ("" soneki) saplama ve dışa aktarılan tüm modüllerin soyulmuş, çok küçük. adp/mdb
Kaynak dosyaları, çünkü çoğu erişim ayarları ve özel olan bu saplama menü-bar olamaz başka bir şekilde dışa iade etmelisiniz. Eğer gerçekten biraz ayarını değiştirdiyseniz, bu dosyaya değişiklikleri kaydetmek için emin sadece, ya da menü sadece.
Not: Eğer Autoexec-Makros Uygulama tanımlı Varsa, tutmak zorunda kalabilirsiniz-Shift tuşu: zaman ayrıştırmak ve ihracat ile yürütme engellemesini önlemek için çağır!
Bu Uygulama oluşturmak için tabii ki, aynı zamanda ters bir senaryo yok, "Kaynak"-Dizin:
oluştur.benzer:
' Usage:
' WScript compose.vbs <file> <path>
' Converts all modules, classes, forms and macros in a directory created by "decompose.vbs"
' and composes then into an Access Project file (.adp). This overwrites any existing Modules with the
' same names without warning!!!
' Requires Microsoft Access.
Option Explicit
const acForm = 2
const acModule = 5
const acMacro = 4
const acReport = 3
Const acCmdCompileAndSaveAllModules = &H7E
' BEGIN CODE
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
dim sADPFilename
If (WScript.Arguments.Count = 0) then
MsgBox "Bitte den Dateinamen angeben!", vbExclamation, "Error"
Wscript.Quit()
End if
sADPFilename = fso.GetAbsolutePathName(WScript.Arguments(0))
Dim sPath
If (WScript.Arguments.Count = 1) then
sPath = ""
else
sPath = WScript.Arguments(1)
End If
importModulesTxt sADPFilename, sPath
If (Err <> 0) and (Err.Description <> NULL) Then
MsgBox Err.Description, vbExclamation, "Error"
Err.Clear
End If
Function importModulesTxt(sADPFilename, sImportpath)
Dim myComponent
Dim sModuleType
Dim sTempname
Dim sOutstring
' Build file and pathnames
dim myType, myName, myPath, sStubADPFilename
myType = fso.GetExtensionName(sADPFilename)
myName = fso.GetBaseName(sADPFilename)
myPath = fso.GetParentFolderName(sADPFilename)
' if no path was given as argument, use a relative directory
If (sImportpath = "") then
sImportpath = myPath & "\Source\"
End If
sStubADPFilename = sImportpath & myName & "_stub." & myType
' check for existing file and ask to overwrite with the stub
if (fso.FileExists(sADPFilename)) Then
WScript.StdOut.Write sADPFilename & " existiert bereits. Überschreiben? (j/n) "
dim sInput
sInput = WScript.StdIn.Read(1)
if (sInput <> "j") Then
WScript.Quit
end if
fso.CopyFile sADPFilename, sADPFilename & ".bak"
end if
fso.CopyFile sStubADPFilename, sADPFilename
' launch MSAccess
WScript.Echo "starting Access..."
Dim oApplication
Set oApplication = CreateObject("Access.Application")
WScript.Echo "opening " & sADPFilename & " ..."
If (Right(sStubADPFilename,4) = ".adp") Then
oApplication.OpenAccessProject sADPFilename
Else
oApplication.OpenCurrentDatabase sADPFilename
End If
oApplication.Visible = false
Dim folder
Set folder = fso.GetFolder(sImportpath)
' load each file from the import path into the stub
Dim myFile, objectname, objecttype
for each myFile in folder.Files
objecttype = fso.GetExtensionName(myFile.Name)
objectname = fso.GetBaseName(myFile.Name)
WScript.Echo " " & objectname & " (" & objecttype & ")"
if (objecttype = "form") then
oApplication.LoadFromText acForm, objectname, myFile.Path
elseif (objecttype = "bas") then
oApplication.LoadFromText acModule, objectname, myFile.Path
elseif (objecttype = "mac") then
oApplication.LoadFromText acMacro, objectname, myFile.Path
elseif (objecttype = "report") then
oApplication.LoadFromText acReport, objectname, myFile.Path
end if
next
oApplication.RunCommand acCmdCompileAndSaveAllModules
oApplication.Quit
End Function
Public Function getErr()
Dim strError
strError = vbCrLf & "----------------------------------------------------------------------------------------------------------------------------------------" & vbCrLf & _
"From " & Err.source & ":" & vbCrLf & _
" Description: " & Err.Description & vbCrLf & _
" Code: " & Err.Number & vbCrLf
getErr = strError
End Function
Yine, bu bir arkadaşı "oluştur."içeren: . cmd
cscript compose.vbs youraccessapplication.adp
Eğer bunu yaparsanız, geçerli uygulama üzerine onaylamak için sorar ve ilk bir yedek oluşturur. Daha sonra saplama Kaynak Dizinini kaynak dosyaları ve yeniden ekler hepsini toplar.
İyi Eğlenceler!
Nasıl Android sistemi sürüm kontrol ed...
Nasıl JavaScript ile boş bir dize için...
Nasıl PHP bir karma parolalar için bcr...
Veritabanı öğeleri için kaynak kontrol...
Nasıl bir seçici bir WordPress kullanm...