Lekce 1.32
RuÜenφ zßznam∙ v databßzi


p°edchozφ lekce (1.31) obsah kurzu nßsledujφcφ lekce (1.33)

Jak jsme se ji₧ d°φve seznßmili, lze zßznamy z databßze velmi jednoduÜe zruÜit. Proto₧e je vÜak zruÜenφ zßznam∙ °eÜeno ve dvou stupnφch, seznßmφme se s nφm nynφ podrobn∞ji. Nejd°φve vÜak jedno velmi d∙le₧itΘ upozorn∞nφ a varovßnφ. Nezasahujte jak²mkoliv zp∙sobem do databßzφ, kterΘ jsou vyu₧φvßny jin²m systΘmem. To znamenß nejen nynφ zmi≥ovanΘ ruÜenφ zßznam∙, ale takΘ jakßkoliv zm∞ny dat.

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)

OZOGAN, 1 Mßje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz