Forum Delphi.cz

Delphi => FireDAC => Téma založeno: Stanislav Hruška 23-07-2017, 11:07:00

Název: FireDAC.MemTable - poradie záznamov.
Přispěvatel: Stanislav Hruška 23-07-2017, 11:07:00
Môžem sa spoľahnúť, že ak si naplním MemTable
Kód: Delphi [Vybrat]
  1. FDMemTable1.CopyDataSet(Query1, [coStructure, coRestart, coAppend]);
a Query1 obsahuje ORDER BY, tak poradie záznamov bude zachované?
Alebo si ho musím vynútiť  MemTable.Indexes := ...
Název: Re:FireDAC.MemTable - poradie záznamov.
Přispěvatel: 96551 23-07-2017, 14:02:35
Spolehnout se pravdepodobne da (nemam po ruce zdrojak, a i kdybych mel, nemuzu zarucit bez kontraktu v helpu budoucnost). FireDAC ale nebude "nahodile" skakat kurzorem (musi pocitat i s tim, ze muze byt kurzor zdrojoveho datasetu jednosmerny). To by byla hloupost. Co help napovedel je ze coRestart skoci kurzorem za zacatek.

Kopirovani pres Data property kopiruje interni storage (tam bych si tohle tvrdit netroufl).
Název: Re:FireDAC.MemTable - poradie záznamov.
Přispěvatel: 96552 23-07-2017, 14:46:00
Dalo by ovsem predpokladat ze ma query objekt index nad radicim sloupcem. V takovem pripade by se daly do cile zkopirovat i indexy, nebo tomu tak neni nebo je to nezadouci? Stacilo by pridat flag coIndexesCopy.
Název: Re:FireDAC.MemTable - poradie záznamov.
Přispěvatel: Stanislav Hruška 23-07-2017, 16:08:13
Ja mám radenie podľa 6 polí, ktoré menujem. Síce sú to cudzie kľúče, ale to je všetko. A query ťahá údaje z viacerých tabuliek.
Název: Re:FireDAC.MemTable - poradie záznamov.
Přispěvatel: pf1957 23-07-2017, 16:21:45
Ja mám radenie podľa 6 polí, ktoré menujem. Síce sú to cudzie kľúče, ale to je všetko. A query ťahá údaje z viacerých tabuliek.
To je prece jedno, ne? Ta data budou usporadana SQL dotazem a z Query cteny
Kód: Delphi [Vybrat]
  1. while not Query.Eof do
  2.   begin
  3.      Query.Next()
  4.   end;
  5.  
Takze do interni pameti je dostanes urcite ve stejnem poradi. A poradi ctene z MemTable bude dano indexem - nevim, jestli ma nejaky/zadny by default. Ale stejna iterace pres MemTable by IMHO mez indexu mela vracet nativni poradi (zkopirovane z Query1) z bufferu.