Free Lessons
Courses
Seminars
TechHelp
Fast Tips
Templates
Topic Index
Forum
ABCD
 
Home   Courses   TechHelp   Forums   Help   Contact   Merch   Join   Order   Logon  
 
Home > TechHelp > Directory > Access > Contacts < Kitchen Helper | Highlight Duplicates >
Contacts
By Richard Rost   Richard Rost on LinkedIn Email Richard Rost   6 years ago

Contact Management (CRM) for Customers Template


 S  M  L  XL  FS  |  Slo  Reg  Fast  2x  |  Bookmark Join Now

In this video I will show you how to set up contact management for you customers. We will create a contact table storing the date/time of each contact, your notes, and whether or not you need to follow up with them. Then we'll make the contacts a subform inside of the customer form so you can see them at a glance whenever you open a customer record.

Included in this video is a FREE Extended Cut to show you a little VBA programming. We'll make a StatusBox on the Main Menu and with one button I'll show you how to write "Hello World" inside that box. I'm also going to show you how to renumber your AutoNumbers in the customer table if you have any gaps you want to get rid of.

Brandon from Toledo, Ohio (a Silver Member) asks: I've been using your free customer template for a while now. Thank you. It was very helpful to get me started. How can I track contacts with my customers? Each time I talk to them I've been putting stuff in the Notes field, but they're getting kind of full. Advice?

Watch This First...

If you have not yet watched the original Blank Customer Template video, do that first before watching this one.

Free Download

Watch These Next...

Links

Relationships: https://599cd.com/relationships
Default Value: https://599cd.com/default
Form / Subform: https://599cd.com/Subform

Learn More

FREE Access Beginner Level 1
FREE Access Quick Start in 30 Minutes
Access Level 2 for just $1

Free Templates

TechHelp Free Templates
Blank Template
Contact Management
Order Entry & Invoicing
More Access Templates

Resources

Diamond Sponsors - Information on our Sponsors
Mailing List - Get emails when new videos released
Consulting - Need help with your database
Tip Jar - Your tips are graciously accepted
Merch Store - Get your swag here!

Questions?

Please feel free to post your questions or comments below or post them in the Forums.

 

Comments for Contacts
 
Age Subject From
15 monthsHello WorldKevin Robertson
3 yearsContactRami Kanawati
4 yearsCustomer Contacts StartEnd DtHarvey Abernathy
4 yearsDownloadJeffrey Horvate
4 yearsStatus BoxRamona Woitas
4 yearsContact Table Follow UpTom Kelly
4 yearsCould Not Make ACCDE FileRajashree Natarajan
4 yearsPhone LogTim Rifkin
4 yearsCustomers with ContactsSatyavathi Velaga

 

Start a NEW Conversation
 
Only students may post on this page. Click here for more information on how you can set up an account. If you are a student, please Log On first. Non-students may only post in the Visitor Forum.
 
Subscribe
Subscribe to Contacts
Get notifications when this page is updated
 
Intro In this video, I will show you how to enhance the free customer template in Microsoft Access by adding a contacts table and subform, so you can easily keep track of every interaction you have with your customers. We will discuss how to set up the necessary tables, create a relationship, and embed the subform within the main customer form. I will also demonstrate a trick to reset your autonumber fields, explain the difference between short and long text fields, and review how the subform links records automatically using the customer ID.
Transcript Welcome to another TechHelp video brought to you by AccessLearningZone.com. My name is Richard Rost, your instructor.

In today's video, I'm going to show you how to take that free customer template that we built a few weeks ago, and we're going to add contacts to it. So, every time you talk to a customer, you can track it in a subform right on the customer's main form.

I'm also going to throw in a bonus free extended cut that normally goes for just the members. I'm going to show you how to create a status box on your main menu and make a button. When we click on the button, it will show Hello World in that status box. You can use that status box for displaying pretty much any kind of message that you want, and that's going to be a free extended cut at the end of this video. Stay tuned.

Today's question comes from Brandon from Toledo, Ohio, a silver member.

Brandon says: I've been using your free customer template for a while now. Thank you. It was very helpful to get me started. How can I track contacts with my customers? Each time I talk to them, I've been putting stuff in the notes field, but they're getting kind of full. Advice?

Well Brandon, I've got a separate video that covers setting up relationships between two tables. You want to put the contacts for those customers in a different table. That way, there's no limit to the amount of information that you can store there.

I'm going to put a link to that video in the description down below this one. So, go watch that first. But since you brought this up, I'm also going to show you how to put contacts in a subform in the template that you have right now, the old customer template.

The reason why is because I myself find that every time I do a new class or a TechHelp video, I've been using that template and having to rebuild this multiple times. So, in this video, we're going to add that contacts subform to the main form.

But go watch the relationships video first. It explains better how relationships are made. Then come back and watch this one. I'll walk you through setting up that subform. When we're done with that, we'll set up this Hello World stuff, but that'll be at the end of the lesson.

So, this is the blank template with the customer form and the customer list in it. If you haven't watched the video where I create this, go watch that now. I'll put a link down in the description below the video. Watch that first so you know how I built this.

I've been using this blank template in a lot of my other videos, which is why I built it in the first place. I keep finding myself wanting to add a couple of things to it because every time I start a video, I always end up adding a couple of things, the same things.

First, I want to add a status box. Then, I want to add contacts, something to have a relationship with because I do a lot of videos on relationships. So, I'm going to make another level of this, which is going to be customers with contacts. We're going to put a status box in the main menu.

The first thing I'm going to show you is a little trick. A lot of people ask me this. If I open up my customer table, notice how my IDs go 1, 2, 3, 8. This happens sometimes. I must have added 4, 5, and 6, then deleted them, added 7, deleted it. Now, 8 was the next one when I typed in John Luke Picard.

If you don't have any other tables in the database yet, just your customers, so these IDs aren't linked anywhere, and you want to reset them to 1, 2, 3, 4, here's how. It's a quick little trick.

First, we're going to copy and paste the structure of our table. So, copy (Control-C), and then paste (Control-V). Then just put structure only. We'll copy the table itself, but not the data in it. So, my autonumbers are all reset.

Now, since the fields are the same, open up customer T, copy these 4 records (Control-C), open up the copy table, click, and then paste them in. Now I've got 1, 2, 3, 4. The autonumbers will reset, and they'll all be one after the other.

Again, don't do this if these IDs are used in another table because it will scramble all of your data, but for me, I just wanted to reset that autonumber. Because every time I open up a class and I'm in here, and I'm like, why is it 8? I want 1, 2, 3, 4. It's purely cosmetic. Again, you shouldn't worry about what that autonumber is at all.

I'm just doing it for class because everybody always asks me, why is it 8? Now I can delete the old customer T and just rename this one customer T. Again, it's purely cosmetic. You don't have to worry about that. There's my customer form and my customer list.

Okay, everyone is back to where I wanted them. Now, let's add a quick contact management in here. So, create, and then table design.

First up, if you don't know about table relationships, go watch my relationships video. I'll put a link down below. Go watch that first so you understand how to make relationships between two tables. This is just a quickie for updating the customer template.

We're going to have a contact ID. To me, a contact is anytime you talk to somebody, or they come in your store, you call them on the phone. That's a contact, an instance of a contact. That'll be my autonumber.

Then I'll have a customer ID so I know who I was talking to. That'll be a number of type long integer. That's my foreign key. It's going to point to the customer table.

Then we've got a contact date time, or just contact date is fine. Keep it short. That will be a date time. I'm going to set the default value equals now. That is the date and time, and Access will automatically put that in there each time I add a record.

Again, if you're not familiar with the default value property, I got a video for that too. Go look down the links below the video and I'll point you to it.

