Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




ACTUALIZAREA DATELOR

sql


  FIsĂ DE LUCRU   CLASA a XII-a A



ACTUALIZAREA DATELOR

1.Adaugarea articolelor

*comanda APPEND BLANK permite ca la sfârsitul tabelei active sa se adauge un articol vid; APPEND [BLANK]

  [IN nWorkArea | cTableAlias]

*comanda APPEND FROM permite adaugarea la tabela activa a datelor din alta tabela specificata în clauza FROM.

APPEND FROM <fis.dbf> [FOR <cond>] [FIELDS <lista-camp>]

APPEND FROM FileName | ?

[FIELDS FieldList]

[FOR lExpression]

*în mod implicit se preiat toate câmpurile; conditia data în clauza FOR este testata dupa plasarea articolului pe noua structura. Clauza FIELDS permite selectarea câmpurilor care vor fi folosite la adaugare.

Exemplu: se foloseste fisierul CONCURS.DBF (nume C(10), facultate C(10), medie N(5,2), admis L) care cuprinde toti participantii la concursul de admitere la facultate. Dintre acestia trebuie copiati în tabela STUDENŢI.DBF (existenta deja) numai candidatii admisi.

use concurs

copy to man for admis

use studenti

append from man

2.stergerea articolelor din baza de date

stergerea se realizeaza în 2 etape:

o stergere LOGICA, o marcare pentru stergere - care poate fi ignorata sau nu de comenzile de cautare sau de afisare si care poate fi anulata prin RECALL;

o stergere FIZICA efectiva - situatie în care datele vor fi pierdute definitiv.

2.1.Comanda DELETE marcheaza pentru stergere articolele care verifica conditiile de filtrare. Comanda actioneaza pe articolul curent.

DELETE [<domeniu>] [FOR <cond>] [WHILE <cond>]

DELETE

  [Scope] [FOR lExpression1] [WHILE lExpression2]

[IN nWorkArea | cTableAlias]

Starea de articol marcat pentru stergere nu influenteaza în mod obisnuit nici comanda de afisare (observam "*" înaintea primului câmp) nici o eventuala cautare prin LOCATE, o copiere (COPY) sau o sortare (SORT), etc. Acest lucru se datoreaza valorii OFF pe care este pozitionata implicit comanda comutator SET DELETED ON/OFF. Setarea comutatorului pe comanda ON determina ignorarea articolelor marcate pentru stergere.

Pentru a afla daca un articol este sau nu marcat pentru stergere se foloseste functia DELETED ([<zona>]) care întoarce .T. daca articolul curent din zona indicata prin <zona> este marcat pentru stergere.

Exemplu:

use studenti && implicit comutatorul SET DELETED este OFF

delete record 3

list

sau

delete for nume_camp='conditie'

set deleted on && efectul comenzii SET DELETED ON=articolele marcate

list   nu sunt afisate

2.2.Comanda PACK permite stergerea fizica din fisier a tuturor articolelor marcate anterior. Nu mai este nici o posibilitate de recuperare a acestor date. Clauza MEMO se foloseste atunci când se doreste diminuarea spatiului disc nefolosit din fisierul Memo asicoat, fara a afecta baza de date. Clauza DBF se foloseste pentru a sterge articolele marcate din baza de date fara a modifica fisierul Memo asociat.

PACK [MEMO][DBF]

2.3.Comanda ZAP permite stergerea definitiva din fisier a tuturor articolelor, fara ca în prealabil sa fi avut loc operatia de marcare.

ZAP [IN nWorkArea | cTableAlias]

IN nWorkArea Specifies the work area of the table in which all records are removed.

IN cTableAlias Specifies the alias of the table in which all records are removed.

If you omit nWorkArea and cTableAlias, all records are removed in the table in the currently selected work area.

2.4.Comanda RECALL permite revenirea unui articol la starea anterioara operatiei de stergere numai daca stergerea a fost logica.

RECALL [<domeniu>][FOR<cond>][WHILE<cond>]

RECALL [Scope] [FOR lExpression1] [WHILE lExpression2]

Actiunea comenzii are articolul curent ca domeniu implicit.

Tabela: STUDENT.DBF

cod_stud

nume_stud

grupa

anul

facultate

Dumitru Alina

Info

Luca Stefan

Mate

Andrei Ana

Info

Exemplu:

use student

delete for nume='Andrei Ana'

recall all for grupa

pack

3.Modificarea (corectia) datelor

3.1.Comanda REPLACE

REPLACE <camp1> WITH <exp1> [, <camp2> WITH <exp2>...] [domeniu] [FOR <cond>] [ WHILE <cond>]

Comanda permite înlocuirea valorii existente în câmpul <camp1> cu valoarea expresiei <exp1>, a valorii existente în <camp2> cu valoarea <exp2>, etc. Domeniul implicit este articolul curent. Se pot folosi clauzele de filtrare <domeniu>, FOR, WHILE.

use student

replace all cod_stud with recno() &&modificam peste tot codul la numar articol

replace grupa with 4, anul with 5 for nume='Luca'

list

replace all anul with 2

list

3.2.Comanda BROWSE este una dintre cele mai folosite comenzi pentru vizualizarea si actualizarea datelor din una sau mai multe tabele legate între ele. Se afiseaza tabela activa pe linii si coloane.Pe prima linie sunt afisate denumirile câmpurilor din structura tabelei iar în continuare sunt linii cu date.

Formatul comenzii este:

