--[[ c800b2f48f2447cc Tento patch vymaze zaznamy starsie ako X rokov. ]] local Nadpis = 'Výmaz starých rokov' local Years = 5 if not db.Opened then MessageBox('Otvorte prosím účtovníctvo a spustite tento skript znovu.', Nadpis, 64) return false else if MessageBox('Vytvorili ste si zálohu tohto účtovníctva?', Nadpis, 256 + 48 + 4) == 6 then local frm = New 'TForm' frm.Caption = Nadpis frm.Position = 'poMainFormCenter' frm.Width = 280 std_gui:Init(frm) std_gui:Add('edtYear', 'TUpDownEdit', 'Počet rokov') std_gui:Add('', 'TOkCancelButtons', '') frm.ClientHeight = std_gui.Y frm.edtYear.Max = 30 frm.edtYear.Min = 1 frm.edtYear.Position = Years if frm:ShowModal() == 1 then Years = frm.edtYear.Position local rok = date.year(date.now()) - Years - 1 local dat = date.encode(rok, 12, 31) local obd = date.obdobie(dat) if MessageBox('Tento skript vymaže (pre účely zrýchlenia databázy) všetky záznamy staršie než ' .. Years .. ' rokov, čiže všetky záznamy do ' .. date.tostr(dat) .. '. Vymazávanie môže trvať aj niekoľko minút, nesnažte sa priebeh prerušiť a majte strpenie.' .. '.\r\nŽeláte si pokračovať?', Nadpis, 256 + 48 + 4) == 6 then local size1 = sqlval('pragma page_count') db:begin() progress.init(0, Nadpis) local res = db:exec( 'DELETE FROM plocha WHERE DatumDO <= ' .. dat .. '; ' .. 'DELETE FROM najomca WHERE DatumDO <= ' .. dat .. '; ' .. 'DELETE FROM osobomesiac WHERE DatumDO <= ' .. dat .. '; ' .. 'DELETE FROM ucet WHERE ObdobieDO <= ' .. obd .. '; ' .. 'DELETE FROM obrat WHERE ID_obdobie <= ' .. obd .. '; ' .. 'DELETE FROM meracodpis WHERE Datum <= ' .. dat .. '; ' .. 'DELETE FROM merac WHERE DatumDO <= ' .. dat .. '; ' .. 'DELETE FROM vyucto_vzorec WHERE ObdobieDO <= ' .. obd .. '; ' .. 'DELETE FROM vyucto_konfig_ucet WHERE ObdobieDO <= ' .. obd .. '; ' .. 'DELETE FROM vyucto_vystup WHERE Rok <= ' .. rok .. '; ' .. 'DELETE FROM vyucto_uhrada WHERE ID_obdobie <= ' .. obd .. '; ' .. 'DELETE FROM vyucto_merac_odpis WHERE DatumDO <= ' .. dat .. '; ' .. 'DELETE FROM dennostupne WHERE ID_obdobie <= ' .. obd .. '; ' .. 'DELETE FROM vykaz WHERE ObdobieDO <= ' .. obd .. '; ' .. 'DELETE FROM ciselna_rada_obdobie WHERE ObdobieDO <= ' .. obd .. '; ' .. 'DELETE FROM banka_vypis WHERE Datum <= ' .. dat .. '; ' .. 'DELETE FROM sipo_item WHERE Obdobie <= ' .. obd .. ';' ) progress.done() db:finish(res) -- update je nieco ako VACUUM, precisti stranky databazy if res then res = db:update() end if res then local size2 = sqlval('pragma page_count') local perc = 100 - math.floor(size2 / size1 * 100) MessageBox('Hotovo! Veľkosť súboru klesla o ' .. perc .. '%. Skontrolujte si dáta.', Nadpis, 64) end return res end end end end