Forum Delphi.cz

Delphi => FireDAC => Téma založeno: Stanislav Hruška 17-01-2017, 14:28:40

Název: TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: Stanislav Hruška 17-01-2017, 14:28:40
Potrebujem spracovať DB údaje v DataSet-e a potom ich nasypať do tabuľky. Bude to TDFQuery - Select... Doteraz som to robil pomocou polí. Výsledný Dataset môže mať iný počet záznamov ako načítaný.
Špekulujem či je na to vhodný komponent TFDMemTable. Príklady mi v rozhodovaní moc nepomohli. Prácu s TFDMemTable si predstavujem takto:

Vytvorím TFDMemTable
Nadefinujem TField
Dostanem doň údaje. Dvoma spôsobmi
  Hromadne z Dataset-u, alebo
  Jednotlivo. TFDMemTable.Insert
Upravím údaje TFDMemTable.Edit
Vymažem dotknuté údaje z tabuľky. Vložím údaje do tabuľky (Insert Into). So zmenou údajou veľmi nepočítam.

Bude mi tento postup fungovať?
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: martinnr 17-01-2017, 14:52:05
Je nejaký dôvod prečo to neurobiť priamo v tej TFDQuery?
S touto komponentou som už dávnejšie nerobil, ale také veci ako popisuješ by mala zvládnuť. Teda pridávanie, mazanie úprava údajov a následne to poslať všetko do DB. či?
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: Stanislav Hruška 17-01-2017, 14:55:30

Citace
Je nejaký dôvod prečo to neurobiť priamo v tej TFDQuery?
Je
Citace
ale také veci ako popisuješ by mala zvládnuť.
To mi stačí.

Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: František 08-05-2020, 07:52:42
asi už vyriešené, či nebodaj zabudnuté ale našiel som toto
Kód: [Vybrat]
FDMemTable1.CopyDataSet(SourceFDMemTable2, [coStructure, coRestart, coAppend]);
FDMemTable1.CopyDataSet(SourceDataset2, [coStructure, coRestart, coAppend]);

a viac tu http://delphiprogrammingdiary.blogspot.com/2018/11/tfdmemtable-better-alternative-to.html (http://delphiprogrammingdiary.blogspot.com/2018/11/tfdmemtable-better-alternative-to.html)

alebo tu http://docwiki.embarcadero.com/RADStudio/Rio/en/TFDMemTable_Questions (http://docwiki.embarcadero.com/RADStudio/Rio/en/TFDMemTable_Questions)
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: Stanislav Hruška 08-05-2020, 09:00:48
Hlavne zabudnuté. Neviem si spomenúť pri akej príležitosti som to písal. Medzitým som objavil GTT.
Odkazy si pozriem.
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: František 08-05-2020, 14:30:17
co je GTT?
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: Jirka 08-05-2020, 19:24:20
co je GTT?
GLOBAL TEMPORARY TABLE
Zpusoby pouzití najdeš na webu
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: František 08-05-2020, 23:34:31
to je vramci app ci DB?
ci nieco ako
Common Table Expressions (“WITH ... AS ... SELECT”) https://firebirdsql.org/refdocs/langrefupd21-select.html#langrefupd21-select-cte (https://firebirdsql.org/refdocs/langrefupd21-select.html#langrefupd21-select-cte)
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: Stanislav Hruška 09-05-2020, 08:40:59
GTT - už podľa názvu je to dočasná tabuľka v rámci DB. V DB je len jej definícia. Ak uzatvoríš transakciu, ktorá s ňou pracuje, tak sa automaticky vyprázdni obsah prislúchajúci k danej transakcii. Každá transakcie vidí len svoje údaje. Ostatné sú pre ne neviditeľné.

Common Table Expressions - to je ničo úplne iné. Je to časť SQL príkazu. Odporúčajú to používať hlavne pri agregačných dopytoch. V podstate nahradzuje subQuery. Celkom som si to obľúbil, lebo príkaz SQL je podstatne čitateľnejší.
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: František 09-05-2020, 10:51:29
a aku DB pouzivas?
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: Stanislav Hruška 09-05-2020, 11:09:18
Jedine FB 3.0.4. Ale tie dve veci majú všetky normálne DB.
Název: Re:TFDMemTable - vyžitie na zmenu údajov
Přispěvatel: František 09-05-2020, 11:13:04
zacinal som s BDE, potom interbase a po uvolneni FIREBIRD a od vtedy  neusta, je super, ale ma par nedostatkov, ci skor obmedzeni

aktual 3.0.5