25 Years of Programming
An open source source for C, C++, OWL, BASIC, MDB, XLS, DOT, and more...
Home   Projects   Up   Sitemap   Search   Blog   Forum+Chat   About Us   Privacy   Terms of Use   Feedback   FAQ   Images   Services   Payments   Humor

Family History Genealogy Microsoft Access Database

FAMHIST.MDB is a genealogy (family history or family tree) database that stores information about your ancestors and the relationships among them. It has a form that allows you to easily navigate up and down generations and across spousal relationships (i.e. from one side of the family to the other).

Its tables are:

People - fields for information about each person:

WhoID	Unique ID. Full initials, plus a number if required.
	Used for linking records to each other.
Father	The WhoID of father.
Mother	The WhoID of mother.
First	First name
Middle	Middle name(s) (enter all that are known)
Last	Last name
Suff	Jr. etc.
Sx	M or F
Gen	Generation 
	(Assigning someone born around 1800 to Generation 100 works well)
BMonth	Month of birth
BDay	Day of birth
BYear	Year of birth
BWhere	Place of birth
DMonth	Month of death
DDay	Day of death
DYear	Year of death
DWhere	Place of death
Buried	Place of burial
Memo	Additional info about this person. 
	It can hold very long text, entire articles.

Marriages - links two people from the People table to create a marriage:

MMonth	Month
MDay	Day
MYear	Year
MWhere	Place
Memo	Additional info about this marriage.

Download

Click here to download famhistmdb.zip (153 KB). It contains versions of the database for Access 2.0 and Access 2003. Both versions have some data in them so you can see how the BrowsePeople form works. Delete the data before entering your own.

Related project:

The Microsoft Excel personal history calendar / diary project could be used to store and lay out descriptions of significant events for people in your family tree.

Screenshots

The BrowsePeople form is easy to use but complex in its design. It has subforms, buttons that launch subroutines, and calculated fields that use domain lookup and other functions. I am no expert at Access Basic or Visual Basic, so it was amazing what could be done with only basic knowledge and a relatively small amount of code. The small amount of code is somewhat deceptive, however, because Access Basic code is dense. Also, much of the work is done by queries and subforms.

Screenshot of the BrowsePeople form with some data in it

The same form in Design View:

Screenshot of the BrowsePeople form in Design View

 

Notes on the family history database

Using the database

Depending on the Office security settings you use (I always recommend using relatively high security settings), when you open the database, you might get a warning about opening the built-in Access Utility.mda module, and also about my digital certificate that I use for signing Microsoft Office projects.

Browse the database with the BrowsePeople form. It displays one record (a person), with their parents, spouse or spouses, and children shown, with buttons that allow you to navigate to any of the parents, spouses, and children you choose. Another button (currently disabled, however) opens and searches famhist.doc for references to the person in the active record, and can be modified to search any other database or document file for photographs, references to artifacts, etc. That button is disabled in the Access 2.0 version because the code requires some simple modifications before you run it. It is disabled in the Access 2003 version because the 2.0 methods don't transfer properly to 2003, and they need rewriting.

Entering data

Data entry is most easily done through the forms. The entry procedure is not very well automated, and it would be difficult to automate it because of the interdependencies among the records in the database. It is easiest to begin entry with the earliest generation and work forward to the present time. This is because two of the fields you enter for a person are the parents, and it's easiest if they are already in the database.

Procedure to enter a person:

  1. Open the BrowsePeople form, and enter data for the person. Enter the codes for the parents, if known, using the dropdown boxes provided.
  2. If the person was married, also enter the spouse into the BrowsePeople form.
  3. Then switch to the EditMarriages form, and create a marriage between the two people.
  4. Then switch back to the BrowsePeople form and enter their children.
  5. Repeat until you run out of people.

The AutoExec macro, if you enable it, will open both the BrowsePeople and EditMarriages forms on startup because you'll be switching between them frequently.

Reasons for the .MDB format

A database format is the only one flexible enough to accommodate new facts.

In spite of their apparent desirability for presentation or other purposes, I've rejected all of the following alternative formats because although they would look great, adding a new person or new information would require readjusting the entire document:

  • XLS (boxes aren't staggered so as to fan out by twos, and would be miserable to readjust),
  • MSWord Outline View (which can be output as an organizational chart),
  • C++ program (too involved),
  • RTF/HLP file format would be terrific for "final" presentation if laid out like the OWL class hierarchy diagram (a bitmap with hot spots), but it is prohibitively inflexible, especially because the database is never truly finished,
  • HTML web page format with hypertext links would be even better, but, again, only for the impossible "final" presentation.

One advantage of a database format is that it lends itself to distributed access and editing through something like Windows Sharepoint services, so it could be stored in a central location like a website and everyone in a family could edit it on the internet.

It should be possible to use the MDB to create (with some difficulty) any of the other formats, a process that would not work in reverse.

Creating a lineage chart

No method is easy, and the final step is always a graphic design and layout problem.

  1. You can use the ChartExportData query to copy its data to an MSWord document based on drawing.dot. See the query's properties table. A lot of work, but the output could be acceptable.
  2. Or print all the people onto mailing labels, then stick the labels onto a big sheet of paper, laid out as needed.

 

Valid HTML 4.01 Transitional Valid CSS
View content labeling at ICRA.
Copyright ©2009 Steven Whitney. Last modified 10/24/2009.