Boy, is this a favorite topic of mine. What I ended up doing was putting the onus on the user to get a new FE. I have a folder on the server where the Latest User Front End Resides.
If I have an update, I copy it into the folder and Rev Up the latest revision the front and back end. The user gets a message that there is an update available. He can ignore it three times and then his FE stops working and he has to get the update.
The unintended consequence of this was users short-cutting to the FE rather than copying it to their desktop which caused its own problems. This was fixed by determining where the front end should not be, which is in the LatestUserFolder.
Anyway, here is how I do it:
'See if the User has the Latest Front End
Dim FeCheck As String, tblBeCheck As String, fCounter As Long
'See how many times the FE has Been Opened
fCounter = Nz(DLookup("[FeCounter]", "tblFrontEndRev", "[FEid] =1"), 0)
FeCheck = Nz(DLookup("[FeRev]", "tblFrontEndRev", "[FeID] = 1"), 0) 'Table in Front End
tblBeCheck = Nz(DLookup("[FeRev]", "tblFeRev", "[FeID] = 1"), 0) 'Table in Back End
If FeCheck <> tblBeCheck Then
MsgBox "There is a New Front End (FE) Available in N:\Start Up\Job Databases\LatestUserDb. " & vbLf & vbLf & _
"Please Delete the Old FE from Your Desktop and Replace it with the Latest FE", vbExclamation, "New Front End Available"
'Update the Counter Field
fCounter = fCounter + 1
'Update the Counter if Person has not installed a new front end
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tblFrontEndRev SET tblFrontEndRev.FeCounter = '" & fCounter & "'" & _
"WHERE tblFrontEndRev.FEID = 1 ; "
DoCmd.SetWarnings True
End If
'Terminate the Application if the Counter exceeds 3
If fCounter > 3 Then
MsgBox "Your Database Front End is too old. " & vbLf & vbLf & _
"There is a new Front End available in N:\Start Up\Job Databases\LatestUserDb " & vbLf & vbLf & _
"Terminating Application", vbCritical, "Database Too Old"
DoCmd.Quit
End If
' This looks to see if the user has short cutted to the database - warning if he has.
Dim WhereAmI As String, WhereIShouldNotBe As String
WhereAmI = CurrentProject.Path
WhereIShouldNotBe = "N:\Start Up\Job Databases\LatestUserDb"
If WhereAmI = WhereIShouldNotBe Then
MsgBox "Please do Not ShortCut to the Database on N-Drive" & vbLf & vbLf & _
"Copy the Database from N:\Start Up\Job Databases\LatestUserDb to your Desktop. " & vbLf & vbLf & _
"This Will Ensure you have the Latest Available Database Update and it helps " & vbLf & _
"Maintain Database Integrity. " & vbLf & vbLf & _
"Terminating Application.", vbCritical, "Please do Not Short Cut!"
DoCmd.Quit acQuitSaveNone
End If