Version 2.0 Last Updated 6 Feb 2019
This example app was originally created in response to a user question at Access World Forums.
The question referred to ways of preventing tables and queries from being copied to another application
Although there were many issues with the ideas behind rhe original question, I came up with this ‘linked no tables’ DEMO application as a possible solution
This is a split database where the front end (FE) has no linked tables!
For the purposes of this DEMO app, the back end (BE) file needs to be saved in the same folder as the FE.
The backend database contains 1 ‘deep hidden’ table (Table1) though it would work equally well with a standard table.
Backend with no data table visible
The BE file is encrypted with password 'isladogs' if you want to check it out.
The FE file has not been encrypted in this DEMO app and all code can be viewed.
It has 2 forms and 1 report but, as stated above, no linked tables.
Form design with no record source
FE with no linked tables. Form showing data from BE table
None of those 3 objects have a permanent record source
Instead the record source for each object is set automatically to the BE table when the object is opened. It is cleared again when the object is closed
The result is that it behaves exactly like any standard split database
However, there are no linked objects and therefore no connection strings visible in MSysObjects.
If the FE was converted to an ACCDE file, it would NOT be possible for end users to deduce the BE password and gain access to the BE tables (at least not without some VERY serious hacking!)
This code sets the record source for each form:
Private Sub Form_Load()
Dim rst As DAO.Recordset
Me.RecordSource = "SELECT * FROM Table1 IN '' [MS Access;PWD=isladogs;DATABASE=" & CurrentProject.Path &
"\BE.accdb];"
Set rst = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenDynaset, dbSeeChanges)
With rst
.MoveLast
.MoveFirst
End With
'get record count
Me.txtTotal = Me.RecordsetClone.RecordCount
'combo row source
Me.cboLastName.RowSource = "SELECT DISTINCT Table1.LastName FROM Table1 IN '' [MS Access
;PWD=isladogs;DATABASE=" & CurrentProject.Path & "\BE.accdb] ORDER BY Table1.LastName;"
Me.cmdPrint.SetFocus
End Sub
This code clears the record source after use:
Private Sub cmdQuit_Click()
Me.RecordSource = ""
Application.Quit
End Sub
Download
Click to download : LinkedNoTables Approx 0.5 MB (zipped)
NOTE:
A significantly enhanced version of this example app with additional security is also available.
For more details, see my Encrypted Split No Strings database
Feedback
Please use the contact form below to let me know whether you found this article interesting/useful or if you have any questions/comments.
Do let me know if you find any bugs in the application.
Please also consider making a donation towards the costs of maintaining this website. Thank you
Colin Riddington Mendip Data Systems Last Updated 6 Feb 2019
Return to Example Databases Page
Return to Top