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:
'program DBF_6.BPR
ConsoleClear
ConsoleShow
If DbfUse("CENIK") then 'pokud se otev°ela databßze
DbfGoTop 'skok na zaΦßtek databßze
Do Until DbfEof 'dokud nenφ konec databßze
If DbfDeleted then 'pokud je zßznam oznaΦen ke zruÜenφ
DbfRecall 'obnovφme platnost zßznamu
Writeln(DbfReadStr("NAZEV"))
End If
DbfSkip(1) 'skok na dalÜφ zßznam
Loop
Else
ShowMessage("Databßzi 'CENIK.DBF' nebylo mo₧nΘ otev°φt !")
End If
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) |