Autor Téma: TFDQuery - dodatočné očíslovanie záznamov  (Přečteno 133 krát)

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2791
  • Karma: 26
    • Verze Delphi: XE7 professional
TFDQuery - dodatočné očíslovanie záznamov
« kdy: 15-07-2017, 19:08:15 »
Kvôli ladeniu si potrebujem očíslovať záznamy datasetu. Myslel som si, že to pôjde takto
Kód: [Vybrat]
  SELECT A.FKMETERTYPES, ..., 0
  FROM CONSUMPTION_TEMP A
  ORDER BY A.FKSERVICEPARAMETERS, A.FKCAANALYTICOPTIONS, ...;

  FqryConsuption_Temp.Open();
  FqryConsuption_Temp.FetchAll;
  FqryConsuption_Temp.Edit;
  FqryConsuption_Temp.Fields.Fields[FqryConsuption_Temp.Fields.Count -1]  := Counter;
ale dostávam oznam, že konštantu nemožno meniť. Ako sa to dá urobiť? Číslovanie nemôžem urobiť priamo v SELECT, nakoľko v ňom mám ORDER BY
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Plnoletý
  • ***
  • Příspěvků: 237
  • Karma: 2
    • Verze Delphi: 10.2
Re:TFDQuery - dodatočné očíslovanie záznamov
« Odpověď #1 kdy: 15-07-2017, 22:14:58 »
Našel jsem zmínku:
Firebird 3 will support SQL:2003 standard windowing functions for these purposes: ROW_NUMBER for simple sequential numbering

Tzn. pokud používáte Firebird 3, mělo by to jít snadno:
https://www.firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-dml-windowfuncs.html

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2791
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:TFDQuery - dodatočné očíslovanie záznamov
« Odpověď #2 kdy: 16-07-2017, 09:56:18 »
Používam FB 2.5, nakoľko FireDAC nepodporuje FB 3 :'(  A kto vie či niekedy vôbec bude :-\  Netuším, čo by sa stalo, keby som prešiel na FB 3. Vraj to funguje, ale ja som to neskúšal.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Plnoletý
  • ***
  • Příspěvků: 237
  • Karma: 2
    • Verze Delphi: 10.2
Re:TFDQuery - dodatočné očíslovanie záznamov
« Odpověď #3 kdy: 16-07-2017, 10:04:17 »
Používam FB 2.5, nakoľko FireDAC nepodporuje FB 3 :'(  A kto vie či niekedy vôbec bude :-\  Netuším, čo by sa stalo, keby som prešiel na FB 3. Vraj to funguje, ale ja som to neskúšal.

Zkusil bych to :-) Při troše štěstí Firedac ani nepozná, že se připojuje k FB 3... Mě nejvíc potrápilo to, že SELECT COUNT(...) ve FB 2.5 vracelo 4 bajty, ve FB 3.0 vrací 8 bajtů, takže mnou používané IBX komponenty mají námitky, že nesouhlasí datový typ.

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2791
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:TFDQuery - dodatočné očíslovanie záznamov
« Odpověď #4 kdy: 16-07-2017, 13:41:04 »
Za pokus to stojí. Za to nič nedám a ani nič nedokafrem.
Citace
Mě nejvíc potrápilo to, že SELECT COUNT(...) ve FB 2.5 vracelo 4 bajty, ve FB 3.0 vrací 8 bajtů, takže mnou používané IBX komponenty mají námitky, že nesouhlasí datový typ.
To ma netrápi, nakoľko DB komponenty vôbec nepoužívam.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Plnoletý
  • ***
  • Příspěvků: 105
  • Karma: 0
Re:TFDQuery - dodatočné očíslovanie záznamov
« Odpověď #5 kdy: 16-07-2017, 17:46:02 »
Používam FB 2.5, nakoľko FireDAC nepodporuje FB 3 :'(  A kto vie či niekedy vôbec bude :-\  Netuším, čo by sa stalo, keby som prešiel na FB 3. Vraj to funguje, ale ja som to neskúšal.

FireDAC podporuje nativni Firebird driver ktery zvladne server 1.5 a novejsi. Je na tom driveru k jakemu serveru se dokaze pripojit. Co by mohlo delat potize jsou FireDACem substituovana makra nebo skladane dotazy, pokud se ve Firebird dely nejake podstatne zmeny dialektu.

Oficialni zdroj
« Poslední změna: 16-07-2017, 17:51:48 od Delfin »

 

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í:
Kolik je šest plus čtyři (slovem):