Won't help you now, but it may prevent some future catastrophe...
I use a bit of code in most of my databases that automatically creates a backup copy of the entire db on startup. Put it in the Open or Load event of the first form, or maybe even in the ribbon's Load event, if you use a custom ribbon.
It makes a backup copy on every start if the last backup was more than one hour ago. It tests for me as the logged in user, so it doesn't do this for users once it's deployed, and the one-hour gap is to keep from making too many copies when I may be opening and closing several times per minute during tests of some initialization code.
It's much safer than trying to remember to make backups manually, especially since crashes tend to happen right when you slack off the manual backups because everything has been running well. It also helps when you make some changes in code and later realize that you want something after all. Instead of having to re-create it, you can just look in a backup from before the change.
At some point, you need to purge the backup copies, since they accumulate, but that is a small price to pay. The backups go into a special sub-folder in the development folder, and the names are time-stamped. The code here is from a database named DataSavcu and the last saved date is stored in a custom document variable named LastDevBackup - edit to taste.
Code:
If gbl_User Like "*danes*" Then If Not fs.folderexists(CurrentProject.Path & "\DevBackup\") Then fs.Createfolder CurrentProject.Path & "\DevBackup\"
If Format$(DateAdd("h", -1, Now), "YYYY-MM-DD HH:NN") > ReadCustomDocumentProperty("LastDevBackup") Then
fs.CopyFile CurrentProject.Path & "\DataSavcu.accdb", CurrentProject.Path & "\DevBackup\DataSavcuDevBackup_" & Format$(Now(), "yyyy-mm-dd_hh-nn-ss") & ".accdb"
WriteCustomDocumentProperty "LastDevBackup", Format$(Now, "YYYY-MM-DD HH:NN")
End If
End If
Support functions:
Code:
Public Sub WriteCustomDocumentProperty(ByVal PropertyName$, ByVal PropertyValue As Variant)
' Custom doc variable must contain at least one character, or Access removes it.
If PropertyValue = "" Then PropertyValue = " "
CurrentDb.Containers(1).Documents("UserDefined").Properties(PropertyName) = PropertyValue
End Sub
Public Function ReadCustomDocumentProperty(ByVal PropertyName$) As Variant
ReadCustomDocumentProperty = CurrentDb.Containers(1).Documents("UserDefined").Properties(PropertyName)
If VarType(ReadCustomDocumentProperty) = vbString Then ReadCustomDocumentProperty = Trim$(ReadCustomDocumentProperty)
End Function