Autor Téma: Maji kolekce FireDAC storage implementovan enumerator?  (Přečteno 226 krát)

Offline Delfin

  • Plnoletý
  • ***
  • Příspěvků: 219
  • Karma: 6
    • Verze Delphi: 2009, Tokyo
Mam starsi verzi FireDAC a te chybi implementace enumeratoru kolekci datoveho storage. Da se nasledujici kod prelozit rekneme v XE3 a vys (nebo alespon nejnovejsich verzich) nebo skonci na chybe E2431? Staci dropnout na form TFDQuery do uses manualne pridat snad jen FireDAC.DatS a zkusit zbuildovat tento kod:

Kód: Delphi [Vybrat]
  1. var
  2.   Row: TFDDatSRow;
  3.   Col: TFDDatSColumn;
  4. begin
  5.   for Row in FDQuery1.Table.Rows do ;
  6.   for Col in FDQuery1.Table.Columns do ;
  7. end;

To je vse, ptam se opravdu jen zda se takovyto kod da prelozit s "novym" FireDAC nebo skonci chybou E2431 (prip. jinou). Hezky paradox, tridy te storage znam skrz nazkrz a jedine co mi chybi je "nova" verze abych zjistil takovou malickost. Jsem to ale ostuda ::)

Dekuji :)
« Poslední změna: 04-09-2017, 14:52:40 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é!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2870
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:Maji kolekce FireDAC storage implementovan enumerator?
« Odpověď #1 kdy: 04-09-2017, 15:11:10 »
V XE7 chyba vyskočí v oboch prípadoch.
« Poslední změna: 04-09-2017, 15:24:34 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1721
  • Karma: 70
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Maji kolekce FireDAC storage implementovan enumerator?
« Odpověď #2 kdy: 04-09-2017, 16:02:37 »
V XE 10.1 Berlin taky. Asi by to vyřešil class helper.
Embarcadero MVP - Czech republic

Offline Delfin

  • Plnoletý
  • ***
  • Příspěvků: 219
  • Karma: 6
    • Verze Delphi: 2009, Tokyo
Re:Maji kolekce FireDAC storage implementovan enumerator?
« Odpověď #3 kdy: 04-09-2017, 16:28:48 »
Diky obema. Jsem liny rozsirovat FireDAC ::) Enumerator pridam jen do sve storage.
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é!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2870
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:Maji kolekce FireDAC storage implementovan enumerator?
« Odpověď #4 kdy: 04-09-2017, 20:40:46 »
Hm, tie Columns by sa asi dali nahradiť pomocou Fields. Ale Rows...
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Plnoletý
  • ***
  • Příspěvků: 219
  • Karma: 6
    • Verze Delphi: 2009, Tokyo
Re:Maji kolekce FireDAC storage implementovan enumerator?
« Odpověď #5 kdy: 04-09-2017, 21:08:56 »
Hm, tie Columns by sa asi dali nahradiť pomocou Fields. Ale Rows...

Rows ne, protoze TDataSet nabizi jen pristup k aktualnimu zaznamu na ktery ukazuje kurzor. FireDAC v tomto pripade nabizi pristup k cele nactene kolekci dat. Proto nemusis chodit pri zachovani kurzoru na miste pro data napr. 3. radku takto (zapamatovat si pozici kurzoru, presunout jej, nacist data a presunout kurzor zpet):

Kód: Delphi [Vybrat]
  1. var
  2.   ID: Integer;
  3.   Bookmark: TBookmark;
  4. begin
  5.   Bookmark := FDQuery.GetBookmark;
  6.   try
  7.     FDQuery.RecNo := 2;
  8.     ID := FDQuery.FieldByName('ID').AsInteger;
  9.   finally
  10.     FDQuery.GotoBookmark(Bookmark);
  11.   end;
  12. end;

Ale jednoduse takto:

Kód: Delphi [Vybrat]
  1. var
  2.   ID: Integer;
  3. begin
  4.   ID := FDQuery.Table.Rows[2].GetData('ID');
  5. end;

Iterace pres vsechny zaznamy pak:

Kód: Delphi [Vybrat]
  1. var
  2.   ID: Integer;
  3.   Bookmark: TBookmark;
  4. begin
  5.   Bookmark := FDQuery.GetBookmark;
  6.   try
  7.     FDQuery.First;
  8.     while not FDQuery.Eof do
  9.     begin
  10.       ID := FDQuery.FieldByName('ID').AsInteger;
  11.       FDQuery.Next;
  12.     end;
  13.   finally
  14.     FDQuery.GotoBookmark(Bookmark);
  15.   end;
  16. end;

Pripadne:

Kód: Delphi [Vybrat]
  1. var
  2.   ID: Integer;
  3.   Row: Integer;
  4. begin
  5.   for Row := FDQuery.Table.Rows.Count - 1 do
  6.     ID := FDQuery.Table.Rows[Row].GetData('ID');
  7. end;
« Poslední změna: 04-09-2017, 21:24:51 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é!

Offline Delfin

  • Plnoletý
  • ***
  • Příspěvků: 219
  • Karma: 6
    • Verze Delphi: 2009, Tokyo
Re:Maji kolekce FireDAC storage implementovan enumerator?
« Odpověď #6 kdy: 04-09-2017, 21:27:31 »
Tyjo, ceska repre by prohrala snad i s Vatikanem ;D
A ty kecy komentatoru :o ::)
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é!

 

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

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: