Foxpro
Stergerea articolelor din baza de datePunerea la zi a bazei de date este de nerealizat fara posibilitatea stergerii articolelor care, fie au fost introduse eronat de operator, fie nu mai sunt valabile pentru colectia de date respectiva. De exemplu, intr-o evidenta BIBLIOTECA, necesara prelucrarilor curente relativ la carti si cititori, ce rost ar avea sa retinem informatii despre cartile pierdute, sau scoase din uz, sau informatii despre cititorii bibliotecii care si-au retras legitimatiile de intrare si nu mai au acces la biblioteca? Desigur, astfel de date sunt uneori interesante dar, sa nu uitam ca viteza de raspuns la interogari este direct dependenta de marimea fisierului. Pentru situatiile in care, eventual, „cineva” ar cere date despre cartile sau persoanele care au fost in evidentele bibliotecii si nu mai sunt, se pot crea arhive (istorice), eliberand spatiul fisierelor de lucru. Stergerea articolelor se poate face logic, folosind o marcare vizibila la afisare prin caracterul “*” inaintea primului camp. Marcarea pentru stergere poate fi anulata sau, daca s-a considerat oportuna stergerea articolului, atunci acesta se poate sterge fizic din baza de date. Comanda de marcare pentru stergere este DELETE: DELETE[<domeniu>][FOR<cond>] [WHILE<cond>] Comanda marcheaza pentru stergere articolele din domeniul precizat in clauza <domeniu> care indeplinesc conditiile puse in clauzele FOR si WHILE. Implicit comanda actioneaza pe articolul curent. Exemplu USE mijloacef CLEAR SET DELETED OFF DELETE FOR MOD ( RECNO ( ), 2) = 0 NOTE se sterg inregistrarile cu numar de ordine par LIST NOTE toate inregistrarile din baza de date sunt afisate, cele sterse avand un asterisc; in dreptul lor GO TO 2 DISPLAY && anregistrarea este afisata chiar daca este marcata pentru stergere; Display avand ca domeniu implicit inregistrarea curenta USE Observatie: Starea de articol marcat pentru stergere nu influenteaza in mod obisnuit nici comanda de afisare (observam „*” inaintea primului camp!), nici o eventuala cautare prin LOCATE, o copiere (COPY), o sortare (SORT), etc. Acest lucru se datoreaza valorii OFF pe care este pozitionata implicit comanda comutator SET DELETED ON/OFF. Valoarea ON determina ignorarea articolelor marcate pentru stergere. Stergerea fizica a articolelor se poate face prin doua comenzi: PACK si ZAP. PACK ZAP Comanda PACK permite stergerea fizica din fisier a tuturor articolelor marcate anterior. Nu mai este nici o posibilitate de recuperare a acestor date. Exemplu: se sterge inregistrarea a 5-a din baza de date mijloacef. USE mijloacef LIST DELETE RECORD 5 && se marcheaza pentru stergere a 5-a inregistrare PACK && se sterge fizic a 5-a inregistrare LIST USE Comanda ZAP permite stergerea definitiva din fisier a tuturor articolelor, fara ca in prealabil sa fi avut loc o operatie de marcare. Este similara secventei de comenzi: delete all pack Observatie Trebuie sa fim atenti la pozitionarea comutatorului SET SAFETY ON/OFF care, pe valoarea ON cere acordul la stergere. Anularea marcajelor de stergere se face prin comanda RECALL:
Comanda RECALL permite revenirea unui articol la starea anterioara operatiei de stergere numai daca stergerea a fost logica (prin comanda DELETE). Actiunea comenzii are ca domeniu implicit articolul curent. Prin specificarea clauzelor [<domeniu>], FOR si WHILE putem selecta articolele sterse prin comanda DELETE, a caror marcaje dorim sa le anulam. Exemplu: USE mijloacef DELETE FOR RECNO ( ) <=3 && se sterg primele 3 inregistrari LIST && se observa efectul stergerii RECALL ALL && sunt refacute toate inregistrarile. Cele care nu erau; marcate pentru stergere nu sunt afectate LIST USE
|