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

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5305
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 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 »
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 185
  • 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ů: 5305
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 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čí.

W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Online František

  • Guru
  • *****
  • Příspěvků: 571
  • 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ů: 5305
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 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.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Online František

  • Guru
  • *****
  • Příspěvků: 571
  • 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?

Online Jirka

  • Hrdina
  • ****
  • Příspěvků: 284
  • Karma: 9
    • 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

Online František

  • Guru
  • *****
  • Příspěvků: 571
  • 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ů: 5305
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 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ší.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Online František

  • Guru
  • *****
  • Příspěvků: 571
  • 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ů: 5305
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 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.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Online František

  • Guru
  • *****
  • Příspěvků: 571
  • 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