Then we've got description, which will be short text, and then notes, which will be long text. I differentiate between the two. The description can be something short and sweet, whereas notes can be as much information as you want to type in, long details.

Short text fields have benefits, like they're better to index. You can search and sort them better and stuff like that. But I like to put one of each in there.

If you want to put something in here like a follow up, that will be a yes/no field. If you want to follow up with this person, just check that box. Then we're going to make a follow up query later on. You can see who are all the contacts that you still have to follow up with.

I'm going to save that as my contact T (my contact table), primary key. Yes, that's the autonumber right there.

Now, we're going to set up a contact form for each customer, but I want to set this up so it's going to be a subform inside of the customer's form. So, when I open up the customer form, maybe over here, we'll see their last couple of contacts.

Now, fortunately, because this is my blank template, I've got a continuous form blank set up right here, so we can just copy this guy. That's the whole point of these templates. Copy, paste. This will be the contact F. Now we just modify this guy.

Click Design View. First thing I'm going to do is change colors a little bit. Let's see what looks different. This is something we'll have to do each time. Let's go with this reddish color here for my contacts. There we go. Let's go with that, and then maybe that one.

Let's set up the record source as contact T. Continuous forms is good. We can see the contact ID. We actually don't need the customer ID either, because as soon as we make this a subform, there's going to be relationship forms by the link fields. I'll show you that in a second.

So, what fields do we need in here? Again, taking a look at our table, we have the contact date. We can put in the description, the notes, and the follow-up.

Here's what we're going to do. This guy is already here, so let's set this one equal to control source. This is going to be the date. Let's say, make sure you copy that and put it up here in the name. I'm going to put a format in here of MMDDYYH:NN. Remember, N is for minute. Now, this will be a military format, which is OK with me. I like to see the 1600, but you could change it if you wanted to.

Actually, let me change that because I know most of my students don't like that. Let's go AM/PM after that. Make it easy. Make it better for everybody. In my personal databases, I just use 24-hour format.

The other fields we'll bring in from the Add Existing Fields box, which is right there. Let's take the description and put it there. I'll just delete that label because I'll copy the one off the top. There's a description. Maybe about yea big.

Actually, let's bring the description. We have to remember this is going to fit inside of a form inside of the customer form. We're not going to get huge. Let's make the description about this big.

What we're going to do is put notes down here in the footer like this. You'll see where I'm going with this in a second. There's notes. Follow-up will be right down here, like there. Maybe up top. Let's see what it looks like.

Let's make that white. That looks a little darker. Let's go a little darker down here. There we go. Follow-up. That can shrink up to there. Notes. I'm going to make notes like that yellow background. There we go.

Let's see what everything looks like. Let's save this. Close it. Open it back up again. I opened the table, my bad. Contacts. There we go. That's good. Let's left justify that. We can actually make it a little bit smaller.

Design view. Let's go left justify. Left align, I should say. Let's make this guy not a tab stop. Open it up. Find tab stop. Where is that, under Other? Tab stop is No. That way, when I open this up or when I tab to it, it doesn't start here in the date field. It just starts over here. I can type in my stuff right away.

Let's fix our labels across the top. Slide this over here. Change this guy to Date Time. That's a label, remember. We'll put in here Notes. Save it. Close it. One more peek. Okay, looks good.

Now we're going to make this a subform inside of this guy. So right-click, design view. Where do we want to put it? Let's make this a bigger form going vertically. So let's do this. Make this family size and all this content move over here like that. That looks good.

We'll put Is Active right there. That looks good. Let's take these notes and slide them down here on the bottom like that. The customer's notes will go there.

Looks good. Now we've got plenty of room here for that subform. So, all we're going to do is take the contact F right from here, click, drag, drop. There it goes. Delete that little label that comes in with it.

We're going to slide this guy up here. Maybe put it right about there. Let's do it. We can make this nice and big, like so. Slide this edge in.

If you want to put a label above that to kind of describe what that is, you can. We'll just copy one of these labels, copy, paste, slide it over here, and we'll type in Contacts. Contact History.

Save it. Close it. Now, let's open it up. Boom. Look at that. Form, subform.

Now, when this person contacts me, you can click right here in the notes, called about a job. Tab, and it goes right to the next one. Came in for interview. Now, what I like to do is if there's stuff down here, I like to put a little star in here. That just kind of indicates that there's more notes down here, was impressed with his whatever, and I want to follow up on it.

Oh, look at that. I forgot to turn that off, that color there. That's actually in the template, and there's really no getting around that. Design view. The alternating background color. We changed the color for here. We've got to change that background color to there. You'll know what I mean if you watched the other video.

You could programmatically do it, so if there are notes down here, you can have a little symbol or something show up up top here. You can do that. This is just something that I do informally. I do it in Microsoft, excuse me, in Google Calendars. I use Google Calendars, and if I put something in my calendar and I want to remind myself that I've got notes down below, I put a little star in the title.

There is a way that you could do this with VBA, and if anyone wants to see it, let me know. Send me a note, and I can do a video on that.

Now, how does Access know that these are contacts for Richard Rost? If I go to a different customer, if I open up, let's say, Jean-Luc, there's no information there. Well, if you go into design view, and again, if you watch my form and subform lesson (which I'll put a link down in the description below), if you look at the properties for this object, for this subform (not this guy, that's the form, this is the form properties for the form inside of here), what you want is slightly different. The border right here is the subform. Make sure it says subform there.

If you go to data, you'll see right here, Link Master Fields, Link Child Fields. Customer ID is in both of those. Access knew to do that when we created the relationship, when we put the subform inside of the main form. It properly guessed that because it saw that was the primary key field. So, now you don't need contact ID in here because I don't really care to see it, and I'm not going to refer to it anywhere else. You don't have to put customer ID in here because Access will automatically fill the customer ID in for you because of that relationship.

So, if I open up Jim Kirk, open customer, there we go. If I put in here, you know, a lot, clients. Now, if I go back to my record, it doesn't show up there because it's related. If you look in the table, here are the dates and all that, and the customer ID is properly put in there for you by that relationship.

Now, since you're tracking follow-ups, you can easily make yourself a query to pull up, show me all my follow-ups. You can do that for homework if you want to, and if anyone wants to see it, drop me a line. Maybe I'll make a video on it. Really easy to do. I've got videos on that too, on making queries.

So, that is adding a subform and a relationship to our template, which I want to do because a lot of the videos that I do have to deal with relationships. The reason for this down here, by the way, is that you can put the extra information here and notice it's linked to whatever record I'm on up top. This field down here, this notes field, this long text field will be for whatever record I am on up top here. See that?

You can put follow-up up here if you want to. I think it works fine down there.

Now, the next thing that I find myself putting in a lot of my videos is a status box. This is a little more advanced. This involves some programming, but I want to put it in my beginner template because I do this in pretty much all of my developer classes lately. I've been adding this in, and I've been using this template for it.

So, you're getting a sneak preview of some Visual Basic training. It's basically a little box in the main menu where I can click a button, and it says something. The whatever it says is whatever I happen to be covering in that class. Like lately, I've been doing record sets, and you can loop through tables and stuff with your Visual Basic code. I like to use the status box to show what's happening.

Here's what's going to happen. Right-click, design view. We're going to put a big gray box on here. So, go to text boxes, drop it right here, delete the little label that comes in with it. You can put it anywhere you want. You can put it down on the bottom, you can put it up top. I like to put it like over here because sometimes these can get long. You want to see status information.

Now, I want to make it gray because I don't want to let the user think they can type stuff in here. Open the properties up. Go to all. We're going to call this guy the status box, statusBOX. That's it for that.

Now, I'm going to drop a button down here. So, I'm going to go to Design, Command Button, drop that down here, cancel the wizard. Whatever you want to put in this box is what's going to show up in the status box.

So, what are we going to put in here? Well, for this class, just as a sample, put in like Hello World. That's usually your first program when you start programming, like in BASIC. I started back in the 80s on a TRS-80 Radio Shack computer, and what you do is you do, like in BASIC, you do: 10 PRINT "Hello World" and it shows up on the screen, and then you do 20 GOTO 10, and it just loops and everyone thinks it's cool.

So, we'll do a Hello World example.

Before we put some code in this button, we're going to double-click on it and give it a good name right here. I don't like Command9 and my buddy Alex will yell at me if I leave it like that. So I just put in here HelloWorldButton, BTN. That's the name of that button.

Now we're ready to put some code in it. Easiest way, right-click, go to Build Event. That's off my screen, hang on, I'll let you see it. Right-click, and then Build Event. There it is. That opens up the Visual Basic for Applications, the VBA window. You may see a prompt before this asking you what kind of builder do you want. Pick the code builder, C-O-D-E, code builder. I have my database defaulted to that because I never use the other builders.

This is where we write the code that runs when you push that command button. So, I could just come in here and say something like: MsgBox "Hello World", like that. Save it. Come back over to my database. Save this guy and reopen it. There we go. Now if I hit Hello World, there's my message box, Hello World.

But I don't want that to show up here in a message box. I want it to be in my status box. That's the whole reason for the status box. So, let's go back to the VBA editor. I just leave them both open on the bottom, by the way. Never close this window, just leave it open. You can have to minimize it or you can click on the Access window behind it.

I want to put this inside that status box. I'm going to make a private subroutine to do that for me. So, Private Sub Status, and then I'm going to send it some information as a string. Inside of here, I'm going to say: StatusBOX = S & vbNewLine & StatusBOX: DoEvents. That's it. It's that simple.

What does that mean? Well, I'm going to call the subroutine Status and send it some information, S in this case, whatever it is, whatever I want to appear in that box. Then I'm going to set the status box equal to S plus a blank line plus whatever the status box had in it previously. That way, I can get it to add more stuff to itself. Now, new stuff will come up on top of the window, so you have to kind of read it backwards, but that's OK. That doesn't bother me.

It's a whole lot easier than putting stuff in the box and having to scroll to the bottom. That's possible, but it causes flashing on the screen, so just get in the habit for these status boxes and read stuff backwards, that's all.

DoEvents is so that in case I'm calling Status inside of a loop, like in a recordset loop, I don't want the system basically freezing up. It won't update the screen if you don't issue a DoEvents. DoEvents says, forget what you're doing and go ahead and let the rest of the processes that are running take over.

Now, here instead of MsgBox "Hello World," I'm going to say Status "Hello World," and it'll call my Status subroutine right there.

So, now if I come back over here and push the button, boom. Hello World goes in the status box. Hit it again, hit it again, hit it again. If you want a time on there, you can put a time index in there somewhere. You could do, right here, you could do: Format(Now, "HH:NN") is usually good enough, like that, and then maybe a colon and a space. That'll put the hour and minute in there, then a colon.

So, you can go Status, like that, and it puts the hour and minute in there. Not going to do that for the final version. I don't really care. For my template, I just want that.

This way, if I'm running something else, it can status. We can actually make that font a little smaller. Let's come in here and go Format, let's make it maybe 9 point. Yeah, looks better. Status box, so that'd be that big. There.

You want to see a loop real quick? I'll give you an idea of what's happening. You can say, like in here:
dim x as integer
for x = 1 to 10
status "Hello World " & x
next

Now, it'll put 10 of them in there. See? There's a simple loop. But again, I don't want all that in there for my template, so we'll just get rid of that stuff. I just want to show you a couple of tricks, why I want this in there, because when I start doing other code, other classes, then I don't have to rebuild all this now. Because I just did Developer 19, and I was rebuilding all this every time I did a lesson. Now I can just say, go download the template and we're going to start from here.

Now, for those of you who are not members on my YouTube channel yet, this is the kind of thing that I do for the extended cut for the members videos. The free TechHelp video would have been adding in this stuff, the contacts stuff, and then I'm like, well, for members, we're going to do a little something extra, and I'll show more. That's what the extended cuts are for.

So, if you're not a member yet, this is some free advertising for me, since I just showed you some stuff, I get to advertise for a second. That's how this works. I strongly suggest joining my channel. What am I trying to do now, $5.99 a month. It's not much, a month, and I try to do two or three extended cuts every week. So, there you go.

This template will now be added to the templates that are on my website. You can download it for free. Just follow the links in the description down below.

If you have any questions, of course, feel free to post them. Thanks. Take care.

How do you become a member? Click on the Join button below the video. Silver members and up will get access to all of my extended cut TechHelp videos, live video and chat sessions, and other perks. After you click the Join button, you'll see a list of all the different membership levels that are available, each with its own special perks. But don't worry, these TechHelp videos are going to keep coming. As long as you keep watching them, I'll keep making more, and they'll always be free.
Quiz Q1. Why should contacts for customers be stored in a separate table instead of in the notes field?
A. To allow unlimited storage and easier management of each contact
B. To make the database more visually appealing
C. To reduce the number of forms in the database
D. To limit the type of data that can be entered

Q2. What is the main advantage of creating a subform for contacts on the customer form?
A. It visually separates customers from their contacts
B. It allows you to track each interaction with a customer directly within their record
C. It increases the security of contact information
D. It automatically sends emails to customers

Q3. What is the purpose of setting the default value property of the contact date field to Now in Access?
A. It makes the field read-only
B. It pre-fills the field with the current date and time upon record creation
C. It disables the field until the user enters data
D. It hides the field from the user

Q4. Why is it important not to reset autonumber IDs if those IDs are already used as foreign keys in other tables?
A. It will rename the database objects
B. It does not matter, since the template can recover
C. It will scramble your data and break relationships
D. It simply looks unprofessional

Q5. What is a foreign key in the context of the customer and contact tables described in the video?
A. A key used to encrypt data
B. A field that uniquely identifies a record in a table
C. A field in the contacts table that references the primary key in the customers table
D. A password to access the database

Q6. Why did the instructor include both a Description (Short Text) and Notes (Long Text) field in the contacts table?
A. For redundancy in case one field is deleted
B. To store short descriptions and detailed notes separately
C. To make the table look more complex
D. Because Access requires both for every table

Q7. What does the Yes/No "Follow Up" field in the contacts table represent?
A. Whether or not the customer is active
B. Whether to follow up with the contact in the future
C. If the contact was made during business hours
D. Whether the notes field is filled out

Q8. When turning a contact form into a subform on the customer form, which linking fields does Access use automatically if the relationships are defined?
A. Description and Notes
B. ContactID and DateTime
C. CustomerID
D. Form Name and Table Name

Q9. What is the purpose of the "status box" added to the main menu in the video?
A. To display status messages or information to the user
B. To print reports
C. To reset all tables to default values
D. To launch new forms only

Q10. How does the VBA subroutine "Status" work in the context of the status box?
A. It sets the status box's value to a fixed greeting
B. It appends a new message with optional timestamp to the top of the status box
C. It changes the color of the status box each time
D. It closes the database automatically

Q11. What is DoEvents used for in the VBA code related to the status box?
A. To print the contents of the status box
B. To allow the user to resize the status box
C. To let the system process other events and update the UI during long loops
D. To reset the form to its original state

Q12. If you want to see contact history for a specific customer, how does Access ensure the subform shows only that customer's contacts?
A. By hard-coding customer names in the form
B. Through the Link Master Fields and Link Child Fields properties using CustomerID
C. Through a manual filter applied by the user
D. By using the primary key of the contact table only