BROWSE [FIELDS<camp1> [:R] [:V] [<camp-calc1>=<exp1>] [LOCK<nr>] [<domeniu>][FOR<conditie>][FREEZE<nume-camp>] [NOAPPEND] [NOMENU] [NOEDIT] [NODELETE]

o       clauza FIELDS permite enumerarea campurilor care vor forma coloanele tabelului; în lipsa clauzei se retin toate câmpurile din baza de date, în ordinea structurii. Pentru un câmp putem interzice editarea [:R] sau putem preciza conditia de validare la introducerea valorilor în câmpul respectiv [:V]. În lista de câmpuri pot aparea si câmpuri calculate care primesc un nume si o expresie de calculare. Câmpurile calculate nu pot fi editate ci numai afisate dar valorile din acestea se modifica odata cu modificarile în câmpurile ce formeaza expresia de calculat.

o       clauzele <domeniu> si FOR permit selectarea liniilor care vor fi afisate în fereastra BROWSE.

o       clauza LOCK<nr> permite înghetarea pe ecran a primelor <nr> coloane (câmpuri) în timpul defilarii tabloului BROWSE spre stânga sau spre dreapta. Se recomanda ca în structura conceptuala sa se afiseze informatiile de identificare a unui obiect la început. Daca, totusi, acest lucru nu este realizat, putem schimba ordinea de afisare pe ecran a câmpurilor cu clauza FIELDS, a.î. sa avem pe primele coloane informatiile necesare.

o       clauza FREEZE<nume-camp> permite mentinerea cursorului pe o singura coloana;

o       clauza NOAPPEND interzice adaugarea de noi articole în fisier; în lipsa clauzei este posibil acest lucru. NOMENU nu afiseaza linia de meniuri si împiedica accesul la meniuri; NODELETE împiedica stergerea accidentala de articole; NOEDIT interzice editarea articolelor.

Exemplu: ELEVI.DBF

cod

Nume

Cls

Adr

Camin

Absm

Absn

Medie

Foto

N,2

C,10

C,3

M

L,1

N,2

N,2

N,5,2

G

Sarcini:

sa se afiseze toti elevii browse

sa se afiseze numai numele si clasa browse fields cls,nume:R,

elevilor precum si totalul absentelor   absente=absn+absm

sa se afiseze numai elevii din clasa... browse for cls=' '

sa se afiseze primii 5 elevi fixând browse next 5 freeze absm

pentru modificare câmpul absm

Exercitiul 1 :

La biblioteca « P. Istrati » se tine evidenta cartilor intr-o tabela CARTI.DBF cu urmatoarele campuri :

Titlu

Autor

Editura

Pret

Dataintr

Deteriorat

Alte_inf

C,20

C,20

C,10

N,6

D,8

L,1

M,4

La un control s-au constatat « nereguli ».

*sunt carti deteriorate sau pierdute care ar delete for deteriorat

trebui trecute in alta evidenta   copy to deterior for deleted()

  pack

*Nu a fost aplicata majorarea de 25% replace all pret with pret*125 for

la toate cartile intrate in biblioteaca dataintr<=

inainte de 1 ianuarie 1990 list

*Editura « Albatros » si-a schimbat   set date to german

numele in « Pinguin » la 1.09.1992. replace editura with 'Pinguin' for editura

  ='Albatros' .and. dataintr>=

*Numele autorului G.B. SHAW a fost replace autor with 'G.B.Shaw' for

scris gresit sub forma 'G.B.Sou' nume= 'G.B.Sou'

*cartile sunt considerate manuale,

informatie ce trebuie trecuta in campul replace all alte_int with 'manuale'

alte_inf   list

Exercitiul 2 :

Pentru baza de date ELEVI.DBF ne propunem sa mutam al treilea elev la sfarsitul fisierului. Se propun 2 metode :

Metoda 1   Metoda 2

use elevi in 1   use elevi

use elevi in 2 again   copy to man for nume=' '

sele 1   delete for nume=' '

locate for nume=' '   pack

sele 2   append from man

append blank erase man.dbf

replace b.nume with a.nume

replace b.cls with a.cls

sele 2

use

sele 1

delete

pack

4.Lucrul cu campurile de tip Memo

Campul de tip Memo este necesar pentru situatiile cand trebuie memorate cantitati variabile de informatii. Dimensionarea campului la valoarea maxima (255 de caractere) nu rezolva intotdeauna problema. Structura devine ineficienta prin marimea ei. A aparut necesitatea depunerii informatiilor in alt fisier sub forma blocurilor de text facandu-se legatura cu articolul care ar trebui sa le contina. Fisierul asociat poarta acelasi nume ca si baza de date, are extensia .fpt si se deschide simultan cu aceasta.

1.incarcarea informatiei intr-un camp Memo, la o anumita inregistrare, se face dupa urmatoarele etape:

*se gaseste un spatiu liber in fisierul .fpt asociat tabelei si se incarca informatia in spatiul respectiv;

*se completeaza la inregistrarea dorita, in campul Memo, adresa zonei din fisierul .fpt unde s-au incarcat datele;

2.deschiderea unei ferestre de editare pentru fiecare camp Memo dintr-o lista data se face prin comanda:

MODIFY MEMO <lista-camp> [NOWAIT] [RANGE <n1>,<n2>]

-clauza NOWAIT se foloseste numai in interiorul unui program si are ca efect continuarea executiei programului, dupa deschiderea ferestrei de editare, fara a mai astepta ca utilizatorul sa modifice campul Memo respectiv;

-clauza RANGE se foloseste cand se doreste ca numai o portiune din campul Memo sa fie editata si anume partea cuprinsa intre <n1> si <n2>;

3.afisarea datelor din campul Memo se face prin precizarea explicita in comenzile LIST/DISPLAY a numelor campurilor de afisat;

4.extragerea dintr-un camp Memo a informatiilor intr-un fisier text peste sau in continuarea vechiului continut se face prin comanda:

COPY MEMO <memo> TO <fis.txt> [ADDITIVE]

Ex: copy memo 'studii' to "C://carmen/forestier/test.txt"

goto 2

copy memo 'studii' to "C://carmen/forestier/test.txt" additive .

Fie tabela STUDENT.DBF cu urmatorul continut:

cod_stud

nume_stud

grupa

anul

Adresa

Dumitru Alina

Memo

Luca Stefan

Memo

Andrei Ana

Memo

In baza de date TELEFON.DBF (nume, telefon, adresa) se gaseste numarul de telefon al studentei "Dumitru". Sa se adauge numarul la adresa existenta in fisierul STUDENT.DBF

*se realizeaza o copiere dintr-un camp memo in altul

use telefon  

nrtel=lookup(telefon,'Dumitru',nume)

use student

replace adresa with adresa for nume='Dumtru'


Document Info


Accesari: 1684
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )