Autor Téma: Zavolať Commit pri neúspechu - vyvolanej výnimke.  (Přečteno 4733 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7424
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1

Mám výpočet ktorý sa vykonáva v jedinej transakcii. Výpočet spočíva v postupnom volaní Query.Execute. Používam tam aj GTT.
Teraz mi tam nečakane vyskočila chyba, že hodnota je null. Potrebujem zistiť prečo.
Problém je v tom, že sa vyvolá výnimka s ňou Rollback. Samozrejme, že Commit neprejde. Všetky tabuľky s výpočtom tak mám prázdne. Exituje nejaká možnosť zavolať Commit pre predchádzajúce úspešné operácie?
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Zavolať Commit pri neúspechu - vyvolanej výnimke.
« Odpověď #1 kdy: 17-09-2021, 14:25:31 »
Problém je v tom, že sa vyvolá výnimka s ňou Rollback. Samozrejme, že Commit neprejde. Všetky tabuľky s výpočtom tak mám prázdne. Exituje nejaká možnosť zavolať Commit pre predchádzajúce úspešné operácie?
Tak ten Rollback docasne nahrad Commitem

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7424
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Zavolať Commit pri neúspechu - vyvolanej výnimke.
« Odpověď #2 kdy: 17-09-2021, 15:06:01 »
To som skúšal, len som sa pozrel do nesprávnej tabuľky a tak som si myslel, že to nefunguje.
Ďakujem.
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 497
  • Karma: 9
    • Verze Delphi: XE2
Re:Zavolať Commit pri neúspechu - vyvolanej výnimke.
« Odpověď #3 kdy: 17-09-2021, 15:27:26 »
Co zkusit CommitRetaining ?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7424
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Zavolať Commit pri neúspechu - vyvolanej výnimke.
« Odpověď #4 kdy: 17-09-2021, 17:03:21 »
Commit je v poriadku. Vo výpočte sa nedá ďalej pokračovať - je narušená integrita údajov.
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 497
  • Karma: 9
    • Verze Delphi: XE2
Re:Zavolať Commit pri neúspechu - vyvolanej výnimke.
« Odpověď #5 kdy: 17-09-2021, 19:31:06 »
Commit je v poriadku. Vo výpočte sa nedá ďalej pokračovať - je narušená integrita údajov.

Asi (opět) nerozumím. Já reagoval na otázku :
Citace
Exituje nejaká možnosť zavolať Commit pre predchádzajúce úspešné operácie?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7424
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Zavolať Commit pri neúspechu - vyvolanej výnimke.
« Odpověď #6 kdy: 17-09-2021, 21:02:51 »
Otázke rozumieš dobre a Commit to rieši. Tak ako to napísal aj pf1957.
Použil som ho v try - except - Tu, namiesto Rollback
Vďaka tom mám problém vyriešený. Chybné boli vstupné údaje - zlá kontrola.
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.