Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice



Acasa » referate » informatica » baze de date
Ordonarea inregistrarilor din tabele - FoxPro

Ordonarea inregistrarilor din tabele - FoxPro



Ordonarea inregistrarilor din tabele - FoxPro

          In  tabele, de regula, articolele sunt incarcate aleator,  prelucrarile ulterioare impunand reorganizarea acestora. Operatia de reorganizare este urmarea cererii de catre utilizatori a informatiei sub diferite forme si implica un consum de timp si resurse de memorare suplimentare. Cele mai utilizate metode de reorganizare a articolelor din tabele sunt sortarea si indexarea.

1 Sortarea inregistrarilor din tabele

Sortarea  este operatia prin care se obtine o noua tabela in care inregistrarile selectate sunt dispuse intr-o ordine specificata de utilizator. Practic, in noua tabela, are loc schimbarea intre ele a inregistrarilor dupa un anumit algoritm. Comanda folosita este SORT care are formatul general:

SORT TO <nume_tabela>ON <nume_camp1> [/A | /D] [/C][,<nume_camp2> [/A | /D] [/C] ]


[ASCENDING | DESCENDING][<domeniu>][FOR<expr_log1>][WHILE<expr_log2>]

[FIELDS <lista_campuri>| FIELDS LIKE <masca>| FIELDS EXCEPT <masca>] [NOOPTIMIZE]

Tabela care se va obtine trebuie specificata in clauza TO. Ordinea in care articolele vor fi rescrise se stabileste prin clauza ON. Aceasta clauza contine unul sau mai multe campuri din structura tabelei curente, campuri care devin “chei de sortare” (primara, secundara etc.).

Fiecarui camp cheie i se pot asocia parametrii suplimentari: /A (pentru sortarea crescatoare), /D (pentru sortare descrescatoare) si /C (pentru ignorarea prioritatii majusculelor fata de minuscule).

Clauzele ASCENDING si DESCENDING se aseamana cu parametrii /A si respectiv /D cu deosebirea ca ele actioneaza la nivel de inregistrare. Parametrii /A si /D au prioritate fata de clauzele ASCENDIG si respectiv DESCENDIG. Implicit, sortarea se realizeaza dupa clauza ASCENDING.  

Implicit, sunt sortate toate articolele tabelei, dar prin folosirea clauzelor optionale (<domeniu>, FOR,  WHILE,  FIELDS) tabela rezultata prin sortare poate sa contina doar articolele care satisfac conditiile de selectie.

Exemplu : Plecand de la tabela student.dbf sa se obtina o noua tabela (sortstud.dbf) cu articolele sortate dupa specializare si oras, selectandu-se doar studentii cu media mai mare decat 8.50.

USE  student

SORT  ON  specializ, oras  TO sortstud  FOR media >8.50

USE  sortstud

BROWSE

Pe langa avantajele ce decurg din obtinerea rapida a informatiilor sub forma ceruta de utilizator intr-o tabela libera, sortarea prezinta si dezavantajul generarii unor informatii redundante consumand  spatiul memorie disponibil.

2 Indexarea inregistrarilor din tabele

Spre deosebire de sortare, care creeaza o noua tabela, indexarea reprezinta modalitatea prin care se creeaza un nou fisier – numit fisier index  care nu contine articole, ci doar informatii  privind ordinea de accesare a acestora. Practic, indexarea este o sortare virtuala a unei tabele, inregistrarile acesteia ramanand fizic nesortate. Indecsii reprezinta o cale mult mai eficienta decat sortare, permitand utilizatorilor vizualizarea si accesarea datelor dintr-un tabel intr-o anumita ordine. Fisierele index, atat timp cat sunt deschise, sunt permanent actualizate in functie de adaugarea, modificarea sau stergerea articolelor.

Comanda folosita este INDEX  cu formatul general:

INDEX ON <expr>TO <nume_fisier_idx> | TAG <nume-eticheta>[OF <nume_fisier_cdx>]

[FOR <expr_log>][COMPACT][ASCENDING | DESCENDING][UNIQUE | CANDIDATE]

[ADDITIVE]

unde:

Clauza ON <expr>   precizeaza  prin expresie  ordinea de accesare a articolelor din tabela curenta; expresia poate fi de tip numeric, caracter si data calendaristica, incluzand campuri din tabela, functii, operatori, constante, variabile de memorie.

Clauza TO <nume_fisier_idx> permite crearea unui fisier index simplu cu extensia implicita .idx si cu numele specificat de utilizator; aceste fisiere sunt cunoscute sub numele de indecsi de sine statatori, deoarece fiecare fisier contine un singur index si este independent de celelalte; pentru o tabela pot fi definiti multi indecsi de sine statatori.

Clauza TAG  <nume_eticheta> [OF <nume_fisier_cdx>] permite crearea fisierelor index compuse care pot stoca un numar nelimitat de expresii de indexare distincte, intr-un singur fisier. La randul lor fisierele compuse pot fi: structurale si nestructurale. Fisierele structurale se creeaza implicit prin clauza TAG <nume_eticheta>, au acelasi nume cu al tabelei la care sunt asociati si extensia implicita .cdx. Acest tip de fisier se deschide automat odata cu tabela corespunzatoare si se  actualizeaza in functie de operatiile executate asupra tabelei. Fisierele nestructurale se creeaza cu ajutorul clauzei OF numele lor este diferit de cel al tabelei si este specificat explicit de catre utilizator, iar extensia implicita este .cdx. 

Clauza FOR <expr_log> permite ca indexul creat sa actioneze ca un filtru asupra tabelei, fiind accesate numai inregistrarile care respecta conditia data de expresia logica.

Clauza COMPACT forteaza comprimarea indecsilor si in fisierele simple.



Clauzele ASCENDING | DESCENDING sunt operationale numai pentru fisierele compuse si stabilesc ordinea cheilor de accesare a inregistrarilor.

Clauza UNIQUE permite, in cazul tabelelor cu valori repetate ale cheii, sa se acceseze numai prima inregistrare din cele cu cheie duplicata.

Clauza CANDIDATE creeaza un index candidat  si este operationala numai cand se creeaza un index structural, altfel VFP genereaza un mesaj de eroare.

Clauza ADDITIVE permite adaugarea la lista fisierelor index existente a indecsilor nou creati.

Asociate operatiei de indexare sunt si functiile: NDX(), CDX(), MDX(), TAG(), SYS(21), SYS(22) SYS(2021), KEY().

Functia NDX (<nr_fisier_index> [,<expr_n> | <expr_c>]) returneaza numele fisierului index simplu deschis in zona de lucru specificata si care corespunde numarului de ordine dat <nr_fisier_index>.

Functiile MDX() si CDX() sunt identice, au acelasi format cu functia NDX() si returneaza numele fisierului index compus .cdx deschis. Aceste functii necesita cel putin un parametru numeric astfel: 1 – pentru a returna numele indexului structural (daca acesta exista);2, 3  etc. – pentru a returna numele celorlalti indecsi compusi in ordinea deschiderii.

Toate aceste functii returneaza sirul vid daca numarul indexului depaseste numarul indecsilor deschisi.

Functia TAG() returneaza numele fiecarei etichete a indexului compus curent.

Functia KEY() returneaza cheia de indexare (expresia din clauza ON din comanda INDEX).

Exemplu: Sa se obtina un fisier index simplu nume.idx dupa cheia numest pentru studentii care locuiesc in Iasi: USE student

INDEX  ON  numest  TO  nume  FOR oras = ”iasi”

BROWSE

? ndx(1)            && afisarea numelui fisierului index simplu

C:…NUME.IDX



          Exemplu : Sa se creeze un fisier compus structural cu etichetele: nume, medie si oras:

INDEX ON nume TAG nume

INDEX ON media TAG medie

INDEX ON oras TAG oras

? CDX(1)

C:…STUDENT.CDX

? MDX(1)

C:…STUDENT.CDX

INDEX ON media  DESCENDING FOR oras = “iasi” TAG med_is

? tag(4)            && afiseaza ultima eticheta  creata

MED_IS

            Exemplul : Sa se creeze un fisier index compus nestructural administratie.cdx care sa acceseze studentii de la specializarea “Adm. Publica”, dar care nu sunt din orasul Iasi.

            USE student

            INDEX  ON  numest  TAG nume;

            OF administratie;

FOR specializ = “Adm. Publica” AND  oras <> ”iasi”

? cdx(1)

C:…STUDENT.CDX

? cdx(2)

C:…ADMINISTRATIE.CDX

Deschiderea si inchiderea indecsilor

            Exista mai multe modalitati de deschidere a fisierelor index intre care amintim comenzile: USE, SET ORDER, SET INDEX.



Comanda USE. Odata cu deschiderea tabelelor se pot deschide si fisierele index asociate acestora folosind clauza INDEX cu formatul :

USE <nume_fisier> | ?

[INDEX <lista_fisiere_index> | ? [ORDER [<expr_n> | <nume_fisier_idx> | [TAG] <nume_eticheta> [OF<nume_fisier_cdx>][ASCENDING | DESCENDING]]]]

in care:

<lista_fisiere_index> indica lista fisierelor index care vor fi deschise (in lista fisierele se separa prin virgula); daca nu se foloseste clauza ORDER fisierul activ va fi primul din lista;

Clauza ORDER precizeaza fisierul index simplu sau eticheta dintr-un fisier index compus ce va deveni activ /activa;

Clauzele ACSENDING | DESCENDING controleaza ordinea de accesare a inregistrarilor.

Comanda SET ORDER. Pentru a activa un alt fisier index sau o alta eticheta, dupa deschiderea tabelei se foloseste comanda SET ORDER cu formatul general:

