Wie synchronisiere ich mehrere Access-Datenbanken zusammen?

15473
KronoS

Ich führe eine Studie durch, in der wir mithilfe von Access Daten sammeln. Da es mehrere Personen geben wird, die diese Studien mit derselben strukturierten Access-Datenbank durchführen, müssen wir einen Weg finden, die Informationen aus allen anderen Datenbanken zu aktualisieren und mit einer zentralen Datenbank zu synchronisieren. Mit anderen Worten, die Daten, die von mehreren Personen erfasst werden, müssen in einem zentralen Bereich gesammelt werden. Wie mache ich das?

Im Grunde ist es genau das, was ich tun möchte, aber ich weiß nicht wie:

Indirekte Synchronisation

Die indirekte Synchronisierung ist nützlich, wenn Sie in einer nicht verbundenen Umgebung arbeiten, z. B. wenn Sie mit einem Laptop unterwegs sind.

Die indirekte Synchronisierung kann nur mit Replication Manager konfiguriert werden. Nachdem die indirekte Synchronisierung mit Replication Manager konfiguriert wurde, können Sie eine indirekte Synchronisierung mithilfe von Microsoft Access, Replication Manager oder JRO ausführen.

Seite? ˅

5
Haben Sie über Google Text & Tabellen nachgedacht und eine einzelne Datenbank erstellt, auf die Sie über einen modernen Browser zugreifen können? Darius vor 12 Jahren 0
@Darius Leider ist gDocs nicht die Antwort, da es nicht so leistungsfähig ist wie Microsoft Access. Außerdem glaube ich nicht, dass gdocs eine Datenbankalternative hat KronoS vor 12 Jahren 0
a @ KronoS - Laufen die Access-DBs im LAN? Es gibt keinen schönen Weg, um es über das WAN arbeiten zu lassen, es wird Sie höchstwahrscheinlich in die Luft jagen. Darius vor 12 Jahren 0
@Darius meinst du damit zu sagen, dass Großkonzerne nur mit LANs mit ihren DBs arbeiten? o_O macht dort keinen Sinn. KronoS vor 12 Jahren 0
Was ich damit sage, dass Großunternehmen Access nicht über das WAN nutzen Darius vor 12 Jahren 1
Das Entwickeln von benutzerdefinierten Anwendungen mit MS Access kann generell wesentlich kostenintensiver sein als das Entwickeln von Geschäftsanwendungen mit MSDE oder MS SQL Server. Die IT-Abteilung benötigt normalerweise mehr Zeit, mehr Aufwand und Kopfschmerzen mit MS Access. Es ist erheblich schwieriger, MS Access als verteilte Geschäftsanwendung bereitzustellen und zu steuern, ohne die IT-Support-Kosten zu erhöhen. Und selbst wenn Sie die zusätzliche Zeit und Mühe investiert haben, um die Einschränkungen zu überwinden, skaliert die MS Access-Plattform nicht. Darius vor 12 Jahren 5
@KronoS Große Unternehmen würden ein VPN und geeignete zentralisierte Datenbankserver wie MSSQL, Oracle, MySQL usw. verwenden. Darth Android vor 12 Jahren 0
Sind die Personen während der Datenerhebung offline? oleschri vor 12 Jahren 0
Es kann sinnvoll sein, eine Access-Datenbank auf einem Netzlaufwerk zu speichern und eine einfache Benutzeroberfläche zum Eingeben der Daten zu erstellen. Selbst wenn mehrere Benutzer die Access-Datenbank öffnen, sollten Sie in Ordnung sein, solange sie nur HINZUFÜGEN und nicht ENTFERNEN von Daten sind. Breakthrough vor 12 Jahren 0

4 Antworten auf die Frage

1
TuxRug

Die zuverlässigste Methode, die ich dazu kenne, ist das Schreiben eines Programms, das mit der Datenbank eines Dateiservers arbeitet. Ich musste an einem Programm arbeiten (von Grund auf), um dies für einen Client zu tun, der MS Access verwenden wollte, sonst nichts. Leider ist es zu schwierig, hier zu erklären. Wenn Sie nur von mehreren Stellen auf die Access-Datenbankdatei zugreifen können, sollte die MS Access-Software Änderungen vornehmen können, aber ich weiß nicht, ob sich diese Änderungen in anderen Systemen verbreiten würden oder wie zuverlässig dies wäre.

1
harrymc

Siehe diesen Artikel: Mehrere MS Access-Datenbanken in einer einzigen Datenbank zusammenführen :

Nachfolgend finden Sie eine in MS Access VBA geschriebene Merge () - Funktion zum Konsolidieren mehrerer normalerweise strukturierter Datenbanken in einer einzigen. Ich musste diese Funktion für ein Projekt schreiben, in dem ich viele Inseldatenbanken konsolidieren musste. Der Aufbau der Datenbanken war genau gleich.

Sie erhalten Warnungen, wenn keine Daten eingefügt werden können, da sie doppelte Datensätze erstellen. Ignorieren Sie in diesem Fall einfach die Warnmeldung und fahren Sie fort.

Das Skript selbst führt nur die Ausführung von Befehlen durch, die wie folgt aussehen:

INSERT INTO target SELECT * FROM source 

Da der ursprüngliche Webserver anscheinend fehlerhaft ist, wird das gesamte Skript von der Wayback-Maschine abgerufen und hier wiedergegeben:

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 
Link scheint defekt zu sein KronoS vor 12 Jahren 0
Gefunden auf der [Wayback Machine] (http://wayback.archive.org/web/) und oben kopiert. harrymc vor 12 Jahren 0
Der Code scheint nicht zu funktionieren :( Ich bekomme immer einen Syntaxfehler in Zeile 64: "dppath = appPath &" \ "& dbfiles (i)" ... da ich nichts über VBA weiß, bin ich mir nicht sicher, was das ist prob ist genau. KronoS vor 12 Jahren 0
Der Code wurde falsch reproduziert, möglicherweise sogar seit der ursprünglichen Veröffentlichung. "&" ist die HTML-Codierung von "&" (kaufmännisches Und). Ich habe den Code korrigiert und hoffe, dass es jetzt funktioniert. harrymc vor 12 Jahren 0
Immer noch kein Glück. Das Skript wird ordnungsgemäß ausgeführt. Wenn es jedoch die Werte anhängt, wird ein Fehler angezeigt. KronoS vor 12 Jahren 0
Welche Fehlermeldung? harrymc vor 12 Jahren 0
0
Sharken

Etwas ähnliches wurde in StackOverflow erörtert. Vielleicht erhalten Sie einige Hinweise, wie Sie fortfahren können.

Eine andere Option, die möglicherweise über Ihrem Budget liegt, könnte Altova DatabaseSpy sein . Sie kann CSV / XML-Daten in eine Access-Datenbank importieren.

0
chris

Ich bin nicht sicher, welche Art von Benutzeroberfläche Sie für die Dateneingabe verwenden, aber ich würde vorschlagen, NICHT den Zugriff zu verwenden und stattdessen SQL Express zu verwenden und die Dateneingabe möglicherweise als .Net-Anwendung auszuführen.

Sie können dann SQL Server ausführen und die einzelnen Express-Datenbanken wieder mit dem Master zusammenführen. Besuchen Sie http://msdn.microsoft.com/en-us/library/ms152746.aspx

Sie haben keine Details zu den Daten, die Sie sammeln, aber es scheint, dass es keine Überschneidungen gibt - dh jeder Sammler hat einen eindeutigen Datensatz ohne die Möglichkeit von Zusammenführungskonflikten -, also sollte es ziemlich einfach gehen.