MikeO
This could be simple or a bear depending on the design and the consistency of the external data. And how much info are we talking about. Regardless, since this is a routine excercise, I think you are looking at developing a maintenance form and / or filtering or import program.
When reviewing / importing / coallating data from multiple datases, say different contact databases, I create two subforms -- one for the "live" contact info, and one for the "external" info. I will have to taylor subform for the new data to adjust for any database differences. In your case, since I expect you will be getting the external data in a consistent form, I hope this will not be necessary.
I then scroll through the external records. With each new record, logic for the on current event tries to find the "live" record using various searches -- phone number, name, address.
If a full match is found -- name matches, phone number matches, address matches, etc.
If a reasonable match is found, then differences are highlighted. The user then can click a button to update the "live" record if required.
If no match is found, a couple of combo boxes on the main form allow me to manually search the live data for a match (variation on the spellings, etc).
And another button allows the me to insert external record into the new record.
For larger messed up contact databases, I have written a verification / parsing program, probably similar to your dbase idea, that goes the external database, and tries to find the appropriate match, and then uses a best guess to update the live database -- basically, I try to automate the manual process. Statistically, I have got this routine to about 98 to 99% accurate.
Here the external data is written to a temp table. I then edit the temp table and use it to update the live data.
Another variation...
We have a asset manager utility program on the desktop that takes an inventory of the software and hardware on each desktop. It generates over 150,000 records for software.
The reports were overwhelming to management due to different versions, different spellings, etc. So I created a "live" database used for running reports with about 700 records. This database links to the raw data using a joining or intermediatory table. It uses the actual application name from raw data and links to applicaiton master file using the autonumber application ID. This way, several records from the raw data can point to one live data.
The raw data is created very couple of weeks. I run a program that runs through the raw data looking for matches in the joining table. If one is not found, a record is created in the joining table and a new application master record is created in the live data.
Since the name rarley changes for on the raw data for existing records, relatively few updates are encountered.
The operator can then review the generated log and make any appropriate corrections. Although this is not using a contact database, I defintely prefer this last approach since the live data remains intact, and is fully normalized. But it requires for the external data to be consistent.
In review
I have used three variations to "match" new data from external sources. The external data is imported into the "live" data which has been normalized. Flipping through each record by record is tedious, and I only use this approach as a one time shot when porting to a new and improved database. Although it is tedious, it is still the best approach when you have little control with the external data.
For routine and ongoing updates, I create a filtering / parsing program to match external data to the live database. This took a bit more coding, especially when trying to match variations with names, phone numbers and addresses.
Hope this late night rambling helps.
Richard