p°edchozφ lekce (1.31) | obsah kurzu | nßsledujφcφ lekce (1.33) |
Z databßzovΘho okna lze zßznam zruÜit pouze pokud mßte nastavenou mo₧nost editace zßznam∙. Tato mo₧nost se nastavuje v PopUp menu, kterΘ se zobrazφ pokud kliknete prav²m tlaΦφtkem myÜi na ploÜe databßzovΘho okna. Mo₧nost editace se p°epφnß v hornφ °ßdce menu. Pokud je editace mo₧nß, je tato volba v menu zatr₧ena a v hornφ liÜt∞ databßzovΘho okna se zobrazφ vedle Üipek navigßtoru novß ikona slou₧φcφ k v²mazu a obnovenφ zßznam∙.
Pokud jsme nastaveni v databßzovΘm okn∞ na zßznam, kter² nenφ oznaΦen na zruÜenφ a klikneme na ikonu v²mazu, bude aktußlnφ zßznam oznaΦen ke zruÜenφ. Poznßme to tak, ₧e se ve stavovΘm °ßdku databßzovΘho okna zobrazφ vedle Φφsla zßznamu indikace "[Deleted]". Pokud by jsme klikli na ikonu v²mazu znovu, byla by op∞t obnovena plnß platnost databßzovΘho zßznamu. V²mazovß ikona tedy slou₧φ jako p°epφnaΦ. Platn² zßznam oznaΦφ ke zruÜenφ, u oznaΦenΘho zßznamu obnovφ jeho p∙vodnφ platnost.
Z programu je mo₧nΘ zruÜit zßznam procedurou DbfDelete, obnovit platnost zßznamu
lze procedurou DbfRecall. To, zda je zßznam urΦen ke zruÜenφ zjistφme volßnφm funkce
DbfDeleted. Pokud by jsme pot°ebovali zkontrolovat zßznamy a obnovit jejich platnost v
celΘ databßzi, m∙₧ete tak uΦinit nßsledujφcφm programem:
Unit Dbf_6;
interface
implementation
begin
ConsoleClear;
ConsoleShow;
If DbfUse('CENIK') then {pokud se otev°ela databßze}
begin
DbfGoTop; {skok na zaΦßtek databßze}
While not DbfEof do {dokud nenφ konec databßze}
begin
If DbfDeleted then {pokud zßznam oznaΦen ke zruÜenφ}
begin
DbfRecall; {obnovφme platnost zßznamu}
Writeln(DbfReadStr('NAZEV'));
end;
DbfSkip(1); {skok na dalÜφ zßznam}
end;
DbfUse(''); {databßzi uzav°eme}
end else
ShowMessage('Databßzi nebylo mo₧nΘ otev°φt !');
end;
end;
end.
Zßznamy urΦenΘ ke zruÜenφ se z databßze definitivn∞ odstranφ volßnφm procedury
DbfPack, kterß zruÜφ najednou vÜechny oznaΦenΘ zßznamy v databßzi. POZOR !!! Jde
ji₧ o zruÜenφ nevranΘ a oznaΦenΘ zßznamy budou definitivn∞ z databßze odstran∞ny.
N∞kdy by mohlo b²t vhodn∞jÜφ, kdyby jsme nemuseli zßznamy z databßze ruÜit,
p°esto by byly nep°φstupnΘ. To je samoz°ejm∞ takΘ mo₧nΘ. Jednou z mo₧nostφ by bylo
nastavit filtr podle po₧adovanΘ platnosti zßznam∙ volßnφm procedury:
DbfSetFilter('.NOT.DELETED()'); {pouze platnΘ zßznamy}
DbfSetFilter('DELETED()'); {pouze neplatnΘ zßznamy}
DalÜφ a mnohem v²hodn∞jÜφ a rychlejÜφ je varianta, kdy se platnost zßznam∙ nastavφ
p°φmo sv²m nastavenφm volßnφm procedury DbfSetDeleted, kterß urΦuje, zda budou
dostupnΘ zßznamy oznaΦenΘ ke zruÜenφ:
DbfSetDeleted(False); {dostupnΘ pouze platnΘ zßznamy}
DbfSetDeleted(True); {dostupnΘ vÜechny zßznamy}
N∞kdy byste pot°ebovali zruÜit najednou vÜechny zßznamy z databßze. To by
bylo mo₧nΘ provΘst tak, ₧e byste postupn∞ oznaΦili ka₧d² zßznam databßze ke
zruÜenφ a nßsledn∞ je procedurou DbfPack zruÜili. Mo₧nß je ale i v²hodn∞jÜφ a rychlejÜφ
varianta, p°i kterΘ jsou volßnφm procedury DbfZap zruÜeny najednou vÜechny zßznamy
databßze bez ohledu na to, zda jsou oznaΦeny ke zruÜenφ. VAROV┴N═ !!! Zßznamy ji₧
nebude mo₧nΘ ₧ßdn²m zp∙sobem obnovit !
p°edchozφ lekce (1.31) | obsah kurzu | nßsledujφcφ lekce (1.33) |