Q13. How can you create a simple query to show all contacts that require follow-up?
A. Filter the contacts table where the Follow Up field is Yes
B. Sort the contacts table by date
C. Filter the customers table by IsActive
D. Search the notes field for the word "follow-up"

Q14. What happens if you delete the old customer table after making a structural copy and importing only your desired records to reset autonumbers?
A. All your data and relationships are preserved and the IDs start at 1
B. You lose all previously established relationships and any linked records will become orphaned
C. Nothing, since the tables are independent
D. Access will automatically repopulate the old table

Q15. What best describes the main focus of this video tutorial?
A. Changing color themes in Access
B. Adding contact management with a related table and subform, and creating a status box to display messages
C. Printing out reports for all customers
D. Setting up user login security in Access

Answers: 1-A; 2-B; 3-B; 4-C; 5-C; 6-B; 7-B; 8-C; 9-A; 10-B; 11-C; 12-B; 13-A; 14-B; 15-B

DISCLAIMER: Quiz questions are AI generated. If you find any that are wrong, don't make sense, or aren't related to the video topic at hand, then please post a comment and let me know. Thanks.
Summary Today's video from Access Learning Zone covers how to enhance the free customer template we created previously in Microsoft Access by adding a contact management feature. This way, whenever you communicate with a customer, you can document those interactions directly in a subform on the main customer form.

I'm also including a bonus extended cut for free that is usually reserved for members. In that segment, I'll show you how to add a status box to your main menu form, along with a button that will display a message, such as "Hello World," in the box. This status box can be used for displaying various messages, and you'll learn how to implement it at the end of today's lesson.

The focus of this video came from a question about tracking multiple contacts with customers. The current template only has a notes field, which quickly becomes overloaded. The solution is to store each contact in a separate table related to the customer, so there's no limit to how many entries you can keep. If you're unfamiliar with setting up relationships between tables, I have a dedicated video on that topic. I recommend watching that first, since it will help make sense of the relationship concepts we'll use here.

Once you have an understanding of relationships, we will walk through setting up the contact subform within the existing customer template. This format makes it much easier to revisit details from past interactions, and keeps your notes organized for every individual customer.

Before jumping into the contact management addition, I want to address a common question about resetting autonumber fields in the customer table. Sometimes, after adding and deleting records, the IDs may jump in sequence. If you only have this one table, you can reset the autonumbers by copying just the table structure (without data), pasting it as a new table, and then copying your customer records into the new table. This resets the IDs to run in linear order. Remember, only do this if there are no other tables referencing those IDs; otherwise, you risk breaking your data integrity.

Next, let's design the table for tracking contacts. A contact, in this context, is every time you speak with or interact with a customer, whether by phone, in-person, or email. The table will include an autonumber ID for the contact, a customer ID to link to the main table, a date and time for the interaction (defaulting to the current date and time), a short description field, a long notes field for more details, and an optional Yes/No follow-up field. The combination of short and long text fields allows for easier searching and sorting, while still accommodating detailed notes.

After creating this contact table, we'll build a form for entering and viewing contacts and set it up as a subform inside the customer's main form. This way, when viewing a customer, you will see their most recent contact histories right on the same screen.

The trick is to use a continuous form layout for the subform so you can see multiple records at once. I prefer to differentiate the subform visually—changing colors, adjusting fonts, and arranging fields so it's clear this section pertains only to contacts. I also make sure the date fields are formatted for clarity, often including both the date and time in an easy-to-read format.

Because the form is embedded as a subform, Access automatically manages the linking of records via the customer ID field. This ensures when you add a new contact, it gets associated with the correct customer. You do not need to manually enter the customer ID—the relationship handles it for you. You can further refine the subform's layout to make it user-friendly and visually consistent.

