Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi 2 Tabellen abgleichen (https://www.delphipraxis.net/88728-2-tabellen-abgleichen.html)

Tim Henford 20. Mär 2007 07:36

Datenbank: MSSQL • Zugriff über: ADO

2 Tabellen abgleichen
 
Hallo,

also ich versuche gerade eine Synchronisationsfunktion hinzubekommen.
Nun stellt sich die Frage, ob man den Inhalt 2er in den Spalten identische Tabellen, zusammenführen kann.

Denn bei einer großen Anzahl von Spalten ist es dann, denke ich aufwendig, jede einzelne Zelle von der einen Tabelle in die andere zu übertragen.

Des Weiteren sollte der Zugriff zum Synchronisationszeitpunkt nur für einen User erlaubt sein - da habe ich etwas vom Erstellen einer Sprerrtabelle gelesen, wie sieht sowas aus?

Dankschön
Tim

daddy 20. Mär 2007 18:59

Re: 2 Tabellen abgleichne
 
Ich selber arbeite mit Firebird und da gäbe es m.E. eine Möglichkeit das Ganze vom Server selber erledigen zu lassen mit ungefähr folgendem SQL-Befehl (, den ich allerdings jetzt nicht getestet habe):

SQL-Code:
Insert into Tabelle_A Select * from Tabelle_B where not Exists (Select * from Tabelle_A where IDNr = Tabelle_B.IDNr)
Erläuterung: Man kann mit einem INSERT auch mehrere Datensätze einfügen, deren Inhalt über das nachfolgend formulierte Select zugewiesen wird. Voraussetzung ist, dass das SELECT die gleichen Datentypen in der gleichen Reihenfolge liefert, wie sie vom INSERT erwartet werden. Da Du schreibst, es handelt sich um zwei gleiche Tabellen, wäre das in Deinem Fall ja erfüllt.
Prüf doch mal, ob diese Sysntax auch in MSSQL zulässig ist.

Zu Deiner zweiten Frage kann ich leider nichts Konkretes sagen. Man könnte natürlich eine eigene Sperrtabelle definieren, die man vor jedem INSERT oder UPDATE abfragen müsste, um zu prüfen, ob die Aktion gerade zulässig ist.

Tim Henford 20. Mär 2007 19:40

Re: 2 Tabellen abgleichen
 
Danke dir, die Idee ist schonmal gut, nur müsst ich jetzt den Inhalt der aus einer Datei in einen Datasource oder eben DBGrid geladen wird, auf den Server übertragen, wie geht denn sowas wieder?

daddy 20. Mär 2007 20:37

Re: 2 Tabellen abgleichen
 
Hmmm, vielleicht habe ich Dich da auch missverstanden. Ich hatte es so verstanden, dass es sich um zwei Tabellen handelt, die in der gleichen Datenbank des MSSQL-Servers liegen. :?

mkinzler 20. Mär 2007 21:15

Re: 2 Tabellen abgleichen
 
Haben die beiden Tabellen verschiedene PK-Wertebereiche?
Könnte mit MERGE durchgeführt werden.
http://www.databasejournal.com/featu...le.php/1438231

Tim Henford 20. Mär 2007 21:27

Re: 2 Tabellen abgleichen
 
Ja, das ist wohl schon sehr in diese Richtung mit der merge Replikation, nur leider bräuchte ich wohl eine kleine Beschreibung zum pull subscription System.

Ich dachte, dass es irgendwie noch anders geht. Wie macht man denn das, wenn man die BDE benutzt, da gibt es doch auch keine automatische eingabaute Replikationsfunktion wie bei MSSQL oder?

Wie sieht dass denn aus, muss ich da auch einen SQL Server auf der Client Seite haben, also um die Updates von dem DB-Server zu bekommen?

mkinzler 20. Mär 2007 21:32

Re: 2 Tabellen abgleichen
 
Du kannst das Ganze natürlich auch manuell machen. Die beiden tabellen der beiden Datenbanken Satz für Satz vergleichen.

Tim Henford 20. Mär 2007 21:41

Re: 2 Tabellen abgleichen
 
also kommt man nicht drumherum jede einzelne zelle von der einen Tabelle in die andere zu übertragen mit einer for oder while Schleife?

Kann man denn nicht wenigstens einen Teil von einem Dataset an den anderen anhängen, sodass die neu erstellten Einträge nicht Zelle für Zelle, sondern wenigstens Spalte für Spalte oder Zeile für Zeile kopiert werden? :cry:
Das dauert doch bestimmt ewig...

mkinzler 20. Mär 2007 21:42

Re: 2 Tabellen abgleichen
 
Ich würde das schon Zeile für Zeile machen.

Tim Henford 20. Mär 2007 22:44

Re: 2 Tabellen abgleichen
 
:?: wie macht man dass denn?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz