Probably the most common requests we see in forums is for an Microsoft Access Contact database templates and how to structure the tables and build the data entry forms. So I thought I’d provide a basic sample database to help beginners get off to a good start.
The basic structure that I created is as follows:
and then I created a simple form to manage everything from:
This is a simple sample as things can get very complex, very quickly depending on your needs, but for the average home user this would fill the need for a contact management database or at the very least be a great starting point to build more complex applications from.
This demo is unlocked and fully editable with no strings attached.
Also note, that this is merely a simple demo to illustrate keep concepts and functionalities. Before moving it into production, proper error handling should be added throughout, variable validation needs to be enforced and testing of the overall application needs to be performed.
Download
Feel free to download a copy (unlocked x32 mdb – which is fully compatible with Access 2000 through 2016 – which is the last current version available when publishing this sample) by using the link provided below:
Disclaimer/Notes:
If you do not have Microsoft Access, simply download and install the freely available runtime version (this permits running MS Access databases, but not modifying their design):Microsoft Access 2010 Runtime
Microsoft Access 2013 Runtime
Microsoft Access 2016 Runtime
Microsoft 365 Access Runtime
In no event will Devhut.net or CARDA Consultants Inc. be liable to the client/end-user or any third party for any damages, including any lost profits, lost savings or other incidental, consequential or special damages arising out of the operation of or inability to operate the software which CARDA Consultants Inc. has provided, even if CARDA Consultants Inc. has been advised of the possibility of such damages.
Download “Contact Database” Contacts_Demo.zip – Downloaded 66078 times – 67.08 KB
Version History
V1.01 (2017-02-09)
- Corrected a few minor glitches
- Code cleanup
V1.00 (2016-09-01)
- Initial release

Thank you
Thank you for your effort. I need to know how can I change the contents of lists of cities, provinces, and country.
If you review the control’s Row Source in the Property Sheet, you’ll be able to determine that each one draws its list from a table:
Cities -> lst_Cities
Provinces/States -> lst_Provinces
Countries -> lst_Countries
Thank you
This is nice. It is a really great help for me to get started with.
Thank you,
Such fabulous format, simple to understand and customize – great effort indeed…
Thank you very much for your effort, I really appreciated this article. Is it possible to provide a locked version of this database sample for testing purposes?
I provide an unrestricted version for you to do as you please. Each developer has there own way of distributing their work to their users, so I leave that to you. You can do as you see fit for your needs.
This is a great tutorial, Daniel, and I cannot thank you enough for such clear directions.
My People table can have many phone numbers, and some People are at the same address.
I understand that is a Many to Many relationship which requires a junction table.
It would be an awesome tutorial for that situation as well as e-mail addresses…
Just a thought !
Very much appreciated the effort. This helps a lot.
Hope to contact you for some questions.
Thanks for the links to the runtime and for the sample database
Best of luck with the new YouTube channel.
Thank you for sharing the Contact Database. I’m trying to make the filter by type of contact display the first contact of the selected Contact Type. I can not figure it out. Any help would be appreciated.
There are different ways to accomplish this, but one would be to
switch
to
and then update the cbo_ContactType_AfterUpdate event to
Private Sub cbo_ContactType_AfterUpdate() Call ApplyFilters2Lst If Me.lst_Contacts.ListCount > 0 Then Me.lst_Contacts = Me.lst_Contacts.ItemData(0) Me.lst_Contacts_Click End If End SubI am so thankful for your help. So simple.
I can read it, but I have the hardest time writing the code.
You know, Access gurus like yourself are like Rock Stars in my book.
Give an Access guru a melody and they’ll write you a Rock Anthem.
I am working on customizing the functionality of the form. It’s coming together pretty good.
I’d like to have a record nav control bar – First | Previous | Next | Last
I looked at the code and I see how the record sources are being generated as needed per control. I’ve been testing and experimenting; I created a NEXT button, with on click
Private Sub Command25_Click()
If IsNull(Me.RecordSource) Then
Call ApplyFilters2Lst
End If
Me.Recordset.MoveNext
If Recordset.EOF Then
Recordset.MoveFirst
End If
End Sub
I turned on Navigation Buttons and can see the main form record indicator is advancing but not the sub form. I am not sure how to sync the two and display the currently indicated record.
Thank you