AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi 2 Tabellen abgleichen
Thema durchsuchen
Ansicht
Themen-Optionen

2 Tabellen abgleichen

Ein Thema von Tim Henford · begonnen am 20. Mär 2007 · letzter Beitrag vom 21. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#1

2 Tabellen abgleichen

  Alt 20. Mär 2007, 08:36
Datenbank: MSSQL • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
126 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: 2 Tabellen abgleichne

  Alt 20. Mär 2007, 19:59
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):

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.
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#3

Re: 2 Tabellen abgleichen

  Alt 20. Mär 2007, 20:40
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?
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
126 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: 2 Tabellen abgleichen

  Alt 20. Mär 2007, 21:37
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: 2 Tabellen abgleichen

  Alt 20. Mär 2007, 22:15
Haben die beiden Tabellen verschiedene PK-Wertebereiche?
Könnte mit MERGE durchgeführt werden.
http://www.databasejournal.com/featu...le.php/1438231
Markus Kinzler
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#6

Re: 2 Tabellen abgleichen

  Alt 20. Mär 2007, 22:27
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: 2 Tabellen abgleichen

  Alt 20. Mär 2007, 22:32
Du kannst das Ganze natürlich auch manuell machen. Die beiden tabellen der beiden Datenbanken Satz für Satz vergleichen.
Markus Kinzler
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#8

Re: 2 Tabellen abgleichen

  Alt 20. Mär 2007, 22:41
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?
Das dauert doch bestimmt ewig...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: 2 Tabellen abgleichen

  Alt 20. Mär 2007, 22:42
Ich würde das schon Zeile für Zeile machen.
Markus Kinzler
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#10

Re: 2 Tabellen abgleichen

  Alt 20. Mär 2007, 23:44
wie macht man dass denn?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr.
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