Autor Téma: Porovnanie obsahu dvoch DB objektov  (Přečteno 166 krát)

Offline František

  • Hrdina
  • ****
  • Příspěvků: 288
  • Karma: 3
    • Verze Delphi: primárne v XE5, občaas 10.1 starter, XE, BDS2006
Porovnanie obsahu dvoch DB objektov
« kdy: 26-10-2017, 09:31:09 »
Mám dve TFDMemTable a zaujíma ma či sú obsahovo rozdielne.
Pre upresnenie: v oboch mám načítanú tú istú tabuľku, ale z rôznych zdrojov.
Zaujíma ma len to či sú zhodné či nie (boolean).

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1765
  • Karma: 72
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Porovnanie obsahu dvoch DB objektov
« Odpověď #1 kdy: 26-10-2017, 10:04:36 »
Tak si je porovnej tím že si je proběhneš. Nejdříve si porovnej názvy fieldů, pak počet záznamů (nebo asi spíše naopak) a pokud je vše stejné, tak to prostě asi budeš muset manuálně porovnat.
Embarcadero MVP - Czech republic

Offline František

  • Hrdina
  • ****
  • Příspěvků: 288
  • Karma: 3
    • Verze Delphi: primárne v XE5, občaas 10.1 starter, XE, BDS2006
Re:Porovnanie obsahu dvoch DB objektov
« Odpověď #2 kdy: 26-10-2017, 10:21:05 »
No hladal som niečo ako Equals. Ale dík.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2976
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Porovnanie obsahu dvoch DB objektov
« Odpověď #3 kdy: 26-10-2017, 11:07:13 »
Na to by sa dal použiť aj UNION. A potom porovnať počet záznamov vo všetkých troch tabuľkách. Musí byť zhodný. Pokiaľ uvažujem správne ???
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Hrdina
  • ****
  • Příspěvků: 373
  • Karma: 16
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
    • Ibi Yoyo :)
Re:Porovnanie obsahu dvoch DB objektov
« Odpověď #4 kdy: 26-10-2017, 16:16:16 »
Pokud jsou shodne setridene a maji shodnou definici sloupcu, pak by mohlo stacit (mohlo, protoze porovnani dat muze mit mnoho podob):

Kód: Delphi [Vybrat]
  1. function EqualsData(A, B: TFDDataSet): Boolean;
  2. var
  3.   Row: Integer;
  4. begin
  5.   Result := A.Table.Rows.Count = B.Table.Rows.Count;
  6.   if Result then
  7.     for Row := 0 to A.Table.Rows.Count - 1 do
  8.       if A.Table.Rows[Row].CompareRows(B.Table.Rows[Row], rvDefault, []) <> 0 then
  9.         Exit(False);
  10. end;
« Poslední změna: 26-10-2017, 16:43:39 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: