The most reliable way I know of to do this is to write a program that works with the database off a fileserver. I've had to work on a program (from scratch) to do this for a client that wanted to use MS Access, nothing else. Unfortunately, it's too tricky to explain here. If you can just access the Access database file from multiple places, the MS Access software should be able to make changes but I don't know if those changes would propagate through other systems, or how reliable it would be.
Как синхронизировать несколько баз данных вместе?
Я провожу исследование, где мы будем собирать данные с помощью Access. Поскольку эти исследования будут проводиться несколькими людьми, использующими одну и ту же структурированную базу данных Access, нам необходимо найти способ обновления / синхронизации с центральной базой данных, используя информацию, полученную из всех других баз данных. Другими словами, данные, которые собираются несколькими людьми, должны быть собраны в одной центральной области. Как мне это сделать?
По сути, это именно то, что я хочу сделать, но не знаю как:
Косвенная синхронизация
Косвенная синхронизация полезна, когда вы работаете в автономной среде, например, когда вы путешествуете с ноутбуком.
Косвенная синхронизация может быть настроена только с помощью диспетчера репликации. После настройки косвенной синхронизации с помощью Replication Manager можно выполнить косвенную синхронизацию с помощью Microsoft Access, Replication Manager или JRO.
4 ответа на вопрос
- Популярные
- Новые
- С комментариями
- Активные
Смотрите эту статью: Объедините несколько баз данных MS Access в одну :
Ниже приведена функция Merge (), написанная в MS Access VBA для объединения нескольких обычно структурированных баз данных в одну. Мне пришлось написать эту функцию для одного из моих проектов, где мне нужно было объединить множество островных баз данных. Структура баз данных была точно такой же.
Вы будете получать предупреждения, когда данные не могут быть вставлены, поскольку они будут создавать дубликаты записей. В такой ситуации просто проигнорируйте предупреждающее сообщение и продолжайте.
Сам скрипт просто зацикливается на выполнении команд, которые выглядят так:
INSERT INTO target SELECT * FROM source
Поскольку оригинальный веб-сервер, кажется, сломан, весь сценарий извлекается из Wayback Machine и воспроизводится здесь:
Option Compare Database Option Explicit 'Set the below variable to TRUE 'When you are done with testing 'Basically testing mode will print 'the names of all the databases 'you are going to merge Const bTest = False Sub Merge() 'Copyright © iLoveCoding, 2010 'Web: http://www.iLoveCoding.co.uk 'The Merege() is a function that merges 'records from multiple MS Access databases 'into a consolidated one provided that the 'structure of all databases are exactly same. ' 'This function assumes that there are 'no relationships defined among the tables. 'Which is typically the scenario when an 'MS Access database is used in an Intranet or 'Web application. 'However properly altering the order of the 'dbfiles() initialization one can easily 'address the issue of relationships and 'data integrity among tables On Error GoTo errhand Dim appPath$ '---------------------------------------------- 'Change the below number to number of databases 'you are going to merge '---------------------------------------------- Const ndb = 22 Dim dbfiles$(2 To ndb) Dim i% 'ANA.mdb '---------------------------------------------- 'Array of the database file names without path 'Copy this code into a module of the first database 'The first database is going to be the consolidated 'capturing the records from all other databases. 'The first database name is not present here 'That is why the index starts with 2. '---------------------------------------------- dbfiles(2) = "second.mdb" '<= change the file name dbfiles(3) = "third.mdb" dbfiles(4) = "fourth.mdb" ' 'similarly initialize other files ' dbfiles(10) = "tenth.mdb" '---------------------------------------------- ' The databases should be copied to the same ' folder of the first database '---------------------------------------------- appPath = CurrentProject.Path For i = 2 To ndb Dim dbpath$, db As Database dbpath = appPath & "\" & dbfiles(i) Set db = OpenDatabase(dbpath) Dim tbl As TableDef, j% For j = 0 To db.TableDefs.Count - 1 DoEvents Set tbl = db.TableDefs(j) If tbl.Attributes = 0 Then If bTest Then Debug.Print tbl.Name Else DoCmd.TransferDatabase acLink, "Microsoft Access", _ dbpath, acTable, tbl.Name, tbl.Name & "_Linked", False Dim sql$ sql = "INSERT INTO [" & tbl.Name & "] SELECT * FROM [" & _ tbl.Name & "_Linked" & "]" DoCmd.RunSQL sql DoCmd.DeleteObject acTable, tbl.Name & "_Linked" End If End If Next j Debug.Print dbfiles(i) Next i Exit Sub errhand: MsgBox Err.Description End Sub
Нечто подобное уже обсуждалось в StackOverflow, возможно, оно может дать вам несколько советов о том, как продолжить.
Другой вариант, который может превышать ваш бюджет, может быть Altova DatabaseSpy, он может импортировать данные CSV / XML в базу данных Access.
Я не уверен, какой тип пользовательского интерфейса вы используете для ввода данных, но я бы посоветовал НЕ использовать доступ, а вместо этого использовать SQL Express и, возможно, вводить данные как приложение .Net.
Затем вы можете запустить SQL Server и объединить отдельные экспресс-базы данных обратно в главную. Взгляните на http://msdn.microsoft.com/en-us/library/ms152746.aspx
У вас нет сведений о данных, которые вы собираете, но похоже, что не будет никаких совпадений - то есть каждый сборщик имеет уникальный набор данных, без какой-либо возможности конфликтов слияния - так что все должно пройти довольно легко.
Похожие вопросы
-
16
Как синхронизировать библиотеки iTunes?
-
2
Windows 7 Home Premium запоминает пароли общего доступа к сети?
-
4
Как заблокировать выровненные по правому краю панели инструментов в Windows 7, чтобы они не выглядел...
-
-
12
Как я могу синхронизировать папки между несколькими компьютерами в моей домашней сети?
-
8
Есть ли менеджеры паролей для iPhone и Windows XP?
-
4
Функция Windows 7 «Aero Snap» в Ubuntu GNOME
-
3
Мой второй жесткий диск не виден в Windows 7
-
3
Можно ли выполнить одностороннюю синхронизацию голосовых заметок iPhone с ПК?
-
7
Как заменить Блокнот в Windows 7?
-
2
Как расположить значки панели задач Windows 7 в 2 ряда?