Yes, you can do it yourself. To begin with, you need a listing of zip codes
and their associated cities/states. You would then enter a zip code in the
zip code control on a form. In the After Update event of the zip code
control, you would use the DLookup function to find the associated city and
state and assign those values to the city and state controls. The problem
with these systems is that they give you the city and state of the post
office, not necessarily the city and state of the address. This doesn't
cause a problem with the mail, it will get there, but if you're looking on a
map for the location, you may be looking in the wrong city.
Another option is to skip the premade table and just start entering values
yourself. You could then use a combo box for the city and state (to take
care of the problem listed above) and when you enter the zip code, requery
the two combo boxes using the zip code as criteria. You would search the
records you've already entered and that would fill in the combo boxes' drop
downs. If there was only one value returned, assign that value to the combo
box. If there was more than one value returned, leave the combo box blank
for the user to select from the available entries or add a new one that you
may not have there yet.
The second method saves you the trouble of buying a listing of zip codes
that you may never use, you will build a listing of the zip codes you use on
a regular basis in a short time.