Documente Academic
Documente Profesional
Documente Cultură
SELECT n
USE numetabel
sau
3.
USE cursanti
USE cursanti
USE cursanti
USE cursanti
USE cursanti
DELETE RECORD 3
PACK.
Observatie: O nregistrare marcata pentru stergere, poate fi recuperata cu ajutorul
comenzii RECALL sau cu ajutorul optiunii Recall Records din meniul Table (vezi figura
anterioara). nsa, daca s-a aplicat comanda Pack, nregistrarile nu mai pot fi
recuperate.
7.
Modificarea valorilor din cmpuri se poate face n mai multe moduri. O solutie , este
oferita de comnezile BROWSE si EDIT. De asemenea, si comanda APPEND permite
modificarea valorilor din cmpuri. Totusi exista o comanda dedicata, folosita mai
ales n programe, cu ajutorul careia se modifica valorile din cmpuri . Comanda se
numeste REPLACE si are sintaxa :
REPLACE [domeniu] cmp1 WITH valoare1, ., cmpn WITH valoaren
[FOR conditie] [WHILE conditie]
Comanda nlocuieste vechea valoare din cmpurile precizate cu o valoare noua.
Daca nu se precizeaza domeniu, comanda se aplica doar la nregistrarea curenta ,
altfel la grupul precizat de domeniu.Clauzele For si WHILE permit filtrarea grupului
de nregistrari prin conditii .
Exemple: 1. USE cursanti
REPLACE ALL MEDIE WITH (Obiect1+Obiect2)/2
2.
USE salariati
REPLACE ALL Salariu WITH 1.5 * Salariu
REPLACE ALL Sanatate WITH 0.07 *Salariu
3.
USE cursanti
ordonarea fizica a tabelei - consta n crearea unei noi tabele cu datele din
prima tabela , tabela ordonata dupa un criteriu precizat
USE Candidati
FIELDS Nume, Prenume, Ob1, Ob2, Medie FOR Ob1>=5 .AND. Ob2>=5
USE Admisi
BROWSE
SORT On Medie/D, Ob1/D To Respinsi
FIELDS Nume, Prenume, Ob1, Ob2, Medie FOR Ob1 <5 .OR. Ob2<5
USE Respinsi
Sortarea logica ( indexarea ) tabelelor
A doua metoda, care este mai performanta ca si ordonarea fizica ( datorita
timpului care se pierde, a spatiului consumat, etc) si este folosita mai ales la
realizarea legaturilor dintre tabele, consta n crearea unui fisier separat ( numit
index) asociat tabelei, fisier index care sa pastreaza ordinea nregistrarilor .
Accesarea nregistrarilor din tabela se face prin intermediul indexului, n ordinea
data de fisierul index. .
De exemplu :
Carti.cdx
Titlu
Pozitie
Nr. nreg
Titlu
Autor
Nr. pag.
Amintiri din copil.
2
1
Ion
Liviu. R.
400
Ion
1
2
Carti.dbf
d.
Observatie :
Sa consideram tabelul anterior carti.dbf, avnd urmatoarea forma :
CodC
Titlu
Autor
NrPag
DataI
C(5)
C(20)
C(30)
N(6)
D
1002
Ion
Liviu. R.
400
01.01.1998
1005
Amintiri din copilarie
Ion Creanga
100
02.12.1999
1001
Morometii
Marin Preda
350
03.11.2000
1009
Insula misterioasa
Jules Verne
450
07.05.1995
aca dorim sa vedem continutul tabelului ordonat , dupa mai multe criterii ,
va trebui sa cream mai multe fisiere index. De exemplu, daca dorim o lista
alfabetica dupa Titlu , va trebui creat un index ( am vazut n cursul 1 de Visual
Foxpro cum se face acest lucru), a carui expresie de indexare sa contina coloana
Titlu. n schimb, daca dorim sa avem liste ordonate alfabetic dupa autor si daca un
autor are mai multe carti , acestea sa fie afisate dupa Titlu, indexul va contine
expresia Autor+Titlu. O alta situatie , putin mai complicata apare daca se doreste
obtinerea unor criterii de ordonare care depind de coloane ale caror tipuri de date
sunt diferite . De exemplu, daca se doreste o lista dupa data intrarii iar daca sunt
carti intrate n aceeasi data sa apara alfabetic dupa titlu, expresia de indexare nu va
fi doar DataI+Titlu ( se va semnala eroare). Conform regulilor din Foxpro , o expresie
contine membrii de acelasi tip, prin urmare va trebui convertit unul din cmpuri la
tipul celuilalt. Cel mai simplu este sa se converteasca totul la tipul sir de caractere.
Pentru exemplul anterior, ar trebui folosita urmatoarea expresei de indexare
Dtos(DataI)+Titlu (Dtos este o functie care converteste "logic" o data calendaristica
la tipul sir de caractere ). Un alt exemplu similar, ar fi acela cnd se combina
coloane ce au valori numerice cu coloane ce au valori sir de caractere , cum ar fi o
lista ordonata dupa numarul de pagini si , n caz ca sunt mai multe carti cu acelasi
numar de pagina , alfabetic . Pentru un astfel de caz , se va folosi expresia
Str(NrPag)+Titlu.
Activarea indexului dorit (pot fi mai multe criterii de ordonare ) se poate
face cu ajutorul comenzii SET ORDER TO numeindex [IN tabela]. Exista o functie
numita ORDER(tabela) , care poate spune care este indexul activ .
Dupa deschiderea indexului, orice operatie de afisare, modificare sau
stergere se fac via index. Mai mult, orice modificare a datelor n tabela cu date are
ca efect modificarea datelor n fisierul index ( lucru neplacut n cazul ordonarii fizice
a tabelelor ).
Un alt avantaj al ordonarii logice , este legat de cautarea mai rapida a
datelor cu ajutorul unei alte comenzi numite SEEK. Aceasta se foloseste sub forma
SEEK expresie , unde expresie este o valoare legata de cheia de cautare .
Exemplu : USE Angajati
SET ORDER TO NUME
SEEK 'POPESCU'
IF FOUND()
DISPLAY
ENDIF
9.Copierea structurii unui tabel n alt tabel . Adaugarea de date din alte tabele.
O alta comanda , mostenita din vechiul Foxpro , este cea de multiplicare a
structurii unei tabel ntr-un alt tabel. Trebuie sa precizam ca Visual Foxpro, ofera si
alte solutii mai performante legate de acest subiect ( care se vor discuta mai
trziu).
Copierea structurii se face cu comanda COPY STRUCTURE, cu sintaxa :
COPY STRUCTURE to NouTabel [FIELDS lista cmpuri ]
Exemplu : USE Angajati
COPY STRU TO TEMP
De asemenea , se pot adauga nregistrari dintr-un tabel n alt tabel , folosind
comanda APPEND FROM cu sintaxa :
APPEND FROM Tabel [FOR conditie] FIELDS lista cmpuri
Exemplu :a. USE Angajati
COPY STRU TO TEMP
USE TEMP
APPEND FROM ANGAJATI
BROWSE
b. USE Angajati
COPY STRU TO TEMP FIELDS Nume,Prenume,Salariu
USE TEMP
APPEND FROM ANGAJATI FIELDS Nume,Prenume,Salariu
BROWSE
c. USE Candidati
COPY STRU TO Admisi FIELDS Nume,Prenume,Ob1,Ob2,Medie
COPY STRU TO Respinsi FIELDS Nume,Prenume,Ob1,Ob2,Medie
USE Admisi
APPEND FROM Candidati FIELDS Nume,Prenume,Ob1,Ob2,Medie
FOR Ob1>=5 .AND. Ob2>=5
USE Respinsi
APPEND FROM Candidati FIELDS Nume,Prenume,Ob1,Ob2,Medie
FOR Ob1<5 .OR. Ob2<5
BROWSE