Documente online.
Username / Parola inexistente
  Zona de administrare documente. Fisierele tale  
Am uitat parola x Creaza cont nou
  Home Exploreaza
Upload



















































EXPLOATAREA BAZELOR DE DATE

foxpro










ALTE DOCUMENTE

Zone de lucru. Sortare si indexare. Visual FoxPro
APLICATII DIVERSE IN FOXPRO
Vizual fox
VISUAL FOXPRO - SGBD RELATIONAL
CONCEPTE AVANSATE ALE BAZELOR DE DATE

exploatarea bazelor de date 

Īn mod tipic, bazele de date si tabelele aferente se creaza o singura data . Dupa aceea, utilizatorul si programatorul exploateaza datele de acolo (de fapt pentru asta se creaza baza de date). Operatiile uzuale sunt : deschiderea bazei de date , afisarea completa sau partiala a datelor, modificarea sau stergerea īnregistrarilor din tabele, afisarea ordonata a lor, cautarea unor date īn tabele, etc. Pentru aceasta , SGBD pune la dispozitie o serie de comenzi specifice pe care le vom discuta mai departe. 




1. Deschiderea bazelor de date si a tabelelor

Bazele de date si elementele componente, la nivelul sistemului de operare sunt memorate īn fisiere. Conform regulilor sistemului de operare, dupa crearea unui fisier, acesta poate fi prelucrat daca este deschis. Aceasta regula  o īntālnim si la prelucrarea bazelor de date . Prin urmare,  pentru a  putea opera cu datele din b.d. si din tabele  va trebui sa le deschideti.

Deschiderea bazei de date se poate face īn mai multe moduri :

·          se selecteaza meniul File, comanda Open, apoi se selecteaza categoria Database si īn final se alege directorul si baza de date respectiva.

·          se tasteaza ( īn fereastra de comanda ) OPEN DATABASE .Comanda poate fi  urmata de numele bazei de date  sau fara nume, īn acest caz se īncepe un dialog īntre utilizator si computer pentru selectarea bazei de date .

Observatie: 1.  Se pot deschide mai multe baze de date simultan.

2. Dupa deschidere, constructorul de tabel nu este totdeauna afisat . Afisarea explicita a acestuia se poate face cu MODIFY DATABASE.

Dupa deschiderea bazei de date, trebuie deschise  tabelele componente pentru a avea acces la date. Deschiderea unui tabel se face īn mod similar :

·          se selecteaza meniul File, comanda Open, apoi se selecteaza categoria Table si īn final se alege directorul si tabelul de date respectiv.

·          se tasteaza ( īn fereastra de comanda ) USE nume  sau  USE ? .Comanda poate fi  urmata de numele tabelului sau de ?, īn acest caz se īncepe un dialog īntre utilizator si computer pentru selectarea tabelelor.

Tabelele libere se pot deschide īn mod similar.

            De foarte  multe ori utilizatorul doreste sa lucreze ( simultan ) cu mai multe  tabele. Din pacate , daca le deschide pe rānd , numai ultimul ramāne accesibil, celelalte īnchizāndu-se automat. Pentru astfel  de situatii, exista mai multe zone de lucru identificate prin numere ( īn numar de 32767) , īn fiecare zona putāndu-se deschide un tabel īmpreuna cu fisierele index asociate. Pentru a deschide un tabel (liber sau legat de baza de date) īntr-o zona de lucru se  poate tasta īn fereastra de comanda :

·        SELECT  n

USE numetabel    

sau

·         USE numetabel IN  n  [ALIAS pseudonume]

unde n reprezinta numarul zonei de lucru.

Selectarea zonei de lucru se poate face dupa aceea prin comanda SELECT n .

De asemenea, deschiderea tabelelor īn zone de lucru se mai poate face si din meniul Window, optiunea Data Session,  dupa care apare o fereastra numita Data Session  cu ajutorul careia se selecteaza tabelele īn zonele de lucru, ca īn figura de mai jos :


Observatie : a. Comenzile care se tasteaza īn fereastra de comanda  se pot folosi si īn sursele de program .

b.      Se poate deschide un tabel de mai multe ori folosind comanda Use nume In 1 AGAIN.

c.       Daca baza de date sau tabelul nu se gasesc īn directorul curent ( care este de obicei directorul īn care este instalat Visual Foxpro ), se poate scrie calea completa ce permite localizarea lor. De asemenea, se poate schimba   directorul de lucru folosind comanda SET DIRECTORY TO nume. De exemplu, se poate tasta SET DIRECTORY TO C:\Salariati.

