Autor Téma: case - nechce mi vrátiť reťazec  (Přečteno 216 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2872
  • Karma: 27
    • Verze Delphi: XE7 professional
case - nechce mi vrátiť reťazec
« kdy: 17-09-2017, 20:44:53 »

Už ma z toho berú mrákoty >:(
Kód: [Vybrat]
      ' CASE'+  // Tu mi to nefunguje !!!
        ' WHEN CONSUMPTIONS.KINDSTATE = 3 THEN ' + '''Zmarený odpočet'''+
        ' WHEN CONSUMPTIONS.KINDSTATE = 4 THEN ' + '''Manipulácia s meračom'''+
        ' ELSE 35' +
      ' END TEXTSTATE,'+
      ' CASE'+  // Tu to funguje
        ' WHEN CONSUMPTIONS.KINDSTATE = 3 THEN METERPENALTIES.WITHOUTREADING'+
        ' WHEN CONSUMPTIONS.KINDSTATE = 4 THEN METERPENALTIES.TAMPERING'+
        ' ELSE 1'+
      ' END PENALTY,'+
V DB manažéri to zbehne ako má. Ale ak to priradím do TFDQuery.SQL.Text, tak mi vždy THEN vráti prázdny reťazec. Else mi vracia 35. Skúšal som tam dať priamo číslo, ako v else, ale výsledok je rovnaký.
Nechápem prečo. Čo mám urobiť. Okrem nadávania ;)
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2872
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:case - nechce mi vrátiť reťazec
« Odpověď #1 kdy: 17-09-2017, 21:09:27 »
Chyba je inde. Vraj v hodnote CONSUMPTIONS.KINDSTATE. Ale to by som mal bludy aj v druhom prípade. Idem to študovať.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2872
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:case - nechce mi vrátiť reťazec
« Odpověď #2 kdy: 17-09-2017, 21:42:06 »
Tak nie, platí pôvodný plač.
Kód: [Vybrat]
      ' CASE'+
        ' WHEN CONSUMPTIONS.KINDSTATE = 3 THEN ' + '''Zmarený odpočet'''+
        ' WHEN CONSUMPTIONS.KINDSTATE = 4 THEN ' + '''Manipulácia s meračom'''+
        ' ELSE 35' +
      ' END TEXTSTATE,'+
      ' CASE'+
        ' WHEN CONSUMPTIONS.KINDSTATE = 3 THEN METERPENALTIES.WITHOUTREADING'+
        ' WHEN CONSUMPTIONS.KINDSTATE = 4 THEN METERPENALTIES.TAMPERING'+
        ' ELSE 1'+
      ' END PENALTY,'+
vždy mi to vráti 35. Nech robím čo robím. Ale to je totálna kravina. Veď by mi nemohol fungovať ani druhý case. A ten ide ako má.
« Poslední změna: 17-09-2017, 21:44:39 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2872
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:case - nechce mi vrátiť reťazec
« Odpověď #3 kdy: 17-09-2017, 22:19:21 »
To je tak, keď niekto nevie ako mu funguje vlastný kód.
Keby to niekto vymazal, tak sa budem menej hanbiť.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Plnoletý
  • ***
  • Příspěvků: 229
  • Karma: 9
    • Verze Delphi: 2009, Tokyo
Re:case - nechce mi vrátiť reťazec
« Odpověď #4 kdy: 17-09-2017, 22:57:09 »
Jen bych dodal, ze neni nejlepsi pouzivat jako vysledek switche konstantni string a integer zaroven.
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ů: 2872
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:case - nechce mi vrátiť reťazec
« Odpověď #5 kdy: 18-09-2017, 11:17:08 »
Citace
Citace
Jen bych dodal, ze neni nejlepsi pouzivat jako vysledek switche konstantni string a integer zaroven.
Tomu nerozumiem.
  • String použijem do zostavy ako popis.
  • Decimal zobrazím na zostave, ale ešte predtým ho použijem vo výpočte.
Čo je na tom zle?

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

Offline vandrovnik

  • Hrdina
  • ****
  • Příspěvků: 253
  • Karma: 5
    • Verze Delphi: 10.2
Re:case - nechce mi vrátiť reťazec
« Odpověď #6 kdy: 18-09-2017, 14:51:36 »
Citace
Citace
Jen bych dodal, ze neni nejlepsi pouzivat jako vysledek switche konstantni string a integer zaroven.
Tomu nerozumiem.
  • String použijem do zostavy ako popis.
  • Decimal zobrazím na zostave, ale ešte predtým ho použijem vo výpočte.
Čo je na tom zle?

Špatně je na tom to, že první CASE má vrátit někdy text a někdy číslo, to vše v jednom poli. Docela se divím, že to databáze vezme.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2872
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:case - nechce mi vrátiť reťazec
« Odpověď #7 kdy: 18-09-2017, 15:18:35 »
Jaj, toto. To tam je len na skúšku. Vrátený bude vždy len jeden typ.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

 

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í:
Křestní jméno zpěváka Gotta: