Autor Téma: TFDMemTable - vyžitie na zmenu údajov  (Přečteno 1646 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4858
  • Karma: 41
    • Verze Delphi: XE7 professional
TFDMemTable - vyžitie na zmenu údajov
« kdy: 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ť?
« Poslední změna: 17-01-2017, 14:34:41 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 180
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #1 kdy: 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?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4858
  • Karma: 41
    • Verze Delphi: XE7 professional
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #2 kdy: 17-01-2017, 14:55:30 »

Citace
Je nejaký dôvod prečo to neurobiť priamo v tej TFDQuery?
Je
  • mení sa počet záznamov
  • zmením nejaký údaj a potom ho ešte budem potrebovať (ten pôvodný)
Citace
ale také veci ako popisuješ by mala zvládnuť.
To mi stačí.

Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline František

  • Guru
  • *****
  • Příspěvků: 544
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #3 kdy: 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

alebo tu http://docwiki.embarcadero.com/RADStudio/Rio/en/TFDMemTable_Questions
« Poslední změna: 08-05-2020, 08:00:43 od František »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4858
  • Karma: 41
    • Verze Delphi: XE7 professional
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #4 kdy: 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.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline František

  • Guru
  • *****
  • Příspěvků: 544
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #5 kdy: 08-05-2020, 14:30:17 »
co je GTT?

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 215
  • Karma: 8
    • Verze Delphi: XE2
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #6 kdy: 08-05-2020, 19:24:20 »
co je GTT?
GLOBAL TEMPORARY TABLE
Zpusoby pouzití najdeš na webu

Offline František

  • Guru
  • *****
  • Příspěvků: 544
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #7 kdy: 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

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4858
  • Karma: 41
    • Verze Delphi: XE7 professional
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #8 kdy: 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ší.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline František

  • Guru
  • *****
  • Příspěvků: 544
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #9 kdy: 09-05-2020, 10:51:29 »
a aku DB pouzivas?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4858
  • Karma: 41
    • Verze Delphi: XE7 professional
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #10 kdy: 09-05-2020, 11:09:18 »
Jedine FB 3.0.4. Ale tie dve veci majú všetky normálne DB.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline František

  • Guru
  • *****
  • Příspěvků: 544
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:TFDMemTable - vyžitie na zmenu údajov
« Odpověď #11 kdy: 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