Hallo!
Ich möchte eine Datenbank Aufgrund einer Selektion aufteilen. Und die Komplettstruktur behalten.
(Es handelt sich um eine Kontaktdatenbank mit mehreren verknüpften Tabellen. Sie soll aufgeteilt werden, um mehrere Leute dran arbeiten zu lassen. Die selektion erfolgt über ein generiertes SQL- Statement. Nach Bearbeitung werden die Daten wieder zusammengeführt.)
Ich habe mir das erst mal so vorgestellt:
1. die Struktur der Tabellen in eine neue Datenbank kopieren
2. auf Basis der Selektion die Tabellen der neuen Datenbank füllen
3. Sicherungskopie der aktuellen Datenbank erstellen
4. Selektierte Datensätze aus der Quelldatenbank löschen
Hat jemand Ideen, wie das am einfachsten zu bewerkstelligen ist?
Besonders Punkt 1?
Der Rest müsste ja weitgehend per SQL zu machen sein.
THX, Gerhard
Hallo,
deine Idee ist imo wenig sinnvoll.
Teile die Datenbank lieber so auf, dass in einer mdb alle Tabellen (Backend) und in einer zweiten mdb der Rest ist. (Frontend)
Das Backend kommt zentral auf einen Server, das Frontend wird an alle User verteilt die es lokal installieren. Danach noch Tabellenverknüpfung herstellen und fertig.
Gruß Andreas
Hallo Andreas,
Dies Frontend-Backend Aufteilung ist schon vollzogen.
Nur die Sache mit dem Server ist nicht machbar (es gibt keinen).
Zudem müsste man die DB dann noch Multiuser-fähig haben.
Daher der Gedanke mit der Teilung.
Gerhard
Hallo,
wenn es keinen Server gibt, heist das jeder hat auf seinem PC eine unabhängige DB die er bearbeitet?
Wie willst Du dann bei der Zusammenführung sicherstellen, dass alles (die Daten) an seinem Platz ist?
Oder bearbeitet jeder ausschließlich seine Daten?
Kannst Du das Vorhaben mal etwas mehr erklären?
ZitatZudem müsste man die DB dann noch Multiuser-fähig haben.
Access ist von Haus aus ohne besondere Maßnahmen Multiuser fähig.
Hallo,
wenn du keinen Server hast ist das kein Access Problem.
Du benötigst ja eigentlich nur ein Rechner als Fileserver, und eine Heimnetz-Einrichtung über die die Client-Rechner zugreifen.
Jedes andere Konstrukt ist unsinnig weil Redundanzen und Datenbankfehler vorprogrammiert.
Gruß Andreas
Genauer erklärt ist das so:
Mehrere Leute rufen bei Firmen an und protokollieren diese Anrufe in der Datenbank.
Diese Leute sitzen an völlig unterschiedlichen Orten. Client-Server fällt daher aus.
Jeder bekommt einen Teil der Datenbank, den er bearbeitet. Nach der Bearbeitung werden die Teile wieder zusammengefügt. Das scheint mir der einzig mögliche Weg, da ein Abgleich nicht möglich wäre, wenn jeder an der vollen Datenbasis arbeiten würde.
Aber zum Aufteilen brauche ich jeweils erst die DB-Struktur in einer neuen Datei und schreibe dann dorthin die extrahierten Daten (siehe oben)
ZitatDiese Leute sitzen an völlig unterschiedlichen Orten. Client-Server fällt daher aus.
Dies ist zuerstmal kein Grund. Haben diese "unterschiedlichen Orte" technischen Zugriff auf die DB oder nicht?
Wenn ja, dann würde ich dies machen wie "Hondo" es beschrieben hat.
Die einzige Möglichkeit aus meiner Sicht in der von euch vorgeschlagenen Richtung ist ein FTP- Server. Der nützt aber nichts, da in dem Fall die DB zur Bearbeitung runtergeladen und anschließend wieder hochgeladen wird.
Einen über Internet erreichbaren Fileserver? Da hab ich k.A. wie das mit einfachen Mitteln gehen soll.
Vermutlich auch zu aufwändig.
Keine Tipps für meinen Ansatz?
Gerhard
Hallo,
nein, bei diesen Gegegenheiten (die man im Posting Nr. 1 ruhig hätte erwähnen können) brauchst du einen per IP zugänglichen SQL Server, und statt Access MDB-Dateien ein Access Projekt ADP.
Andere Alternativen sind fehleranfällig und bedeutet häufigen manuellen Eingriff in die Datenbank zur Korrekttur, etc.
Ich würde über eine Webbasierte Lösung nachdenken, d.H. MySQL Datenbank und PHP-Programmierung.
Das ist von der Entwicklung und den Hostingkosten abgesehen (letztere sind aber gering) fast kostenlos.
Gruß Andreas
Von welchen Datenmengen reden wir denn? Wie viele Nutzer, wie viele Datensätze?
Was für Internetanschlüsse stehen an den Standorten zur Verfügung?
Wenn durchgängig mehrere MBit/s zur Verfügung stehen, könnte man die Standorte per VPN verbinden - dann arbeiten alle wie in einem lokalen Netzwerk und können gemeinsam auf das Backend zugreifen.
Nach der Projektbeschreibung halte ich aber ebenfalls eine webbasierte Lösung für die bessere Wahl...
Danke für die Tipps!
Leider habe ich von PHP ebenso wenig Ahnung, wie vom Aufsetzen von webbasierten SQL- Servern.
Die DB umfasst ein paar hundert Kundenstammsätze und 5-10x soviel Bewegungsdaten.
Nicht viel also.
5-10 Leute arbeiten dran, aber nur jeweils 2-3 gleichzeitig.
Ich will hier auch nicht ein riesen Projekt aufsetzen, sondern 1.2 Tage in Access investieren und gut.
Deshalb würde ich meinen Opel dem vorgeschlagenen Rolls vorziehen. (VPN ifällt ebenfalls in die Kategorie)
Gerhard
Hallo Elwood
Schon mal über eine Datenbank als Replikat nachgedacht. Dort gibt es ein Desingmaster an dem du Ändernungen aller Art vornehmen kannst, das Replikat verwenden deine Nutzer. Die Nutzer können ohne Netzwerk Verbindung mit ihrer Datenbank arbeiten, somit Daten erfassen oder ergänzen. Der Daten Austausch findet dann per Replizieren zwischen den Replikaten oder dem Desingmaster statt, das kann z.b per USB Stik oder aufgebauter Datenleitung UMTS Netz stattfinden.
Gruß Stefan
Wäre das Replikat eine schlichte Kopie? Oder ist das eine spezielle Funktionalität?
Gibt es da was um drüber nachzulesen?
Gerhard
Hallo,
ja sicher ;) : gockel mal z. B. nach "Access Replikat"
Hallo,
ZitatGibt es da was um drüber nachzulesen?
z.B.: http://office.microsoft.com/de-de/access-help/CH006366427.aspx? (http://office.microsoft.com/de-de/access-help/CH006366427.aspx?)
Replikation erzeugt weder eine multiuserfähige Datenbank noch ist es m.E. ein gangbarer Weg im produktiven Umfeld Daten auf diese Weise zu aktualisieren.
Replikation wäre nach meinem Dafürhalten dann sinnvoll einzusetzen, wenn jeden Tag um 7:00 alle Beteiligten vom gleichen Datenbestand auszugehen hätten - alles andere wird mühsam.
Werden die neuen Dateiformate verwendet (ACCDB) egal ob von Acc2007 oder 'Acc2010 fällt Replikation sowieso flach, da diese bei ACCDB-Dateien nicht unterstützt wird.
Zitatin der von euch vorgeschlagenen Richtung ist ein FTP- Server
Nein, davon war hier keine Rede. Mit einem FTP-Server würdest du nichts anfangen können.
Wenn alle Möglichkeiten einer zentralen Datenspeicherung ausfallen die im 'konventionellen' Umfeld Gang und Gäbe sind gefällt dir vielleicht das:
http://www.microsoft.com/visualstudio/en-us/lightswitch/overview (http://www.microsoft.com/visualstudio/en-us/lightswitch/overview)
Danke erst mal für die Tipps und Hinweise.
Ich habe mal kurz mit Replikation rumprobiert. Das scheint aber mit einer geteilten DB Probleme zu machen.
Na, ich forsche weiter.
Gerhard
Hallo Gerhard,
schau mal hier: http://www.access-o-mania.de/forum/index.php?topic=13591.msg76806;topicseen#msg76806 (http://www.access-o-mania.de/forum/index.php?topic=13591.msg76806;topicseen#msg76806)
Gruß Oma
So.
In der Zwischenzeit hatte ich Gelegenheit die Replikation etwas auszuprobieren.
Leider muss ich den gesamten Datenbestand replizieren, da es anscheinend nicht möglich ist, ein Teilreplikat über mehrere Tabellen einzuschränken. (Oder soll man das einfach lassen und die verknüpften Tabellen haben dann eben keine Quellsätze mehr?)
Außerdem wüsste ich nicht, wie ich mit VBA einen Filter für ein Teilreplikat definiere.
Weiß das jemand?
Also habe ich nun über MakeReplica Replikate erstellt und synchronisiere sie mit Synchronize.
Leider: Wenn Konflikte auftreten werden diese erst mal nicht bereinigt. Rufe ich dann in der MasterDB den Konfliktlösungsassistenten auf, erhalte ich den Fehler, dass die "ReplicationConflictFunction" nicht richtig gesetzt wurde.
Dass man die so setzen, kann, dass der Assistent anspringt, habe ich noch herausgefunden.
Aber wie ich das machen soll und vor allem wann - da weiß ich nicht weiter.
Kann jemand helfen?
Gerhard
Hallo Gerhard,
da du so garnicht auf meinen Hinweis reagierst hast, habe ich gemerkt, dass mein Link auch falsch war
richtig sollte sein: http://www.access-o-mania.de/forum/index.php?topic=8472.msg45785;topicseen#msg45785 (http://www.access-o-mania.de/forum/index.php?topic=8472.msg45785;topicseen#msg45785)
Gemeint ist eine Lösung mit Terminal-Server, mit der wir sehr zufrieden sind!
Gruß Oma
Hallo Oma,
Technisch gesehen ist der Terminalserver sicher die sauberste Lösung.
Hat sicher auch seine Vorteile.
Aber zum einen wollen wir keinen Server im Dauerbetrieb laufen lassen (die DB wird von einzelnen Freiberuflern genutzt) und zum Anderen kenne ich mich mit VPN und Terminalserver noch weniger aus als in Access ;)
Gerhard
Hallo Gerhard,
ZitatAber zum einen wollen wir keinen Server im Dauerbetrieb laufen lassen (die DB wird von einzelnen Freiberuflern genutzt)
und warum ist dieses so, falls du wegen der Freiberufler Sorgen hast bezüglich des Zugriffes auf den Server (Datensicherheit): du kannst den Terminal-Server so einrichten, dass die User von außen nur mit der DB arbeiten können.
Zitatzum Anderen kenne ich mich mit VPN und Terminalserver noch weniger aus als in Access
ist auch nicht als Argument soo überzeugend, denn die einmalige Einrichtung eines VPN und des Terminal-Servers ist nicht so kompliziert;
ich hatte auch keine Ahnung davon, habe mir mal ein IT-Mann besorgt u. die Sache war relativ schnell erledigt und läuft bei uns mit mehreren Orten ohne Probleme!!
Replikationen sind doch ein Krampf
Gruß Oma