The follow-up field can be especially useful. With a simple query, you can generate a list of all contacts that require future attention. I encourage students to explore creating queries for this purpose, and I have tutorials on query building for those who need guidance.

Once your subform is set up, you can easily add and review contact history for any customer in your database, all from the main form.

In the second portion of the lesson, we address a feature I find myself adding to many templates lately—a status box on the main menu. This feature gives you a convenient place to display messages or status information, which can be particularly helpful when writing and testing VBA code.

To add the status box, place a text box on your main menu form and give it a descriptive name, such as statusBOX. To ensure users know this is not for input, set the background color to gray and make it read-only. Then, add a command button nearby. After renaming it for clarity, you'll write a small VBA subroutine. This subroutine will take a string of text and display it in the status box, adding each new message above the previous ones. This approach makes it easy to communicate process steps or results to users without using popup message boxes.

I also demonstrate how to enhance messages with time stamps and even show how to use the status box inside a loop. Adding this feature saves development time, as you won't need to recreate status displays in future projects based on this template.

Normally, features like the status box are covered in members-only extended cuts. For this video, though, that segment is included in full as a bonus. If you find this kind of content helpful, consider joining as a member to access exclusive videos, live sessions, and other resources. Membership details and download links for the updated template are all available on my website.

For step-by-step video instructions covering everything outlined here, be sure to visit my website at the link below. Live long and prosper, my friends.
Topic List Resetting autonumber IDs in a customer table
Copying and pasting table structure and data in Access
Creating a contacts table with proper fields and datatypes
Setting up a contact form based on the contacts table
Customizing form layout and appearance for contacts
Adding fields to the contact form including description and notes
Formatting date and time fields on a form
Disabling tab stop for fields on a form
Placing the contact form as a subform in the customer form
Adjusting customer form layout to fit the new subform
Configuring Link Master Fields and Link Child Fields for subform relationships
Demonstrating data entry and navigation with the customer/contacts subform
Using follow-up fields to track customer follow-ups
Explaining how to use subform relationships for related data entry
Creating a status box on the main menu form
Adding and naming a command button to the form
Writing VBA code to display a message in the status box
Creating a reusable status update subroutine in VBA
Using DoEvents in VBA to update the UI during code execution
Demonstrating code to append new messages to the status box
Formatting the status box for read-only use
Customizing font size in a text box
Showing how to use a VBA loop to add multiple status messages
 
 
 

The following is a paid advertisement
Computer Learning Zone is not responsible for any content shown or offers made by these ads.
 

Learn
 
Access - index
Excel - index
Word - index
Windows - index
PowerPoint - index
Photoshop - index
Visual Basic - index
ASP - index
Seminars
More...
Customers
 
Login
My Account
My Courses
Lost Password
Memberships
Student Databases
Change Email
Info
 
Latest News
New Releases
User Forums
Topic Glossary
Tips & Tricks
Search The Site
Code Vault
Collapse Menus
Help
 
Customer Support
Web Site Tour
FAQs
TechHelp
Consulting Services
About
 
Background
Testimonials
Jobs
Affiliate Program
Richard Rost
Free Lessons
Mailing List
PCResale.NET
Order
 
Video Tutorials
Handbooks
Memberships
Learning Connection
Idiot's Guide to Excel
Volume Discounts
Payment Info
Shipping
Terms of Sale
Contact
 
Contact Info
Support Policy
Mailing Address
Phone Number
Fax Number
Course Survey
Email Richard
[email protected]
Blog RSS Feed    YouTube Channel

LinkedIn
Copyright 2026 by Computer Learning Zone, Amicron, and Richard Rost. All Rights Reserved. Current Time: 4/21/2026 9:58:49 AM. PLT: 1s
Keywords: TechHelp Access contacts, contact management, crm, followups, follow-ups, subform, vba, status, hello world, reset autonumbers  PermaLink  Customer Contact Database in Microsoft Access