Given that you said you are not much good with VBA, it begs the question whether all the security is worth the value of the db. If you feel that your client may not pay, then why are you risking selling it to him? Sometimes suppliers deserve the customers they get!
If you must go ahead, why not just secure the F11 key (Tools/StartUp/uncheck spcial access keys), and then bury in the Switchboard Activate event a simple piece of code like this:
Create a new table with two pieces of date data in it which is effectively the date you expect to be paid by and the Code. Call the field "ExpectedPaymentDate" (medium date) and PaymentCode (text) in a table called EPD. Enter the actual ExpectedPaymentDate in the table.
Now put this code in the ACTIVATE event of your Switchboard or lead form
If Date > DLookup("[ExpectedPaymentDate]", "EPD") And DLookup("[PaymentCode]", "EPD") <> "giZmO" Or IsNull(DLookup("[PaymentCode]", "EPD")) Then
Dim strPaymentCode As String
strPaymentCode = InputBox$("Enter Payment Code here", "This database has not been paid for")
If strPaymentCode <> "giZmO" Then
MsgBox "This database will not open until your account is settled"
DoCmd.Quit
Else
Dim mySQL As String
mySQL = "UPDATE EPD SET EPD.PaymentCode = '" & strPaymentCode & "';"
DoCmd.SetWarnings False
DoCmd.RunSQL mySQL
DoCmd.SetWarnings True
End If
End If
This is not the most sophisticated of solutions and is not secure to anyone who knows anything about Access programming but it will stop most novices and may be adequate for your needs.
The PaymentCode I have chosen in giZmO but even though it looks specific to upper and lower-case it actually isn’t.
Hope this helps.