Autor Téma: Neznámy dátový typ pri * či /  (Přečteno 187 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6671
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Neznámy dátový typ pri * či /
« kdy: 03-08-2022, 19:23:02 »
Takto hlási chybu
Kód: [Vybrat]
RE.SCORE * 2S týmto je spokojný
Kód: [Vybrat]
CAST((RE.SCORE * 2) AS CURRENCY)Nerozumiem prečo hlási tú chybu. Pri + - je spokojný. Score je decimal 12.4
W10 64b, Delphi 11.1, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 475
  • Karma: 9
    • Verze Delphi: XE2
Re:Neznámy dátový typ pri * či /
« Odpověď #1 kdy: 04-08-2022, 07:45:07 »
Zkus toto
Kód: [Vybrat]
RE.SCORE * 2.0

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6671
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:Neznámy dátový typ pri * či /
« Odpověď #2 kdy: 04-08-2022, 08:43:09 »
To bola prvá vec čo mi prišla na um :)  Nezabralo to. Dokonca sa mi vyskytol prípad, kde bola 0 a tiež som ju musel pretypovať.
Samotné pretypovanie mi nevadí. Len chcem vedieť dôvod. Aby som sa tomu vyhol v budúcnosti.
W10 64b, Delphi 11.1, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Online vandrovnik

  • Guru
  • *****
  • Příspěvků: 1387
  • Karma: 51
    • Verze Delphi: 10.3
Re:Neznámy dátový typ pri * či /
« Odpověď #3 kdy: 04-08-2022, 19:56:34 »
Nejspíš Firebird 4 vrací jiné datové typy? (Ale měl by jít v konfiguračním souboru nastavit, aby byl kompatibilní třeba s FB 3, už jsme si to tu psali.)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6671
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:Neznámy dátový typ pri * či /
« Odpověď #4 kdy: 04-08-2022, 20:39:03 »
Určite to nie je tento problém. Je to v Query.SQL.Text. Hlási to už pri pokuse o spustenie (Workbench 6). A tá 0 ma celkom dostala.
W10 64b, Delphi 11.1, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Online vandrovnik

  • Guru
  • *****
  • Příspěvků: 1387
  • Karma: 51
    • Verze Delphi: 10.3
Re:Neznámy dátový typ pri * či /
« Odpověď #5 kdy: 04-08-2022, 20:52:43 »
Tak to zkus spustit v isql. Pokud FB 4 vrací datový typ, který klientská aplikace neumí zpracovat, tak by ta hláška odpovídala, ne?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6671
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:Neznámy dátový typ pri * či /
« Odpověď #6 kdy: 04-08-2022, 21:51:39 »
Problém ako taký neriešim. CAST to vybavil. Len som chcel vedieť dôvod. Možno sa opýtam priamo na ich fóre.
W10 64b, Delphi 11.1, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Online vandrovnik

  • Guru
  • *****
  • Příspěvků: 1387
  • Karma: 51
    • Verze Delphi: 10.3
Re:Neznámy dátový typ pri * či /
« Odpověď #7 kdy: 04-08-2022, 22:36:35 »
Smazal jsem svoji minulou odpověď, protože už napůl spím a udělal jsem to špatně.

Tento příkaz:

Kód: [Vybrat]
select cast(3 as numeric(12,4)) * 2 from rdb$database
Ve Firebird 4 je výsledek typu NUMERIC(38, 4) - proto nejspíš dostáváš Neznámý typ, protože s tímhle číslem neumí pracovat.
Ve Firebird 3 je výsledek typu NUMERIC(18, 4).


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6671
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:Neznámy dátový typ pri * či /
« Odpověď #8 kdy: 05-08-2022, 06:06:03 »
Dávam Ti za pravdu. Ďakujem. Už len tá nula.
W10 64b, Delphi 11.1, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Online vandrovnik

  • Guru
  • *****
  • Příspěvků: 1387
  • Karma: 51
    • Verze Delphi: 10.3
Re:Neznámy dátový typ pri * či /
« Odpověď #9 kdy: 05-08-2022, 08:54:16 »
Dávam Ti za pravdu. Ďakujem. Už len tá nula.

Tak napiš ukázkou, kde je problém s nulou.

Ono je to vtipné:
select 0 from rdb$database - výsledek integer
select 0*0 from rdb$database - výsledek bigint
select 0*0*0 from rdb$database - výsledek int128

Ale FB 4 se dá nastavit do režimu kompatibility, navíc jsem zjistil, že existuje příkaz SET BIND OF, takže se dá udělat:
set bind of int128 to bigint
a potom select 0*0*0 from rdb$database už vrátí výsledek bigint
podobně by šlo
set bind of numeric(38, 4) to numeric (18, 4)


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6671
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:Neznámy dátový typ pri * či /
« Odpověď #10 kdy: 05-08-2022, 10:18:41 »
Dobre vedieť.
Kód je zložitý ;D
Kód: [Vybrat]
0 AS COSITo ma silne prekvapilo. Môže to mať na svedomí aj Workbench. Napríklad: mal som pole ACTIVE. V SQL OK. Akonáhle som použi Query visual builder, tak som názov musel dať do úvodzoviek.
W10 64b, Delphi 11.1, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6671
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:Neznámy dátový typ pri * či /
« Odpověď #11 kdy: 07-08-2022, 09:08:55 »
Ono to je celkovo  nejaké divné. Aj toto som musel upraviť a pridať CAST
Kód: [Vybrat]
CAST(SUM(D1.SCORE) AS CURRENCY) AS SumScoreTo nie je dobrá pozvánka na zmenu DB vo veľkej aplikácii
Ale v aplikácii to ide. Idem to nahlásiť do DBWorkbench ako chybu
« Poslední změna: 07-08-2022, 09:12:18 od Stanislav Hruška »
W10 64b, Delphi 11.1, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.