Autor Téma: FireDAC.MemTable - poradie záznamov.  (Přečteno 306 krát)

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
FireDAC.MemTable - poradie záznamov.
« kdy: 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 := ...
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Hrdina
  • ****
  • Příspěvků: 433
  • Karma: 21
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:FireDAC.MemTable - poradie záznamov.
« Odpověď #1 kdy: 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).
« Poslední změna: 23-07-2017, 14:31:43 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é!

Online Delfin

  • Hrdina
  • ****
  • Příspěvků: 433
  • Karma: 21
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:FireDAC.MemTable - poradie záznamov.
« Odpověď #2 kdy: 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.
« Poslední změna: 23-07-2017, 14:48:04 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é!

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:FireDAC.MemTable - poradie záznamov.
« Odpověď #3 kdy: 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.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1866
  • Karma: 91
    • Verze Delphi: D2007, XE3, DX10
Re:FireDAC.MemTable - poradie záznamov.
« Odpověď #4 kdy: 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.

 

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

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

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