d.      O baza de date se īnchide cu comanda CLOSE DATABASE , iar un tabel deschis īntr-o zona cu USE  sau  USE  IN zona.  De asemenea, īnchiderea  tabelelor se poate face si cu comanda Close Table.

e.      Accesarea cāmpurilor bazelor de date  deschise īn mai multe zone de lucru, se poate face si prin numele bazei de date urmat de punct si numele cāmpului : Angajati.Nume sau Functii.Cod .

             Trebuie retinut faptul ca prelucrarea datelor īntr-o tabela se face la nivel de īnregistrare, īn sensul ca la un moment dat este prelucrata o singura īnregistrare . Din acest motiv , sistemul tine evidenta īnregistrarii curente, a celei care se prelucreaza, folosind un indicator de īnregistrare . Acest indicator care īi spune sistemului cu ce īnregistrare sa lucreze sau unde sa modifice date , este la pozitionat la deschiderea tabelului la īnceput. El este mutat de obicei pe īnregistrarea urmatoare, dupa o prelucrare a īnregistrarii curente.  Totusi indicatorul poate fi mutat explicit cu ajutorul comenzilor GOTO si SKIP   astfel :

GOTO  n    (se pozitioneaza la īnceputul īnregistrarii n)  sau

GOTO   TOP  (se pozitioneaza la īnceputul tabelului) sau

GOTO  BOTTOM   (se pozitioneaza la sfārsitul tabelului )

urmate eventual de optiunea IN  tabela   ce precizeaza explicit la care tabel se aplica,

respectiv   SKIP  n  IN  tabela  care sare peste n īnregistrari ( n este pozitiv sau negativ).

Atentie, daca este deschisa o fereastra de editare ( cu Browse, cu Append, cu Edit se poate face pozitionarea manuala sau cu ajutorul comenzii Goto Record din meniul Table. exista si o functie , numita RecNo() , care poate fi folosita pentru a  numarul īnregistrarii curente .

2. Adaugarea  de noi īnregistrari  īn tabele

Desi utilizatorul poate introduce īn momentul crearii tabelului īnregistrari, exista o comanda dedicata pe care o poate apela īn fereastra de comanda sau īn program :

APPEND   

De asemenea, exista doua comenzii, folosite mai ales īn programe , ce permit adaugarea de īnregistrari goale :  APPEND BLANK   si  INSERT  BLANK .

3. Editarea continutului tabelelor . Comenzile BROWSE si EDIT.

Utilizatorul are la dispozitie o comanda universala, numita BROWSE, care poate  fi folosita pentru realizarea diferitelor operatii de prelucrare  asupra datelor din tabele.  Comanda poate fi pornita din meniul rapid (ce se obtine apasānd butonul dreapta pe obiectul tabel) fie tastānd comanda īn fereastra de comanda.sablonul general de utilizare (simplificat):

BROWSE  [lista cāmpuri]  [WIDTH latime]  [FOR  conditie ] [NOEDIT]   [NODELETE]  [NOAPPEND] .

Se observa aparitia unor argumente suplimentare , care nu sunt obligatorii : lista cāmpuri permite afisarea īn tabel doar a anumitor coloane, Width precizeaza latimea maxima a coloanelor,  iar celelalte optiuni protejeaza tabelul la operatiile precizate.

Comanda  permite  afisarea datelor sub forma tabelara, apoi permite modificarea valorilor din cāmpuri ( cu comenzile de editare cunoscute). De asemenea, se pot adauga  īnregistrari noi tastīnd CTRL +Y  sau alegānd comanda APPEND NEW RECORD din meniul TABLE  ( atentie meniul Table apare doar cānd deschideti  fereastra BROWSE):

Adauga o īnregistrare noua

 


Marcheaza pentru stergere o īnregistrare

 
 

 


sterge fizic īnregistrarea

 


            Se pot sterge, de asemenea, īnregistrari din tabel. stergerea īnregistrarilor se face īn doua etape : marcarea lor si  stergerea lor fizica . Marcarea se face tastānd CTRL+T (dupa ce am pozitionat indicatorul pe aceea īnregistrare- cu tastele cursor, PgUp, PgDown). Dupa cum se observa din figura de mai sus,  se poate folosi si comanda DELETE RECORDS  , din meniul  TABLE. stergerea fizica (deci pierderea definitiva a acelei īnregistrari ) se face fie tastānd comanda PACK  īn fereastra de comanda, fie  alegānd comanda REMOVE DELETED RECORDS, din meniul TABLE.

Comanda BROWSE  are o varianta similara numita  EDIT, ce permite acelasi lucru.

           

4. Afisarea continutului unui tabel - comanda LIST.

Sistemele pentru baze de date ( inclusiv Visual Foxpro) au foarte multe instrumente de afisarea a datelor. Am prezentat o metoda simpli , tabelara,  cu Browse . De asemenea , exista o varianta , tot simpla si rapida , pe care utlizatorul o poate folosi rapid pentru a afisa continutul tabelului, varianta mostenita din versiunile mai vechi de FoxPro. Comanda respectiva se numeste  LIST  (sau DISPLAY) si se poate folosi sub urmatoarea forma :



            LIST  [lista cāmpuri]  [grup īnregistrariri] [FOR conditie] [WHILE conditie]

            [TO PRINTER|TO FILE][NOCONSOLE]

Īn mod implicit se afiseaza toate cāmpurile, īn schimb se pot preciza  cāmpurile care se vor afisa . Domeniu precizeaza grupul de īnregistrari care se vor afisa, domeniu putānd lua urmatoarele valori: ALL, NEXT n, RECORD n, REST . Optiunile  FOR si WHILE, permit filtrarea īnregistrarilor conform conditiei precizate. Ultimele optiuni permit afisarea datelor si la imprimanta sau īn fisier .

Exemple: 1.   USE cursanti

                     LIST nume, prenume

                 2.   USE cursanti

                     DISPLAY

3.      USE cursanti

LIST  FOR  Datan >

4.      USE  cursanti

LIST   Nume, Prenume TO  PRINTER  NOCONSOLE

5.      USE cursanti

LIST Nume,Prenume,Medie To Lista.txt          

Trebuie totusi sa mentionam ca exista o solutie mult mai buna, ce se foloseste  mai ales pentru sisteme informatice (adica pentru aplicatii). Ea consta īn folosirea rapoartelor (subiectul se va discuta mai tārziu).

6.      stergerea īnregistrarilor din tabele -comanda DELETE

Alaturi de adaugare si modificare, stergerea reprezinta una din operatiile des īntānite īn lucrul cu tabelele. stergerea este folosita pentru a elimina datele unei īnregistrari din tabel. stergerea unei īnregistrari se poate face  fie la nivel logic ( īnregistrarea nu este propriu-zis stearsa, ci este marcata pentru stergere), fie  la nivel fizic (īnregistrarea este stearsa fizic din tabela). Am prezentat deja o solutie cu BROWSE. Exista, īnsa , o comanda dedicata numita DELETE, ce se poate tasta īn fereastra de comanda sau scrie īn programe:

DELETE  [grup īnregistrari]  [FOR  conditie]  [WHILE  conditie].

Īn mod implicit, daca nu se foloseste nici un parametru, se va marca pentru stergere īnregistrarea curenta. Puteti sa precizati grupul de īnregistrari  prin domeniu (domeniu poate lua acelasi valori cu cele precizate anterior la comanda LIST ) sau prin conditii. Dupa marcarea īnregistrarilor , ele pot fi sterse definitiv din tabel cu ajutorul comenzii PACK (tastata īn fereastra de comanda).

Exemple: 1.   USE cursanti

                       DELETE

2.      USE cursanti

DELETE  FOR  Datan >

PACK.

3.      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 continutului  unei tabel.

Modificarea valorilor din cāmpuri 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 cāmpuri. Totusi exista o comanda dedicata, folosita mai ales īn programe, cu ajutorul careia se modifica valorile din cāmpuri . Comanda se numeste REPLACE si are sintaxa :

REPLACE  [domeniu] cāmp1 WITH valoare1, ., cāmpn WITH valoaren

                    [FOR  conditie]  [WHILE conditie] 

Comanda īnlocuieste vechea valoare  din cāmpurile 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

REPLACE ALL Situatie WITH 'PROMOVAT' FOR Ob1>=5 AND Ob2>=5

Īn programe, mai ales cānd se fac calcule , comanda este foarte utila, deoarece  modificarea unui cāmp nu se poate face direct prin atribuire ci doar cu REPLACE.

            O alta tehnica de modificare a continutului īnregistrarilor este data de comenzile SCATTER si GATHER . Prin intermediul acestor doua comenzi se poate realiza transferul īntre īnregistrarea curenta a tabelei sau un set de variabile.

            Comanda GATHER realizeaza transferul de la tablou sau de la setul  de variabile la tabela, iar SCATTER  realizeaza transferul  invers. Comanda GATHER are sintaxa:

            GATHER  FROM  tablou

            GATHER  MEMVAR

prima preia datele din tabloul specificat īn īnregistrarea curenta , iar cea de-a doua forma foloseste ca sursa de date un set special de variabile, cu acelasi nume ca si cāmpurile tabelei. Accesul la setul de variabile (creat cu comanda SCATTER cu clauza MEMVAR) se face  prin constructia : m. nume variabila.  Comanda GATHER  poate contine clauza FIELDS , urmata de o lista  de cāmpuri care se vor copia  īn īnregistrarea curenta a tabelei active . Daca se doreste si copierea cāmpurilor memo, trebuie adaugata si optiunea MEMO.

            Comanda  SCATTER, este opusa comenzii anterioare, ea copiind cāmpurile īnregistrarii curente  din tabela activa īntr-un tablou sau īntr-un set de variabile. Sintaxa comenzii este :

            SCATTER TO  tablou

sau

            SCATTER MEMVAR

si aici se pot folosi clauzele FIELDS  si  MEMO, cu acelasi scop. 

6. Cautarea datelor -comanda LOCATE

            O alta operatie utila, mai ales īn cazul tabelelor mari, este cea de cautare a unei īnregistrari care respecta o anumita conditie.  Comanda este LOCATE si are sintaxa :

            LOCATE  FOR  conditie   [domeniu]  [WHILE   conditie ]

Ea īncearca localizarea primei īnregistrari din tabel ce verifica conditia din FOR . Grupul de īnregistrari īn care se cauta , este cel dat de domeniu si WHILE, implicit fiind ALL. Daca aceasta īnregistrare exista, indicatorul de acces la fisier se va pozitiona pe aceasta. Utilizatorul poate afla daca īnregistrarea exista, folosind functia FOUND(), functie care returneaza TRUE īn cazul  gasirii sau FALSE īn caz de esec. Se poate continua cautarea , īn ideea de gasi alte  īnregistrari asemanatoare, cu ajutorul comenzii CONTINUE.

Exemplu :

            USE  cursanti

            LOCATE FOR Nume='POPESCU'

            IF Found()

                  DISP

            ENDIF 

8.         Calcule statistice cu datele din tabele- comenzile  SUM, COUNT

Pe lānga cautarea si  consultarea  datelor din tabele, īn aplicatiile practice avem nevoie si de calcule cu valorile cāmpurilor. De exemplu, ne intereseaza sa stim care este totalul  salariilor brute  sau cāt este impozitul total ce trebuie virat. De asemenea,  ne intereseaza cāti   angajati nu sunt platitori de impozit. Toate aceste lucruri constau de fapt īn operatii statistice asupra  īnregistrarilor din tabele : īnsumarea valorii cāmpurilor din tabele, contorizarea  īnregistrarilor ce īndeplinesc o anumita proprietate . Exista comenzii dedicate ce pot sa dea  raspuns la īntrebarile anterioare.

Calcularea numarului de īnregistrari  care respecta o anumita conditie se realizeaza cu ajutorul comenzii COUNT , cu sintaxa :

COUNT   [domeniu]  FOR  conditie TO  variabila

Exemplu :  USE ANGAJAŢI

                    COUNT  FOR  Impozit=.T. TO  Nr

                    ?Nr         

            O alta operatie utila este aceea de īnsumare a valorilor unor cāmpuri  numerice. Pentru aceasta  folosim comanda SUM cu sintaxa :

    SUM  [domeniu] expresie1, expresie2,., expresien  TO  v1,v2,.,vn  [FOR conditie]

Exemplu :a.  USE ANGAJAŢI

                      SUM VenitBrut  TO   TotalBrut

                      ?TotalBrut         

     b.  USE ANGAJAŢI

                       SUM Impozit  TO   TotalImpozit FOR Tip_Ang='T'

                    ?TotalImpozit      

Exista o varianta particulara a comenzii SUM , numita AVERAGE, ce se poate folosi pentru  a calcula media aritmetica a unor cāmpuri.




Exemplu :a.  USE ANGAJAŢI

                      AVERAGE  SalBrut  TO   SalariuMediu

                      ?SalariuMediu   

             

            De asemenea,  pentru  calcule statistice mai complexe, exista o comanda mai complexa numita CALCULATE . Aceasta poate fi urmata de o lista de expresii care sunt calculate pe baza datelor din tabela.   Īn aceste expresii pot fi incluse o serie de functii statistice, cu urmatoarele semnificatii:

            AVG(expresie )- calculeaza media aritmetica a valorilor expresiei respective (pentru fiecare īnregistrare ), expresie care poate contine cāmpuri numerice ale tabelei.

            CNT() - returneaza numarul de īnregistrari prelucrate.

            MAX(expresie), respectiv MIN (expresie) - returneaza expresia cea mai mare , respectiv cea mai mica.

            SUM(expresie) - calculeaza suma valorilor expresiilor . 

Sintaxa generala a lui CALCULATE  este :

            CALCULATE   functii   TO VARIABILE   [FOR conditie]

Exemplu :a.  USE ANGAJAŢI

                      CALCULATE MAX(VenitBrut)  TO  MAXVenitBrut

                      ?MAXVenitBrut

8. Ordonarea  datelor din tabele :

            Nimeni nu se asteapta  ca utlizatorii sa introduca datele gata sortate, gata aranjate. Din acest motiv, de multe ori avem nevoie sa vedem datele īntr-o anumita ordine. O alta operatie uzuala, regasirea informatiilor, se poate face mult mai comod īn listele ordonate.

            S.G.B.D.-ul Visual Foxpro ofera doua solutii  legate de ordonarea  unei tabele :

·        ordonarea fizica a tabelei  - consta īn crearea unei noi tabele cu datele din prima tabela , tabela ordonata dupa un criteriu precizat

·        indexarea unei tabele  - aceasta consta īn crearea unui fisier suplimentar , numit index, care sa contina informatii cu privire la ordinea  īnregistrarilor  tabelei. Tabela ramāne fizic īn aceeasi ordine, dar este "vazuta"  si accesata conform ordinii din fisierul index .

Sortarea fizica a tabelelor :

            Ordonarea fizica si crearea unei noi tabele ordonate se face cu ajutorul comenzii SORT. Aceasta are sintaxa :

            SORT  [domeniu] ON cāmp1 /A sau /D , ., cāmpn  /A  sau /D  TO  TabelaNoua

                         FOR  conditie

Exemplu : a.  USE ANGAJAŢI

                       SORT On Nume  TO   LAngajati

                       USE   Langajati

                       BROWSE        

      b.  USE ANGAJAŢI

                       SORT On DataAng/D, Nume/A  TO   LAngajati

                       USE   Langajati

                       LIST  NUME, DataAng           

c.       USE Candidati

SORT  On  Medie/D, Ob1/D To  Admisi 

     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                                                          Carti.dbf

Titlu

Pozitie

Nr. īnreg

Titlu

Autor

Nr. pag.

Amintiri din copil.

2

1

Ion

Liviu. R.

400

Ion

1

2

Amintiri din copilarie

Ion Creanga

100

Insula misterioasa

4

3

Morometii

Marin Preda

350

Morometii

3

4

Insula misterioasa

Jules Verne

450

 

            Daca se doreste afisarea datelor, sistemul se uita īn fisierul index si de acolo afiseaza mai īntāi inregistrarea de pe pozitia 2 (ce o gaseste īn tabelul carti.dbf), apoi īnregistrarea 1,4 si īn final 3.

            Folosirii fisierelor index aduce cāteva avantaje : timp redus de obtinere a listelor ordonate,  daca se fac actualizari īn tabel , fisierul index este actualizat automat , spatiul  de memorie consumat este mai mic .

            Pentru a lucra cu indecsi,  trebuie parcurse  mai multe etape de lucru :

a.      se creaza fisierul index asociat tabelei, precizānd  criteriile  de ordonare  dorite .

b.      deschiderea (activarea) indexului respectiv , adica activarea criteriului  de ordonare .

c.       accesarea datelor din tabele ( conform ordinii din index).



d.      īnchiderea indexului ( eventual īnchiderea tabelei  de care este legat indexul).

            Crearea  indexului se poate face  la crearea tabelelui , cu ajutorul constructorului de tabele sau  cu ajutorul  unor comenzi dedicate . De asemenea , se poate reveni asupra structurii cu ajutorul comenzuii MODIFY  si se pot adauga indecsi.

Observatie :

Sa consideram tabelul anterior carti.dbf, avānd 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 cāmpuri 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 cānd 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 tārziu).

            Copierea structurii se face cu comanda COPY STRUCTURE,  cu sintaxa :

            COPY  STRUCTURE  to  NouTabel   [FIELDS  lista cāmpuri ]

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 cāmpuri

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

 

 

                                               

           












Document Info


Accesari: 642
Apreciat:

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

Copiaza codul
in pagina web a site-ului tau.




Coduri - Postale, caen, cor

Politica de confidentialitate

Copyright © Contact (SCRIGROUP Int. 2018 )