SET ORDER TO [<expr_n1> | <nume_fisier_idx>| [TAG] <nume_eticheta> [OF <nume_fisier_cdx>] [IN <expr_n2> | <expr_c>] [ASCENDING | DESCENDING]]

Clauzele au acelasi rol ca si in cazul comenzilor  USE si INDEX.

Exemplu: Sa se acceseze studentii dupa eticheta “oras”:

USE student INDEX  nume.idx,  student.cdx, administratie.cdx 

SET  ORDER  TO  TAG  oras

? TAG(1)

Exemplul: Sa se acceseze tabela studenti.dbf prin fisierul index nestructural administratie.cdx:

USE student INDEX  nume.idx,  student.cdx, administratie.cdx

SET ORDER TO  TAG nume OF administratie

BROWSE

Comanda SET INDEX. Pentru deschiderea ulterioara a unor fisiere index pentru tabela curenta se foloseste comanda SET INDEX cu formatul general:

SET INDEX TO [<lista_fisiere_index> | ? ][ORDER <expr_n> | <nume_fisier_ind>

| [TAG]<nume_eticheta>[OF<nume_fisier_cdx>][ASCENDING | DESCENDING]]

[ADDITIVE]

Prin aceasta comanda, implicit se vor deschide toate fisierele index specificate in lista de fisiere sau selectate din fereastra de dialog. Clauzele au acelasi rol ca si in cazul precedent cu precizarea ca ADDITIVE determina adaugarea fisierelor specificate la lista deja existenta. Comanda  folosita fara clauze (SET INDEX TO) determina inchiderea tuturor fisierelor index din zona de lucru curenta cu exceptia fisierului index structural.

Comanda CLOSE INDEX permite inchiderea tuturor fisierelor index din zona de lucru curenta, cu exceptia celui structural.

Inchiderea fisierelor index se poate realiza si cu comenzile: CLOSE  ALL,  USE  si  CLOSE  DATABASE.

Exploatarea tabelelor indexate trebuie facuta cu atentie deoarece daca dintr-o eroare de operare tabela este actualizata fara deschiderea fisierelor index, indecsii nu se actualizeaza si exploatarea ulterioara este incorecta. Daca se constata ca fisierul index este alterat sau nu este corect actualizat utilizatorul il poate regenera folosind comanda REINDEX. Prin aceasta comanda se refac toate fisierele index deschise si asociate tabelei curente.

Exemplu: Pentru actualizarea indecsilor nume.idx si administratie.cdx se va folosi secventa:

USE student INDEX nume.idx, administratie.cdx

REINDEX 









Politica de confidentialitate

.com Copyright © 2019 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.


Proiecte

vezi toate proiectele
 PROIECT DE LECTIE Clasa: I Matematica - Adunarea si scaderea numerelor naturale de la 0 la 30, fara trecere peste ordin
 Proiect didactic Grupa: mijlocie - Consolidarea mersului in echilibru pe o linie trasata pe sol (30 cm)
 Redresor electronic automat pentru incarcarea bateriilor auto - proiect atestat
 Proiectarea instalatiilor de alimentare ale motoarelor cu aprindere prin scanteie cu carburator

Lucrari de diploma

vezi toate lucrarile de diploma
 Lucrare de diploma - eritrodermia psoriazica
 ACTIUNEA DIPLOMATICA A ROMANIEI LA CONFERINTA DE PACE DE LA PARIS (1946-1947)
 Proiect diploma Finante Banci - REALIZAREA INSPECTIEI FISCALE LA O SOCIETATE COMERCIALA
 Lucrare de diploma managementul firmei “diagnosticul si evaluarea firmei”

Lucrari licenta

vezi toate lucrarile de licenta
 CONTABILITATEA FINANCIARA TESTE GRILA LICENTA
 LUCRARE DE LICENTA - FACULTATEA DE EDUCATIE FIZICA SI SPORT
 Lucrare de licenta stiintele naturii siecologie - 'surse de poluare a clisurii dunarii”
 LUCRARE DE LICENTA - Gestiunea stocurilor de materii prime si materiale

Lucrari doctorat

vezi toate lucrarile de doctorat
 Doctorat - Modele dinamice de simulare ale accidentelor rutiere produse intre autovehicul si pieton
 Diagnosticul ecografic in unele afectiuni gastroduodenale si hepatobiliare la animalele de companie - TEZA DE DOCTORAT
 LUCRARE DE DOCTORAT ZOOTEHNIE - AMELIORARE - Estimarea valorii economice a caracterelor din obiectivul ameliorarii intr-o linie materna de porcine

Proiecte de atestat

vezi toate proiectele de atestat
 Proiect atestat informatica- Tehnician operator tehnica de calcul - Unitati de Stocare
 LUCRARE DE ATESTAT ELECTRONIST - TEHNICA DE CALCUL - Placa de baza
 ATESTAT PROFESIONAL LA INFORMATICA - programare FoxPro for Windows
 Proiect atestat tehnician in turism - carnaval la venezia






Termeni si conditii
Contact
Creeaza si tu