>> How about this: Each machine maintains a list of all of it's transactions (local). It also maintains a list of all the other machine ID's that have contacted it, and last update time/date and a list of all of it's replication partners and when it received it's last update from them. At some fixed interval each machine contacts all of the partners in it's replication list and sends it it's machine ID. That machine looks up the ID, finds out the last update that was sent and then synchronizes the data. Each record in the transaction journal contains a date/time stamp so if the process is interrupted you reset the last updated time/date stamp. The receiving station will either have to roll back the changes, or make note of the changes made so that when it reconnects at some later point it doesn't try to apply the same changes it's received.
>>
>
>That is along the lines of what I'm thinking. There really shouldn't be a need for rollbacks because the most recent transaction can be considered the most appropriate.
>
>Unfortunately, I can't use dbc (triggers). The tables must remain fp 2.6 format because C++ apps using Codebase.
Update your copy of Codebase - as long ago as version 6.0, support for the .DBC and extended .DBF file formats was added.