views:

24

answers:

2

Hi folks,

I'm helping out a business by providing an Access DB to manage requests of various types. As they are a construction company, they have one machine in an 'office' on the building site, plus 3 based in their main office. The machine on site has no internet connectivity.

Is there any (reasonably simple) way to synchronise the offsite and onsite databases every so often? I realise the tables could be merged, but each has an autoincrement field which must be synced between instances (i.e. when merging two tables the autoincrement should be reassigned based on the combination of records).

Cheers in advance,

Paul

A: 

For your Autonumber PK field use a ReplicationID (GUID) instead of a long so that the numbers will be unique across all copies of the database, even if they are disconnected.

There are a lot of options for replication with Access. Here is an article to get you started.
Understanding Access Replication

JohnFx
Er, Access doens't handle GUIDs well (http://trigeminal.com/usenet/usenet011.asp?1033), though there's nothing completely insurmountable. Also, recommending ReplicationID and replication in the same post is bound for problems, too, since using a ReplicationID as PK breaks the built-in conflict resolver.
David-W-Fenton
+1  A: 

Jet Replication is one answer, but not an easy one, as for a remote location you have to use indirect or Internet replication, both of which are pretty complex to set up and require regular maintenance to keep running reliably. That said, indirect replication works very well (I've never used Internet replication because of the hardwired dependency on IIS, which I consider unacceptable).

For one-stop shopping on the subject of Jet Replication, see the Jet Replication Wiki.

Microsoft is gradually phasing out support for Jet replication in Access (though I expect it to be supported as long as MDB files are supported without conversion), so a better solution to the problem might be to use the tools Microsoft has put in place to replace the functionality Jet replication provided. This would be Sharepoint, of course. In A2007, Sharepoint was way too inadequate to be a proper replacement for Jet replication, but starting with A2010 and Sharepoint 2010, all that changes.

If I had a new client coming to me with this requirement, even though I've got years and years of experience with Jet replication, I'd recommend A2010 and Sharepoint 2010 as the solution to the problem, and would say to wait.

It may be that a client doesn't want to spring for a Sharepoint server, and in that case, there's hosted Sharepoint available, which should be supporting Sharepoing 2010 shortly after the release of Office 2010 in May.

Of course, it's also possible to program synchronization manually, but that's quite complex in a multi-master scenario. However, if the records in the two databases do not overlap (i.e., records created in one are not updated in the other, or put another way, it's mostly and add-only app for each database), it's not as bad a problem. Deletes are a harder problem, but not unresolvable.

David-W-Fenton
Thanks for taking the time to answer. I will put together a business justification doc and suggest hosted SharePoint. They are in general a Microsoft-purchasing business and I think SharePoint may solve a number of other issues they are having also.
bloodiedcodinghands
I wouldn't recommend any version of Sharepoint before 2010 because of the lack of real data integrity enforcement in Sharepoint lists.
David-W-Fenton