curs 4 sgbd

Upload: alexandru-luca-postescu

Post on 25-Feb-2018

247 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Curs 4 SGBD

    1/39

    1

    1. Crearea structurii bazei de date i a tabelelor

    Manipularea presupune urmtoarele operaii care pot fi executate fie n modulasistat, fie n modul comand:Crearea bazei de date/tabelDeschiderea bazei de date/tabelEfectuarea operaiilor de consultare, actualizare (adgare, modificare, tergere)

    asupra bazei de date/tabelnchiderea bazei de date/tabel

    1.1 Crearea bazei de date

    Sistemul VFP permite crearea unei baze de date i introducerea tabelelor care vor

    face parte din baza de date:crearea fiierului (fiierelor) n care se pot stoca datele;definirea structuriiacestora;stabilirea relaiilor ntre tabelele bazei de date,

    Crearea se face o singur dat, nainte de utilizare.

    Not Secvenele din linia de comand care apar ntre paranteze drepte au semnificaiade element opional.

    Crearea unei baze de date se face cu comanda:

    CURS

    Manipularea tabeleloriconstrucia bazelor dedate n Visual FoxPro

    4Sumar

    Deschiderea i nchiderea bazei de date si a tabelelor Manipularea structurii unei tabele

    Accesul la date

    Actualizarea datelor Ordonarea datelor Aplicaie propus spre rezolvare n laborator

  • 7/25/2019 Curs 4 SGBD

    2/39

    2

    CREATE DATABASE []?nume_baz_de_datespecific numele bazei de date care va fi creat.? afieaz o fereastr de dialog pentru specificarea numelui bazei de date.

    Fiierul corespunztor bazei de date are extensia .DBC. La crearea bazei de date seface automat i deschiderea ei. Adugarea unei tabele n baza de date se face cu comandaADD TABLEsau folosind bara de instrumente DATABASE DESIGNER.

    1.2 Crearea tabelelor

    Crearea tabelelor se realizaz n funcie de modul de lucru, astfel:1. modul asistat se utilizeaz secvena de adresare a meniului sistem:

    FILE/NEW se alege opiunea TABLE din fereastra de dialog i se apas butonulNEW. Aceast secven are ca efect apariia unei ferestre de dialog CREATE, ncare se specific discul logic, directorul i numele tabelei care va fi creat Deplasareapn la poziia dorit n fereastr se face utiliznd tasta sau mouse-ul. Dupintroducerea numelui tabelei se apas butonul SAVE(fiierul va fi salvat cu extensia.DBF) i se afieaz o nou fereastr TABLE DESIGNER. n acest fereastr, seselecteaz opiunea FIELDS afiat sus, utilizatorul trebuie s introduc structuratabelei. Fereastra conine urmtoarele cmpuri de preluare a informaiilor structurale:Name, Type, Width, Dec, Index, NULL i patru butoane pentru opiunile: OK,Cancel, Insert, Delete. Sub Namese tasteaznumele cmpului, format din maxim10 caractere, ncepnd cu o liter, iar sub Type se declar tipul cmpului nou creatsau se alege o opiune din meniul pop-up afiat.Cmpul poate fi de tip:

    caracter admite un ir de maxim 254 caractere (caractere alfanumerice ispaii goale);

    numeric admite maxim 20 de caractere, numere, caracterele +/-, punctulzecimal;

    logic admite maxim un caracter (T sau Y, F sau N); dat admite maxim 8 caractere i are formatul implicit ll/zz/aa. Formatul

    poate fi schimbat cu comanda SET DATE TO BRITISH i are ca efect schimbarea nformatul zz/ll/aa;

    memoadmite implicit 10 caractere, ns sistemul poate stoca blocuri mari detext pentru fiecare nregistrare. Dimensiunea blocurilor de text este limitat de spaiul pehard disk. Tabelele care au declarate n structur cmpuri de tip memo sunt stocate subforma a dou fiiere, unul cu extensia .DBF i cellalt cu extensia .FTP n care sesalveaz cmpurile memo ale tabelei.

    general se folosete pentru memorarea elementelor de tip OLE (ObjectLinking and Embededing), texte, foi de calcul tabelar (EXCEL), imagini, sunete etc.

    Introducerea datelor n cmpurile memo i general este diferit de introducereadatelor n alte cmpuri. Se poziioneaz cursorul pe cmpul memo, se apas simultantastele [Ctrl]+[PgDown] i apare o fereastr cu acelai nume ca al cmpului memo n care

  • 7/25/2019 Curs 4 SGBD

    3/39

    3

    poate fi introdus textul. Textele introduse se salveaz apsnd tastele [Ctrl]+[W],fereastra memo se nchide i cursorul revine n fereastra de adugare a datelor.

    Widthopiune care specific numrul maxim de poziii ale cmpului.Decspecific marimea prii zecimale, n cazul cmpurilor numerice.Indexspecific dac cmpul respectiv se indexeaz (ascendent/descendent) sau nu.NULL specific dac cmpul respectiv admite sau nu valori de tip NULL (cusemnificaia unor date lips sau inaplicabile).

    Dac se dorete schimbarea poziiei unui cmp n structur, se apas tasta [Tab] pncnd cursorul se pozioneaz pe cmpul respectiv i se apas simultan tastele [Ctrl] +[PgDown], [Ctrl] + [PageUp]. Aceasta va avea ca efect deplasarea cmpului selectat cu opoziie n jos, sau n sus. Operaia se poate efectua i cu mouse-ul: se selecteaz rndulcare conine cmpul a crei poziie o modificm, cursorul de poziie se mut pe acestrnd; innd apsat butonul stng de la mouse pe cursor i deplasnd mouse-ul sus josvom muta cmpul selectat, n cadrul structurii generale.

    Butonul cu opiunea Insertse folosete pentru adugarea unui nou cmp. Butonul cuopiunea Deletese folosete pentru tergerea unui cmp (cel marcat de cursor). ButonulCancelanuleaz modificrile fcute, iar butonul OKvalideaz modificrile (sau folosindcombinaia de taste [Ctrl] +[Enter]).

    Dup ce structura este salvat, fiierul fiind nou creat, apare un mesaj:Input data records now? (Y/N)_

    Dac se rspunde cu Y este afiat un ecran n care se introduc datele n ordinea stabilitn structur.

    2.modul comand: implic utilizarea comenzii CREATE TABLEdin nucleulSQL:

    CREATE TABLE nume_tabel[FREE](nume_cmp1 tip_cmp1 [ (lungime_cmp [,precizie] )][,nume_cmp2]

    )unde:- nume_tabel numele tabelei create;- FREE specific c tabela nu va fi adugat la baza de date deschis;- nume_cmp1 tip_cmp1 (lungime_cmp ,precizie) specific numele cmpului 1, tipulcmpului 1, - lungimea maxim i numrul de zecimale pentru cmpurile numerice. Otabel poate conine pn la 255 de cmpuri. Dac unul sau mai multe cmpuri accept ivaloarea NULL atunci numrul de cmpuri se reduce cu 1 (254).

    Tipul cmpului se declar cu una din urmtoarele litere:Tip_cmp Lungime_cmp Precizie DescriereC n cmp tip caracter de lungime n

  • 7/25/2019 Curs 4 SGBD

    4/39

    4

    D cmp de tip dat calendaristicT cmp de tip timp (hh/mm/ss)

    N n d cmp numeric de lungime n cu d zecimaleF n d cmp numeric n virgul mobil de lungime ncu d zecimale

    I cmp numeric ntregB d cmp numeric dubl precizieY moneda

    L cmp de tip logicM cmp de tip memoG cmp de tip general

    Alte comenzi utilizate n crearea tabelelorPentru crearea unei tabele se pot utiliza i comenzile COPY STRUCTUREEXTENDED TOsau CREATE ... FROM ...

    COPY STRUCTURE EXTENDED TO [FIELDS][DATABASES [NAME] ]

    unde:- nume_tabel numele tabelei nou create;

    -FIELDS specific cmpurile care vrem s apar n noua tabel. Dacnu se specific nimic, implicit sunt luate toate cmpurile din tabelei surs;-DATABASE numele unei bazei de date existente la care va fiadgat noua tabel;- NAME specific numele tabelei aa cum apare n baza de date.Fiierul de structur creat are urmtoarele cmpuri:

    FIELD_NAME cmpul nume (10 caractere)FIELD_TYPE cmpul tip (maxim 1 caracter): C,N,F,D,L,M,GFIELD_LEN lungimea cmpului (maxim 3 caractere)

    FIELD_DEC numr de zecimale admis (maxim 3 caractere)

    Comanda CREATE... FROM...creaz o tabel dintr-un fiier de structur (realizatcu comanda anterioar COPY STRUCTURE EXTENDED TO...). Sintaxa comenzii:CREATE [] FROM nume_tabel_1 numele tabelei care va fi creat;nume_tabel_2 numele fiierului care conine structura care va fi utilizat la creare.

  • 7/25/2019 Curs 4 SGBD

    5/39

    5

    Exemplu 1: Crearea structurii unui tabel. Sa se scrie un program FoxPro care creaza otabela Student cu structura Cod_matr N(3), Nume C(20), Prenume C(40), SpecializareC(20), Nota_ex1 N(5,2), Nota_ex2 N(5,2).Folosind tabelul creat anterior sa se realizeze un nou tabel "Student final" care sa continasi media la cele doua examene.

    SET DEFAULT TO ""SET TALK OFFSET SAFE OFFCLOSE ALL DATACLEAR

    CREATE TABLE Student ( Cod_mat r N( 3) , Nume C( 20) , Pr enume C( 40) , SpecC( 20) , Not a_ex1 N( 5, 2) , Nota_ex2 N( 5, 2) )USE Student i n 1 &&deschidem tabela Student folosind o zona de lucru

    COPY STRUCTURE EXTENDED TO Temp &&copiaza structura tabelei Student in tabelatemporara cu numele Temp

    USE Temp &&deschidem tabela temporaraAPPEND BLANK &&adaugam o inregistrare vidaREPLACE FI ELD_NAME WI TH "Medi a" &&se adauga un nou camp mediaREPLACE FI ELD_TYPE WI TH "N" &&de tip numericREPLACE FI ELD_LEN WI TH 5 &&de dimensiune 5REPLACE FI ELD_DEC WI TH 2 &&2 pozitii pentru partea zecimala

    CREATE Student _Fi n FROM Temp &&cream structura tabelei Student_Fin cu structuradata de fisierul tabel Temp

    USE Student _Fi n &&deschidem tabela Student_Fin

    APPEND FROM St udent &&acest lucru e posibil prin faptul ca tabela Student afost deschisa in zone de lucruREPLACE ALL Medi a WI TH ( Not a_ex1+Not a_ex2) / 2BROWSE &&afiseaza continutul lui StudentFin in fereastra de

    BrowseCLOSE ALL DATABASES &&se inchid toate tabelele deschiseDELETE FI LE Temp. dbf &&stergem fisierul auxiliar

    2. Deschiderea bazei de date/tabelei

    Tabelele pot fi independente de o baz de date (free tables) sau pot fi ntr-o bazde date. ntr-o apicaie se pot utiliza mai multe tabele care pot fi tabele libere sau tabelecare aparin uneia sau mai multor baze de date. Deschiderea tabelelor se poate face nacelai mod, indeferent dac tabelul e liber sau aprine unei baze de date. Dac sedeschide un tabel care aparine unei baze de date fr ca baza de date s fi fost deschis,n mod automat este deschis mai nti baza de date, sistemul folosind informaiaexistent la baza de date care exist n antetul fiierului respectiv.

    Deschiderea bazei de date se face cu comanda:OPEN DATABASE [ ] [ EXCLUSI VE | SHARED] [ NOUPDATE]nume_bd numele bazei de date pe care o deschidem;EXCLUSI VEali utilizatori nu pot s acceseze baza de date;

  • 7/25/2019 Curs 4 SGBD

    6/39

    6

    SHAREDdeschide baza de date n modul partajat, ceilali utilizatori au acces;NOUPDATE specific faptul c nu se pot face schimbri n baza de date (deschis doarpentru citire).

    Comanda pentru deschiderea unei tabele ntr-o zon de lucru:USE IN INDEX ALIAS [EXCLUSIVE | SHARED][ NOUPDATE]nume_fiiernumele tabelei pe care vrem s o deschidem.nr_zon_de_lucrunumrul zonei de lucru asociate la deschiderea tabelei (numere0,1,2.. sau litere A,B...).INDEX - specific un set de indeci care se deschid odatcu tabela. Dac tabela are un fiier de index structural compus, fiierul de index estedeschis automat odat cu fiierul. Lista de fiiere index conine orice fel de nume de fiier

    de index, simplu (.IDX) sau nestructural compus (.CDX), separate prin virgul, frspecificarea extensiei. Primul fiier de index din list este cel care controleaz accesareai afiarea datelor din tabel.ALI AS -creaz un nou nume pentru tabel, diferit de numele extern.Referirea la fiier se poate face prin intermediul alias-ului, n funcii sau comenzi care cersau suport alias-ul.

    Sistemul FoxPro utilizeaz zone (teoretic 32767) n care are loc deschidereatabelelor, fiecare ntr-o zon, mpreun cu fiierele lor index. Specificarea zonei de lucrupoate fi fcut i separat asociind comanda SELECTla comanda USE.SELECT |

    USE

    Not Semnul | |n sintaxa unei comenzi marcheaz alternana unor clauze care seexclud.

    Zonele se selecteaz n program prin comanda SELECT nr zona, undenr zona=0este prima zon disponibil.

    Exemplul 2:Deschiderea tabelelor in zone de lucru. Se dau 3 tabele:Comisie1 (Nume, P1 (romana), P2 (mate), Med)

    Comisie2 (Nume, Mate, Rom, Media)Comisie3 (Candidat, Proba1 (mate), Proba2(romana), Liceul)Se primesc in comisia centrala de BAC cele trei tabele si se cere crearea uneia noi cunotele si media elevilor la examenul de BAC.

    SET DEFA TO ""SET DELE ONSET TALK OFFSET SAFE ONCLEARCLOSE ALL DATA

  • 7/25/2019 Curs 4 SGBD

    7/39

    7

    *cream o tabela cu preluare din cele trei anterioareDELETE FI LE Bac. dbf

    SELECT 1 &&sel ect am zona de l ucru 1CREATE DBF Bac ( Nume C( 30) , RomN( 5, 2) , Mate N( 5, 2) , Medi a N( 5, 2) )

    SELECT 2USE Comi si e1

    SELECT 3USE Comi si e2

    SELECT 4USE Comi si e3

    *copiem inregistrarile din cele trei tabele in masive bidimensionaleSELE 2

    COPY TO ARRAY ASELE 3COPY TO ARRAY B FI ELDS Nume, Rom, Mat eSELE 4COPY TO ARRAY C FI ELDS Candi dat , Pr oba2, Proba1 FOR Li ceul ="GH. LAZAR"

    * se face operatia inversa, adica, din matrice in tabeleSELE BacAPPEND FROM ARRAY AAPPEND FROM ARRAY BAPPEND FROM ARRAY CREPLACE ALL Medi a WI TH ( Rom+Mat e) / 2BROWSE

    CLOSE ALL DATA

    n modul asistat, deschiderea se face utiliznd meniul FI LE/ OPEN, se selecteazDATABASEsauTABLEdin meniul pop-up afiat i se specific discul logic, subdirectoruli numele bazei de date sau tabelului, precum i modul de deschidere (se bifeaz sau nu,opiunea EXCLUSI VE). Cnd toate aceste informaii sunt specificate se apas butonul OK.Dup operaia de deschidere n meniul View avem subopiunile Browse (vizualizareconinut), Database Designer (proiectantul pentru baza de date), Table Designer(proiectantul pentru tabele). Se pot face consultri cu Browse, modificri ale structurii cuDatabase Designer(adugare, eliminare de tabele din baz, stabilirea/anularea relaiilorntre tabele) sau Table Designer(actualizare cmpuri).

  • 7/25/2019 Curs 4 SGBD

    8/39

    8

    2.1 Modificarea structurii de date a tabelelor- modul asistat

    Modificarea structurii logice a unei tabele se poate face fie cu ajutorul comenziiMODIFY STRUCTURE, din fereastra de comand, fie activnd butonul DATA

    SESSION din bara de instrumente .

    n primul caz, dup lansarea comenzii MODIFY STRUCTURE, se va afiafereastra de dialog OPEN. Cu ajutorul sgeilor direcionale se poziioneaz cursorul petabelul pe care dorim s-l modificm. Se apas tasta i va aprea fereastra dedialog STRUCTURE, utilizat i la definirea structurii tabelelor.n cel de al doilea caz, din fereastra DATA SESSION se alege opiunea OPEN, caredeschide fereastra de selectare a discului logic, a subdirectorului i a numelui de fiier. Seselecteaz fiierul i se apas butonul OK. n fereastra DATA SESSION va fi afiat

    numele tabelului deschis. Pot fi deschise mai multe tabele simultan, numele lor fiindafiat n fereastra DATA SESSION. Se alege opiunea PROPERTIES care va activafereastra de dialog STRUCTURE.

    n ambele cazuri operaia OPEN se va face cu opiunea EXCLUSIVE pentru aputea modifica.

    n fereastra STRUCTURE, poziionarea cursorului se face apsnd tasta pentru deplasare nainte sau + pentru deplasare napoi, n zona cecuprinde descrierea structurii, unde vrem s inserm un nou cmp. n partea dreapt aferestrei vor fi active opiunile INSERT, DELETE (adgare/tergere). Se apas tasta sau butonul cu opiunea INSERT i va fi afiat urmtoarea linie:

    Cmpurile ce urmeaz vor fi mpinse cu un rnd n jos. Se introduce numele

    cmpului n prima csu, se alege tipul i lungimea maxim din meniurile pop-up.Pentru tergere se poziioneaz cursorul pe cmpul respectiv i se apas tasta sau se folosete butonul cu opiunea DELETE.Salvarea modificrilor se face selectnd opiunea OK (buton), sistemul afind urmtorulmesaj: Make st r uct ure changes per manent ?

    Opiunea YES salveaz noua structur a tabelului, fereastra de dialogSTRUCTURE se nchide i controlul (cursorul) trece n fereastra de comand.

    Not: Modificarea structurii tabelelor se poate face i cu comanda ALTER TABLEdin nucleul SQL.

    La alegerea opiunii Browse(rsfoire), fie din meniul VIEW fie din fereastraDATA SESSION, va apare opiunea Table n bara de meniuri cu urmtoarele subopiuni:Go to Record regsirea unei nregistrri dup diferii parametri: numr articol,deplasare la nceputul/sfritul tabelului, localizare nregistrare dup valoarea unui cmpetc.Append New Recor dadgarea unei noi nregistrri.Append Recor dsadugarea de noi nregistrri dintr-un alt fiierDel ete Records marcare pentru tergere (la nivel logic).Recal l Records anularea marcrii pentru tergere.Remove Del et ed Recor dstergerea definitiv din tabel a nregistrrilor marcate (lanivel fizic).

  • 7/25/2019 Curs 4 SGBD

    9/39

    9

    Repl ace Fi el d actualizare cmp nregistrare (schimbarea valorii cmpului).Si ze Fi el dmodificarea limii de afiare a cmpului n browser.Move Fi el dschimbarea poziiei de afiare a cmpului n browser.

    Vizualizarea datelor cu opiunea Browse, se face ntr-o fereastr de tipWINDOWS care cuprinde un tabel, coloanele reprezentnd cmpurile, iar liniilereprezentnd nregistrrile. Trecerea de la un cmp la altul se face apsnd tasta (nainte), +(napoi); pe vertical deplasarea se face cu sgeile ,. nchiderea ferestrei Browse se face apsnd simultan tastele+.

    2.2Deplasri n tabel. Cutri secveniale

    Odat cu deschiderea tabelului, acestuia i se asociaz o locaie de memorie n careeste stocat numrul nregistrrii curente (pointer-ul de nregistrare).Exist 2 tipuri de deplasri:a) criteriul utilizat este numrul nregistrrii, care se realizeaz utiliznd din submeniulGo to Record subopiunile: Top, Bottom, Next, Previous, Record# (prima nregistrare,ultima nregistrare, urmtoarea nregistrare, nregistrarea anterioar, la nregistrarea n).b) criteriul utilizat se obine pe baza specificrii unei condiii de tip For sau Whileaplicat unui cmp. Se utilizez opiunea Locate din submeniul Go to Record.Pentru a modifica o nregistrare din tabel se alege opiunea Browse i apoi din meniulTable, subopiunea Replace Field din meniul sistem. Apare o fereastr de dialog(REPLACE FIELD) cu urmtoarele specificaii:

    Field -numele cmpului ale crui valori vrem s le modificm;With noua valoare.Scope domeniul (Next n, All, Record n, Rest): toate nregistrrile, urmtoarele nnregistrri, numai pentru nregistrarea n, restul nregistrrilor inclusiv cea curent pe careeste poziionat cursorul.For / While vor fi modificate doar nregistrrile care satisfac condiia. For este ocondiie construit cu Expression Builder (constructorul de expresii) i vor fi modificateacele nregistrri care au valoarea TRUE pentru expresia dat. Clauza While este deasemenea o expresie logic i nregistrrile selectate trebuie s verifice condiia pentru ase realiza modificarea.

  • 7/25/2019 Curs 4 SGBD

    10/39

    10

    Constructorul de expresii are o regiune de editare n care vor fi introduse condiiile,manual sau asistat de calculator.Prin apsarea butonului Replace are loc operaia de modificare.

    2.3 nchiderea bazei de date sau a tabelei

    Cu comanda CLOSE se nchid diferite tipuri de fiiere:CLOSE DATABASES [ ALL] nchide baza de date curent i tabelele sale. Dac nueste deschis nici o baz de date, vor fi nchise toate tabelele libere, fiierele de index, dintoate zonele de lucru i se va selecta zona de lucru 1. Clauza ALL specific c vor finchise toate bazele de date i tabelele lor, toate tabelele libere i toate fiierele de index.CLOSE I NDEX nchide toate fiierele de index pentru zona de lucru curent (fiiere

    .IDX i nestructurale .CDX). Un fiier de index structural (.CDX, compus care sedeschide automat cu tabelul) nu va fi nchis.CLOSE ALL nchide toate bazele de date i tabelele lor, toate tabelele libere, toatefiierele de index din toate zonele de lucru i se selecteaz zona de lucru 1. Comanda nuva nchide fereastra de comenzi, fereastra HELP, fereastra DEBUG.CLOSE TABLES [ ALL] nchide toate tabelele din baza de date curent, sau toatetabelele libere din toate zonele de lucru dac nu exist o baz de date deschis. Includereaclauzei ALL nchide toatetabelele din toate bazele de date i tabelele libere, dar bazele dedate rmn deschise.

    3. Manipularea structurii unei tabeleModificarea structurii unei tabelese face cu comanda

    MODIFY STRUCTUREDac nu este deschis nici un tabel n zona de lucru curent, se deschide caseta de dialogOpen care permite utilizatorului selectarea (deschiderea) unui tabel. Comanda are ca efectlansarea aplicaiei Table Designer (proiectantul de tabele) cu ajutorul cruia se facmodificrile de structur (adugare i tergere de cmpuri, modificare nume cmp,mrime, tip, adugarea/tergerea/modificarea etichetelor de index, specificarea valorilorde tip NULL).

    Vizualizarea structurii unei tabele se face cu comandaDISPLAY STRUCTURE [IN | ] [TO PRINTER[PROMPT] [TO FILE ] [NOCONSOLE] IN |

    Are ca efect afiarea structurii tabelului dintr-o zon de lucru, alta dect cea curent, saua unui tabel adresat prin alias. Semnificaia clauzelor este urmtoarea:

    TO PRINTER [PROMPT] direcioneaz informaiile la imprimant.Clauza PROMPT determin afiarea unei casete de dialog nainte de ieirea laimprimant (se pot face setri legate de imprimant).TO FILE -direcioneaz ieirea informaiilor ntr-un fiier.NOCONSOLE suprim afiarea datelor n ferestra principal a VFP.

  • 7/25/2019 Curs 4 SGBD

    11/39

    11

    Se mai poate folosi i comanda LIST STRUCTURE care are aceleai clauze.

    Copierea structurii unui tabel

    Crearea unui nou tabel care va conine structura tabelului activ se face cu comandaCOPY STRUCTURE EXTENDED TO [FIELDS ]

    Numai cmpurile din lista de cmpuri vor fi incluse n nregistrarea din noul fiier. Dacclauza FIELDS este omis, vor fi incluse toate cmpurile tabelului surs.

    4. Accesul la date

    n funcie de tipul accesului la date, comenzile sunt:

    pentru acces secvenial: GO, SKIP, LOCATE, CONTINUE.pentru acces direct: SEEK, caz n care tabelul trebuie indexat.

    Comanda GOGO [RECORD] [IN | IN ]sauGO TOP | BOTTOM [IN | IN ]

    Comanda are ca efect mutarea pointer-ului de pe nregistrarea curent pe nregistrareanr_nreg.

    IN nr_zon_de_lucru specific zona de lucru n care este mutat pointer-ul.IN alias_tabel specific alias-ul tabelului n care este mutat pointer-ul.TOP poziioneaz pointer-ul pe prima nregistrare din fiier.BOTTOM poziioneaz pointer-ul pe ultima nregistrare.

    FunciaRECNO()Returneaz numrul curent al nregistrrii pe care este poziionat pointer-ul n fiierulcurent sau specificat.RECNO( | )

    nr_zon_de_lucru reprezint zona de lucru n care este activ tabelul. Dac s-a lansat ocomand SEEK pentru a cuta o nregistrare i aceasta nu a fost gsit, se poate utilizacomanda GO RECNO(0) pentru a returna numrul nregistrrii cu cea mai apropiatvaloare cutat. Funcia RECNO(0) va returna valoarea 0 dac nu s-a gsit nici o valoareapropiat.

    Funcia RECCOUNT()Returneaz numrul de nregistrri din tabelul curent sau specificat.RECCOUNT( | )

    FunciaEOF()

  • 7/25/2019 Curs 4 SGBD

    12/39

    12

    Este funcia logic care returneaz valoarea adevrat (.T.), dac pointer-ul de fiier estepoziionat pe ultima nregistrare, n fiierul curent. n caz contrar, valoarea returnat estefals (.F.).EOF ([ | ])

    FunciaBOF()Este funcia logic care returneaz valoarea adevrat (.T.), dac pointer-ul de fiier estepoziionat pe prima nregistrare, n fiierul curent. n caz contrar, valoarea returnat estefals (.F.).BOF ([ | ])

    ComandaSKIPSKIP [] [IN | IN ]

    nr_nreg specific numrul de nregistrri peste care se mut pointer-ul n fiier. Dacnu se specific, pointer-ul se va muta la urmtoarea nregistrare. Dac valoarea luinr_nreg este pozitiv, pointer-ul se mut ctre sfritul fiierului. Dac valoarea estenegativ, pointer-ul se mut ctre nceputul fiierului.

    ComandaSET FILTER TOSpecific condiia pe care trebuie s o ndeplineasc nregistrrile din tabelul curentpentru a putea fi accesate.SET FILTER TO []

    expr_L condiia de accesare a nregistrrilor. Numai nregistrrile care satisfac expresia

    logic sunt disponibile i toate comenzile care vor accesa tabelul vor respecta condiiadeclarat n comanda SET FILTER TO. Dac este omis, toate nregistrrile suntaccesibile.

    ComandaLOCATERealizeaz cutarea secvenial ntr-un tabel, a primei nregistrri care ndeplinetecondiiile specificate n expresia logic de cutare.LOCATE FOR [Scope] [WHILE ]

    unde:FOR expr_L _1 este condiia pentru care are loc cutarea secvenial.

    Scope specific domeniul nregistrrilor n care are loc cutarea. Numainregistrrile din interiorul domeniului vor fi evaluate. Clauza poate lua valorileALL, NEXT n, RECORD n, REST. Implicit clauza este ALL (toatenregistrrile). WHILE expr_L_2 specific condiia pentru cutarea nregistrrilor, attavreme ct expr_L_2 este adevrat.

    ComandaCONTINUESe utilizeaz dup o comand LOCATE, pentru a continua cutarea, dup gsirea primeinregistrri care ndeplinete condiiile specificate. Comanda CONTINUE mut pointer-

  • 7/25/2019 Curs 4 SGBD

    13/39

    13

    ul de fiier la urmtoarea nregistrare pentru care expresia logic din comanda LOCATEeste adevrat.

    Exemplul 3: Folosind tabelul Student_fin dorim sa aflm numrul studenilor care suntla specializarea INFORMATICA.

    USE STUDENT_FI NSTORE 0 TO TOTALLOCATE FOR ALLTRI M( UPPER( SPECI ALI ZARE) ) = I NFORMATI CADO WHI LE FOUND( )

    TOTAL=TOTAL+1CONTI NUE

    ENDDO? TOTAL STUDENTI : +LTRI M( STR( TOTAL) )CLOSE DATABASES

    ComandaSEEKCaut ntr-un tabel o nregistrare la prima apariie, a crei cheie de index se potrivete cuexpresia general i mut pointer-ul pe nregistrarea gsit.SEEK [ORDER nr_index | nume_fiier_IDX | [TAG] nume_etichet_index

    [OF nume_fiier_CDX] [ASCENDING | DESCENDING]] [IN | IN]

    unde:expr_gen specific cheia de index pentru care se caut cu comanda SEEK. ORDER nr_index specific numrul fiierului index care conine cheia deindexare. Dac s-au deschis odat cu tabela i fiierele de index, este numrul careindic poziia din lista de fiiere de index.ORDER nume_fiier_IDX -specific numele fiierului de index. ORDER [TAG] nume_etichet_index [OF nume_fiier_CDX] specific oetichet de index dintr-un fiier .CDX care conine cheia de indexare. Numeleetichetei de index (TAG) poate fi dintr-un fiier .CDX structural sau dintr-unfiier .CDX independent (nestructural).[ASCENDING | DESCENDING] specific dac nregistrrile sunt cutate nordine ascendent sau descendent.

    Exemplul 4: S se indexeze fiierul Student_fin dup cmpul NUME i s se cautenregistrrile care ncep cu literele BAR.

    USE STUDENT_FI NI NDEX ON UPPER( NUME) TAG NUMESTORE ' BAR' TO CAUTLSEEK CAUTLI F FOUND( )

    BROWSE FI ELDS NUME, SPECI ALI ZARE, MEDI A FOR UPPER( NUME) =CAUTLELSEWAI T WI NDOW ' NU EXI STA I NREGI STRARE'

  • 7/25/2019 Curs 4 SGBD

    14/39

    14

    ENDI FCLOSE DATABASES

    FunciaFOUND()Retuurneaz valoarea logic adevrat (.T.), dac comenzile CONTINUE, LOCATE sauSEEK s-au executat cu succes.

    FOUND( | )

    Dac argumentele zon_de_lucru, alias_tabel sunt omise, funcia va returna rezultatulpentru fiierul deschis n zona de lucru curent.

    Vizualizarea coninutului unei tabele

    Comanda afieaz informaii (nume cmpuri, date) despre tabelul activ n ferestraprincipal VFP sau ntr-o ferestr definit de utilizator. Sintaxa este

    DISPLAY[[FIELDS] ] [Scope] [FOR ] [WHILE] [NOCONSOLE] [TO PRINTER [PROMPT] | TO FILE ]

    unde:[FIELDS] ]specific cmpurile care vor fi afiate. Dac seomite clauza se vor afia toate cmpurile.Scope domeniul de adresare a nregistrrilor (ALL, NEXT n, RECORD n,REST).FOR -vor fi afiate doar nregistrrile care satisfac condiia logic.WHILE -atta vreme ct condiia este ndeplinit, nregistrrile vorfi afiate.

    Se mai poate utiliza i comanda LIST care are aceleai clauze.

    5. Actualizarea datelor

    Operaia de actualizare const n adugarea de noi nregistrri, modificareanregistrrilor existente, tergerea logic i/sau fizic a nregistrrilor. Operaiile facparte din limbajul de manipulare a datelor (LMD).

    5.1Adgarea de noi nregistrri

    Adugarea se poate face utiliznd comenzile de tip APPEND, prin preluarea datelor dinalte tabele, masive de date i variabile de memorie.

    APPEND [BLANK] [IN nr_zon_de_lucru |alias_tabel]Comanda are ca efect adugarea unei nregistrri vide la sfritul unui tabel.

    APPEND FROM [FIELDS ] [FOR < expr_L>] [TYPE][DELIMITED [WITH | WITH BLANK | WITH TAB]]

    Comanda are ca efect adugarea unei nregistrri preluat din alt tabel, sau dintr-un fiierde tip text, n tabelul current unde:

  • 7/25/2019 Curs 4 SGBD

    15/39

    15

    nume_fiierspecific numele fiierului din care se face adugarea. FIELDS - specific lista cmpurilor n care vor fi adugatedatele. FOR < expr_L> - se va aduga cte o nou nregistrare, din nregistrriletabelului selectat pentru adugare, cele care ndeplinesc condiia dat de expresialogic expr_L.TYPE specific tipul fiierului surs din care se adaug. Se folosete n cazuln care nu este un tabel VFP.DELIMITED fiierul surs din care se adaug datele n tabelul VFP este unfiier de tip ASCII n care fiecare nregistrare se termin cu i (Enteri Line Feed -salt la linie nou). Cmpurile coninute sunt implicit separate prinvirgul, iar cele de tip caracter sunt declarate ntre apostroafe duble.DELIMITED WITH - cmpurile de tip carcater, sunt separate cuun caracter diferit de apostroafe.

    DELIMITED WITH BLANK - cmpurile sunt separate cu spaii n loc devirgul.DELIMITED WITH TAB - cmpurile sunt separate cu cu TAB-uri n loc devirgul.

    APPEND FROM ARRAY [FOR ] [FIELDS |

    FIELDS LIKE | FIELDS EXCEPT ]Comanda are ca efect adugarea unei nregistrri n tabelul curent, pentru fiecare linie demasiv, datele scrise n fiecare cmp corespund coloanelor din masiv. Semnificaia

    parametrilor i a clauzelor este urmtoarea:nume_masiv specific numele masivului care conine datele ce vor fi copiateca nregistrri noi.FOR -specific condiia pentru adugarea nregistrrilor n tabel.Expresia logic trebuie s conin i o condiie pentru un cmp al nregistrrii.nainte de a fi adugat o linie din masiv n tabel sub form de nregistrare, nexpresia logic se verific dac elementele liniei de masiv respect condiia.FIELDS -specific faptul c numai anumite cmpuri (cele dinlist) din noua nregistrare vor fi actualizate cu date din linia masivului.FIELDS LIKE - specific faptul c doar cmpurile care se potrivescablonului vor fi actualizate.

    FIELDS EXCEPT - specific faptul c toate cmpurile vor fiactualizate, cu excepia celor care se ncadreaz n ablon.

    Dac masivul este unidimensional, comanda APPEND FROM ARRAY adaug o singurnregistrare n tabel, coninutul primului element trece n primul cmp al nregistrrii,coninutul celui de al doilea element trece n cel de al doilea cmp etc., cmpurile MEMOi GENERAL sunt ignorate.

    Exemplu comanda:APPEND FROM ARRAY NUME FIELDS LIKE M*, A* EXCEPT NUM*

  • 7/25/2019 Curs 4 SGBD

    16/39

    16

    are ca efect adugarea din masivul NUME, a cmpurilor care ncep cu litera M i A maipuin cele care au primele trei litere NUM. Caracterul asterisc (wildcard) are semnificaiade orice combinaie de caractere.

    Not Utilizarea clauzelor FIELDS LIKE i EXCEPT trebuie s se fac ntr-un tabel alecrui nregistrri au cmpuri care accept valori de tip NULL (pentru a putea fiexceptate de la scriere).

    Exist i comanda invers, cu care putem aduga datele din nregistrarea curent a unuitabel ntr-un masiv:SCATTER [FIELDS ] | [FIELDS LIKE ] | [FIELDS EXCEPT]

    [MEMO] TO ARRAY [BLANK]

    Semnificaia clauzelor este aceai ca i la comanda APPEND FROM ARRAY .. ., clauzaBLANK determin crearea masivului cu elemente vide, care sunt de aceai mrime i tipcu cmpurile din tabel. Clauza MEMO specific existena unui cmp de tip MEMO nlist; implicit cmpurile MEMO sunt ignorate.

    Exemplul 5: S se creeze un masiv cu numele MASIV, s se ncarce cu date vide, deacelai tip i mrime cu cele ale cmpurilor tabelului Student Cod_matr N(3), NumeC(20), Prenume C(40), Specializare C(20), Nota_ex1 N(5,2), Nota_ex2 N(5,2). S seintroduc datele cmpurilor n masiv i s se adauge sub form de nregistrare nou ntabelul Student.

    USE St udent* se deschi de t abel ul St udentSCATTER TO MASI V BLANK* se creaz vect orul MASI V, cu elemente vide i de acelai tip imrime

    * cu cmpur i l e di n t abel ul St udentFOR I =1 TO ALEN( MASI V)@I , 1 SAY FI ELD( I ) GET MASI V( I )* se afieaz numele cmpului i se editeaz elementul I dinmasi vENDFOR

    READ* se ci t esc val or i l e i nt r oduse cu GETI F READKEY( ) ! =12* dac nu s- a apsat tasta APPEND FROM ARRAY MASI V

    * se adaug din elementele masivului o nou nregistrare n tabelENDI FBROWSE* vi zual i zar e tabel St udentCLOSE TABLE* nchi der e t abel St udentCLEAR

  • 7/25/2019 Curs 4 SGBD

    17/39

    17

    APPEND GENERAL FROM DATA [LINK] [CLASS ]Comanda realizeaz importul unui obiect OLE dintr-un fiier i l plaseaz ntr-un cmpde tip general. Semnificaia parametrilor i a clauzelor este urmtoarea:

    nume_cmp_general specific numele cmpului general n care obiectul OLEva fi plasat.FROM -specific numele fiierului care conine obiectul OLE. DATA - expresie de tip caracter care este evaluat i trecut subform de ir de caractere ctre obiectul OLE din cmpul general. Obiectul OLEtrebuie s fie capabil s primesc i s proceseze irul de caractere. De exemplunu poate fi trimis un ir de caractere ctre un obiect grafic creat cu Paint Brush.LINK - creaz o legtur ntre obiectul OLE i fiierul care conine obiectul.Obiectul OLE apare n cmpul general, dar definirea obiectului rmne n fiierulcare-l conine. Dac se omite clauza, obiectul este nglobat n cmpul general.

    CLASS -specific o clas pentru un obiect de tip OLE, alta dectclasa implicit.

    5.2Modificarea nregistrrilor

    ComandaCHANGE afieaz cmpurile unui tabel pentru editare (modificare).CHANGE [FIELDS ][Scope] [FOR ] [WHILE] [FONT [,]] [FREEZE ][NOAPPEND] [NODELETE] [NOEDIT]Semnificaia clauzelor:

    FIELDS - specific cmpurile care vor apare n fereastra deeditare. Scope specific domeniul de afiare a nregistrrilor (ALL, NEXT n,RECORD n, REST). FOR - specific faptul c doar nregistrrile care satisfaccondiia logic dat de expresie_L_1, vor fi afiate n fereastra de editare.WHILE - atta vreme ct expresie_L_2 este adevrat vor fiafiate nregistrrile n fereastra de editare pentru modificare.FONT [,]specific pentru fereastra de editare,tipul de liter i mrimea, cu care vor fi afiate datele.FREEZE -permite ca modificrile s fie fcute doar n cmpulspecificat cu nume_cmp. Celelalte cmpuri vor fi afiate dar nu pot fi editate(modificate).NOAPPEND mpiedic utilizatorul de a aduga noi nregistrri (se blocheazAppend Mode din meniul sistem View sau combinaia de taste +).NODELETE mpiedic marcarea nregistrrilor pentru tergere din interiorulferestrei de editare. Includerea clauzei nu inhib comanda de marcare pentrutergere din interiorul unei proceduri.NOEDIT mpiedic un utilizator s modifice un tabel. Includerea clauzeipermite cutarea sau rsfoirea tabelului dar fr a-l putea modifica (edita).

  • 7/25/2019 Curs 4 SGBD

    18/39

    18

    ComandaBROWSE este una dintre cele mai utilizate comenzi pentru afiarea i editareanregistrrilor dintr-un tabel. Cu ajutorul tastelor sau + se poateface deplasarea n cmpul urmtor sau anterior. Cu tastele sepot face deplasri pe vertical n tabel.

    Apsarea simultan a tastelor: + sau + - ieire cu salvaredin fereastra de BROWSE; +sau ieire fr salvarea modificrilor.

    BROWSE [FIELDS ] [FONT [,]][STYLE ] [FOR ] [FREEZE ] [LOCK

    ][NOAPPEND] [NODELETE] [NOEDIT | NOMODIFY] [VALID ]

    [ERROR ][WHEN ] [WIDTH ] [IN [WINDOW] ]

    unde: FIELDS - specific care cmpuri vor aparea n fereastraBROWSE. Cmpurile vor fi afiate n ordinea specificat n list. FONT [,] specific tipul literei i mrimeautilizate n fereastra BROWSE (ex. FONT Courier,16).STYLE -specific stilul literelor folosite n fereastra BROWSE (B-ngroat, I- italic, U- subliniat). FOR - vor fi afiate numai acele nregistrri care ndeplinesccondiia dat de expresia logic expr_L_1. FREEZE - permite modificri doar ntr-un singur cmp,specificat prin nume_cmp.

    LOCK -specific numrul cmpurilor care pot fi afiate n parteastng, n fereastra BROWSE, fr a fi necesar deplasarea cu TAB-uri saucursorul ferestrei (Scroll Bar).NOAPPEND mpiedic utilizatorul s adauge noi nregistrri (se inhibaciunea tastelor + i opiunea Append new record din meniul Table).NODELETE mpiedic marcarea nregistrrilor pentru tergere n interiorulferestrei BROWSE.NOEDIT | NOMODIFY mpiedic utilizatorul s fac modificri n fereastraBROWSE. VALID [ERROR ] realizeaz o validare la nivel denregistrare. Clauza se execut doar dac se fac modificri i se ncearc trecerea

    la o alt nregistrare. Dac expr_L_2 returneaz valoarea .T. (adevrat)utilizatorul se poate deplasa la urmtoarea nregistrare. n caz contrar, segenereaz un mesaj de eroare.WHEN - se evaluaez condiia dat de expresia logic expr_L_3atunci cnd utilizatorul mut cursorul la o alt nregistrare. Dac expresiareturneaz valoarea .F. (fals) nregistrarea nu mai poate fi modificat (devineread-only).WIDTH -limiteaz numrul de caractere afiate pentrutoate cmpurile din fereastr.IN [WINDOW] -specific fereastra printe n interiorul creia va fi

  • 7/25/2019 Curs 4 SGBD

    19/39

    19

    deschis fereastra BROWSE. Dac fereastra printe este mutat, se va muta ifereastra BROWSE.

    ComandaREPLACE realizeaz actualizarea cmpurilor dintr-o nregistrare.REPLACE WITH [ADDITIVE] [, WITH

    [ADDITIVE]] ... [Scope] [FOR ] [WHILE ] [INnr_zon_de_lucru | alias_tabel]

    unde: WITH [, WITH ]...precizeaz c datele din nume_cmp_1 vor fi nlocuite cu valorile expresieiexpr_1, datele din nume_cmp_2 cu valorile expresiei expr_2 etc. [ADDITIVE] pentru cmpurile de tip memo, adaug valoarea expresiei lasfritul cmpului memo (n continuare). Dac clauza lipsete, atunci cmpul

    memo va fi rescris cu valoarea dat de expresie.Scope specific domeniul nregistrrilor care vor fi nlocuite (NEXT n, ALL,REST, RECORD n). FOR - specific faptul c vor fi nlocuite cmpurile desemnate,doar din nregistrrile pentru care evaluarea expresiei logice expr_L_1 arevaloarea .T. (adevrat).WHILE -specific condiia pentru care atta vreme ct expresialogic are valoarea .T., cmpurile desemnate vor fi modificate. IN nr_zon_de_lucru | alias_tabel specific zona de lucru sau alias-ultabelului, n care nregistrrile vor fi actualizate.

    Exemplul 6: n fiierul Student, s se modifice a treia nregistrare, cmpul Nota_ex1, cuo nou valoare = 7.

    USE StudentREPLACE Nota_ex1 WITH 10 FOR RECNO()=3BROWSECLOSE DATABASE

    ComandaSET SAFETY ON | OFF determin afiarea de ctre sistemul VFP a uneicasete de dialog nainte de a suprascrie un fiier.

    SET SAFETY ON | OFFClauza ON este implicit i determin afiarea unei casete de dialog, pentruconfirmarea de ctre utilizator a suprascrierii fiierului.Clauza OFF mpiedic afiarea casetei de confirmare a suprascrierii.

    5.3tergerea nregistrrilor

    tergerea nregistrrilor se poate face la nivel logic sau fizic.

  • 7/25/2019 Curs 4 SGBD

    20/39

    20

    ComandaDELETE realizeaz tergerea la nivel logic. nregistrrile continu s existe nfiier dar sunt marcate ca fiind terse.DELETE [Scope] [FOR ][WHILE ] [IN |

    ]unde:

    Scope specific domeniul n care se face marcarea pentru tergere anregistrrilor.FOR -specific condiia pentru care vor fi marcate pentru tergereacele nregistrri pentru care expr_L_1 este adevrat.WHILE -vor fi marcate pentru tergere nregistrri, atta vreme ctcondiia expr_L_2 este adevrat.

    FunciaDELETED() returneaz o valoare logic care indic dac nregistrarea curent a

    fost marcat pentru tergere.DELETED ([nr_zon_de_lucru | alias_tabel])

    ComandaRECALL deselecteaz nregistrrile marcate pentru tergere.RECALL [Scope] [FOR ] [WHILE ]

    unde:Scope precizeaz domeniul n care se aplic deselectarea.FOR -doar nregistrrile pentru care expr_L_1 este adevrat (.T.)vor fi deselectate.WHILE - atta vreme ct expr_L_2 este adevrat, nregistrrilevor fi deselectate.

    Comanda PACK face parte din comenzile de tergere la nivel fizic; va terge toatenregistrrile marcate pentru tergere din tabelul curent.

    PACK [MEMO] [DBF]unde:

    MEMO permite tergerea fiierului MEMO ataat tabelului curent, dar nu inregistrrile marcate pentru tergere (fiierul MEMO are acelai nume cu tabeluldar extensia este .FPT).DBF se vor terge nregistrrile marcate pentru tergere din tabelul curent, darnu afecteaz fiierul MEMO.

    Comanda ZAP terge fizic toate nregistrrile din tabel, rmnnd doar structuratabelului.Este echivalent cu comanda DELETE ALL, urmat de comanda PACK, dareste mult mai rapid.

    ZAP [nr_zon_de_lucru | alias_tabel]

    Comanda DELETE FILE terge un fiier de pe disc.DELETE FILE [] [RECYCLE]

    unde:

  • 7/25/2019 Curs 4 SGBD

    21/39

    21

    nume_fiier specific numele fiierului i extensia. Numele fiierului poateconine i caracterul asterisc: DELETE FILE *.BAK va avea ca rezultat tergereatuturor fiierelor cu extensia .BAK de pe disc. Comanda se execut pentrufiierele care nu sunt deschise (active). RECYCLE fiierul nu va fi ters imediat de pe disc ci mutat n directorulRECYCLE BIN din sistemul WINDOWS 9x. Se mai poate folosi i comandaERASE care are aceleai clauze.

    ComandaSET DELETED specific dac sistemul VFP va procesa (terge) nregistrri lemarcate pentru tergere sau dac acestea sunt disponibile pentru a fi utilizate n altecomenzi.

    SET DELETED ON | OFFSemnificaia clauzelor:

    Clauza OFF este implicit. nregistrrile marcate pentru tergere pot fi accesatede alte comenzi care opereaz cu nregistrri. Clauza ON are ca efect ignorarea nregistrrilor marcate pentru tergere, decomenzile care opereaz cu nregistrri.

    ComandaCOPY TO creaz un nou fiier cu acelai coninut ca al tabelului curent.COPY TO [FIELDS | FIELDS LIKE | FIELDS

    EXCEPT ][Scope] [FOR ] [WHILE ] [[WITH] CDX] |[[WITH] PRODUCTION]

    unde:

    nume_fiier specific numele noului fiier care se creaz cu comanda COPYTO.FIELDS -specific n list cmpurile ce vor fi copiate n noulfiier. Dac clauza se omite, atunci toate cmpurile din tabelul activ vor fi copiate.Prin declararea clauzei FIELDS se realizeaz operaia de proiecie (se selecteaznumai anumite cmpuri - coloane - din tabel).FIELDS LIKE -specific cmpurile din tabelul surs care se potrivescunui ablon i vor fi copiate n noul fiier. Se poate folosi i caracterul asterisc (deexemplu comanda COPY TO TABEL1 FIELDS LIKE P*,A* va avea ca efectcopierea n noul fiier a tuturor cmpurilor care ncep cu litera P i A).FIELDS EXCEPT -vor fi copiate toate cmpurile, mai puin cele care

    se ncadreaz n ablonul specificat. Scope specific domeniul din care vor fi selectate nregistrrile care vor ficopiate.FOR - vor fi copiate doar acele nregistrri pentru care evaluareaexpresiei logice exprL_1 are valoarea adevrat (.T.) WHILE - specific condiia pentru care atta vreme ct expresialogic exprL_2 este adevrat, nregistrrile vor fi copiate n noul fiier.

  • 7/25/2019 Curs 4 SGBD

    22/39

    22

    Not Dac se utilizeaz clauzele [Scope], FOR sau WHILE, fr clauza FIELDS, se vaimplementa operatorul relaional de selecie (se aleg doar o parte din nregistrri,cu toate cmpurile). Dac se folosete clauza FIELDS n combinaie cu clauzele[Scope], FOR sau WHILE, va rezulta o operaie compus: proiecie i selecie.

    [WITH] CDX] | [[WITH PRODUCTION] la copiere se va crea i un fiier deindex structural pentru noul tabel, careeste identic cu cel al tabelului surs.Etichetele de index (TAG-urile) vor fi copiate n noul fiier de index structural.Cele dou clauze sunt identice. Clauzele nu se folosesc dac se creaz un fiiercare nu este tabel VFP (extensia .DBF).

    ComandaSET RELATION TO stabilete o legtur ntre dou tabele deschise.

    SET RELATION TO [ INTO | [, INTO < nr_zon_de_lucru > | < alias_tabel >...] [IN < nr_zon_de_lucru > |< alias_tabel >][ADDITIVE]]

    unde:expresie1 specific expresia relaional care stabilete legtura ntre tabelul-printe i tabelul-fiu. Expresia relaional este de obicei cmpul indexat dintabelul-fiu. Indexul pentru tabelul-fiu poate proveni dintr-un fiier simplu deindex (.IDX) sau un fiier de index compus (.CDX). INTO nr_zon_de_lucru | alias_tabel specific numrul zonei de lucru saualias-ul tabelului-fiu.

    IN nr_zon_de_lucru | alias_tabel specific zona de lucru sau alias-ultabelului-printe.ADDITIVE clauza pstreaz toate celelalte relaii stabilite anterior n zona delucru specificat.

    Pentru a stabili o relaie ntre dou tabele trebuie ndeplinite urmtoarele condiii:cele dou tabele ntre care se stabilete relaia tata-fiu trebuie s fie indexatedup aceeai cheie (cmp), care face legtura ntre ele;cele dou tabele trebuie deschise n zone de lucru diferite.

    Tabelele legate printr-o relaie au n general un cmp comun. De exemplu, presupunem

    c avem un tabel CLIENI, care conine informaii despre clieni i are cmpuri pentrunume, adres, i un cod unic al clientului. Un al doilea tabel, FACTURI, conineinformaii despre facturi (numr, cantitate, produse etc.), care va avea de asemenea uncmp pentru codul clientului. Se pot uni astfel informaiile despre clieni cu cele desprefacturi. Comanda SET RELATION leag cele dou tabele prin cmpul comun cod client.Pentru a stabili relaia, tabelul-fiu (FACTURI) trebuie s fie indexat dup cmpul comun.Dup stabilirea relaiei, de cte ori mutm pointer-ul n fiierul CLIENI pe onregistrare, pointer-ul din fiierul FACTURI (fiu) se va muta pe nregistrarea care areacelai cod client corespunztor n fiierul CLIENI.

  • 7/25/2019 Curs 4 SGBD

    23/39

    23

    Exemplul 7:SELECT 2USE CLI ENTI

    SELECT 3USE FACTURII NDEX ON COD_CLI ENT TAG COD_CLI ENT ADDI TI VE&& se indexeaz cmpul COD_CLIENTSELECT 2SET ORDER TO TAG COD_CLI ENT OF FACTURI . CDX I N FACTURI&& se stabilete indexul principal

    SET RELATI ON TO COD_CLI ENT I NTO FACTURI ADDI TI VE&& se stabilete relaia ntre CLIENI, FACTURI

    ComandaRENAME redenumete un fiier.RENAME TO

    unde: nume_fiier1 TO nume_fiier2 specific numele fiierului surs i noulnume. Se va include extensia pentru fiecare fiier, dac nu , implicit se va atribuiextensia .DBF. Comanda RENAME nu se folosete pentru un tabel care aparineunei baze de date. Pentru a schimba numele unui tabel dintr-o baz de date sefolosete comanda RENAME TABLE. Numele fiierului surs i cel al fiieruluinou creat poate cuprinde i caracterul asterisc (RENAME *.PRG TO *.BAK).

    Comanda DISPLAY FILESAfieaz informaii despre un fiier.DYSPLAY FILES [ON ] [LIKE ] [TO PRINTER [PROMPT]] |

    TO FILE ]

    ON - specific calea ctre fiiere.LIKE -specific condiia pentru care vor fi afiate informaii, doar despre

    acele fiiere care se ncadreaz n ablon.TO PRINTER [PROMPT] | TO FILE -direcioneaz informaiile la

    imprimant (cu afiarea unei casete de dialog, clauza PROMPT) sau ntr-un fiier.Informaii identice se pot obine i cu comanda DIR care are aceleai clauze.

    ComandaSET ALTERNATE direcioneaz la ecran sau la imprimant, ieirea rezultat

    din folosirea comenzilor DISPLAY sau LIST.SET ALTERNATE ON | OFF

    sauSET ALTERNATE TO [ [ADDITIVE]]

    unde:ON direcioneaz ieirea ctre un fiier de tip text.OFF clauza implicit, dezactiveaz ieirea ctre un fiier de tip text.TO nume_fiier creaz un fiier de tip text, cu extensia implicit .TXT. ADDITIVE clauz prin care ieirea este adugat la sfritul fiieruluispecificat cu nume_fiier. Dac se omite clauza, coninutul fiierului de ieire estesuprascris.

  • 7/25/2019 Curs 4 SGBD

    24/39

    24

    ComandaCLOSE ALTERNATE nchide un fiier deschis cu comanda SETALTERNATE.Sintaxa comenzii este CLOSE ALTERNATE

    6. Ordonarea datelor

    Datele unui tabel se pot ordona dup un singur criteriu sau dup mai multe(multicriterial). Ordonarea poate fi ascendent dac fiecare cmp dup care se faceordonarea are o valoare mai mare dect cmpul corespunztor din nregistrareaanterioar, sau descendent. Dac ordonarea se face multicriterial, se definete o cheie

    primar, care este principalul criteriu de ordonare i chei secundare. n cazul n care 2 saumai multe nregistrri au aceai valoare pentru cheia principal, se utilizeaz cheilesecundare pentru departajare, n ordinea n care au fost declarate. n VFP ordonarea unuifiier se poate face n dou moduri:

    folosind comanda SORT, prin care se creaz un nou fiier cu nregistrrilesortate dup criteriul ales.folosind metoda indexrii, care const n crearea unui fiier de index, n care sestocheaz ordinea nregistrrilor din tabelul surs.

    Comanda SORT are sintaxa:

    SORT TO ON [/A | /D] [/C] [, [/A |/D] [/C] ...] [ASCENDING | DESCENDING] [Scope] [FOR ] [WHILE

    ] [FIELDS ]unde:

    nume_tabel numele fiierului sortat.nume_cmp_1 specific cmpul din tabelul nesortat asupra cruia se aplicprocedura. Implicit sortarea este ascendent. Nu se pot sorta cmpuri memo saugeneral. Este cheia primar dup care se face sortarea./A, /D, /C specific ordinea. A: ascendent, D: descendent, C: fr a se inecont de litere mari/mici.

    nume_cmp_2 specific un cmp cu rol de cheie secundar. ASCENDING specific o sortare ascendent pentru cmpurile care nu sunturmate de opiunea /D.DESCENDING specific o sortare descendent pentru cmpurile care nu sunturmate de opiunea /A. Scope specific domeniul de sortare (tot fiierul sau doar o parte dinnregistrri) ALL, NEXT n, RECORD n, REST.FOR expresie_1 specific care nregistrri particip la sortare, respectiv aceleapentru care expresie_1 are valoarea TRUEWHILE expresie_2 specific condiia pentru care atta vreme ct au valoareaTRUE, nregistrrile vor fi sortate.

  • 7/25/2019 Curs 4 SGBD

    25/39

    25

    FIELDS lista_cmpurilor specific cmpurile din tabelul original care vor fiincluse n noul fiier sortat. Dac se omite clauza, toate cmpurile din tabeluloriginal vor fi incluse n tabelul sortat.

    Exemplul 8:S se sorteze fiierul ESTUD1, ntr-un nou fiier SESTUD1, dup cmpulNUME, ascedent, fr s se in seama de litere mici/mari, lund doar studenii cu mediapeste 8.00 i cmpurile MATR, NUME, MBAC.

    USE ESTUD1SORT TO SESTUD1 ON NUME/ A/ C FOR MBAC>8. 00 FI ELDS MATR, NUME, MBACUSE SESTUD1BROWSECLOSE DATABASESDELETE FI LE SESTUD1. DBF

    Sortarea este unprocedeu care n cazul tabelelor mari duce la mrirea timpului deexecuie i a spaiului solicitat pe hard disk. Se consider c este mai eficient folosireametodei indexrii.

    Prin metoda indexrii se creaz un fiier de index, care va conine cel pui n un cmpal tabelei de date, sortat dup un criteriu alfabetic, numeric sau cronologic. Fiierul deindex este o sortare virtual a unei tabele, nregistrrile din tabelul de date rmnndnesortate. Fiierul de index conine informaii de localizare a nregistrrilor dintr-o tabel.Fiierele index sunt de 2 tipuri:

    simple au extensia IDX, conin o singur cheie de indexare i deci un singurcriteriu de ordonare.

    compuse au extensia CDX (Compound Index File), n care se stocheaz maimulte criterii de ordonare, fiecare avnd asociat un nume ( TAG - eticheta deindex), corespunztor mai multor chei de indexare.

    Crearea unui fiier de index se face cu comanda:INDEX ON TO TAG[OF] [FOR ]

    [ASCENDENTDESCENDENT] [UNIQUE] [ADDITIVE]unde:

    -expresia indexului care include cmpuri din tabela ce va fi indexat.Tipurile de expresii admise sunt: C, D, N.TO -specific numele fiierului de index care va fi creat.

    TAG OF - permite crearea unui fiier cu mai multeintrri (etichete de index TAG-uri), numrul lor fiind limitat doar de spaiul pehard disk.

    Fiierele cu extensia .CDX pot fi:structurale se deschid automat odat cu deschiderea tabelului de date i

    au acelai nume.nestructurale deschiderea se face indicnd un nume la clauza OF, diferit de cel al tabelei de date.

    FOR -permite ca indexul creat s acioneze ca un filtru asupra tabelei.

  • 7/25/2019 Curs 4 SGBD

    26/39

    26

    ASCENDENTDESCENDENT specific ordinea de sortare n fiierul deindex.UNIQUE pentru valori repetate ale cheii, specific includerea n fiierul deindex numai la prima apariie.ADDITIVE permite crearea unui fiier de index pentru o tabel, chiar dacmai sunt deschise alte fiiere de index.

    Indexarea dup mai multe cmpuri este similar sortrii multiple. Nu se pot faceindexri multiple pe cmpuri cu tipuri diferite, deci trebuie aduse la o form comun (irde caractere).

    ComandaINDEX ON cmp_car + STR(cmp_numeric,nc) + DTOS(cmp_dat) TOpermite indexarea dup 3 cmpuri diferite.

    Semnificaia parametrilor i a clauzelor: STR(cmp_numeric,nc) transform un numr ntr-un ir de caractere. nc numrul maxim de caractere pe care se reprezint cmpul numeric.DTOS(cmp_data) transform o variabil de tip dat n ir de caractere.

    Pentru deschiderea simultan a tabelei de date i a fiierelor de index asociate se folosetecomanda:

    USE INDEX

    Exemplul 9:Presupunem c avem un tabel (STUD) cu urmtoarea structur:

    matricola N(5)nume C(40)data_n Dadresa C(40)

    Vrem s indexm dup cmpul matricola. Tabelul are urmtoarele nregistrri:nr_nreg matricola nume data_n adresa1 215 Aldea I. Dan 22/03/79 Bucureti2 110 Barbu A. Vasile 10/05/80 Craiova3 300 Alexandru F. Ion 13/07/80 Iai4 200 Dinu A. Adrian 25/08/79 Bucureti5 210 Cornea C. Ilie 16/07/80 Ploeti6 250 Ene V. Dan 24/03/80 Bucureti

    Secvena de comenzi:

    CLEARUSE STUDBROWSEI NDEX ON MATRI COLA TO I MATR. I DX

  • 7/25/2019 Curs 4 SGBD

    27/39

    27

    ?? NDX( 1)* afieaz primul fiier index activBROWSE

    * nregistrrile din fiierul de date apar sortate dup cmpulmat r i col a.CLOSE DATABASESCLEAR

    creaz fiierul index IMATR.IDX. Acesta are structura:

    matricola nr_nreg110 2200 4210 5

    215 1250 6300 3

    Exemplul 10:S se indexeze tabelul STUD dup cmpul NUME i s se creeze un fiierstructural STUD.CDX.

    USE STUDI NDEX ON UPPER( NUME) TAG NUME

    BROWSECLOSE DATABASES

    Exemplul 11: S se indexeze tabelul ESTUD1 dup cmpul NUME, s se creeze unfiier nestructural INUM.CDX, ordonat ascendent dup valorile cheii:

    USE ESTUD1I NDEX ON UPPER( NUME) TAG NUME OF I NUM. CDX ASCENDI NGBROWSECLOSE DATABASES

    Exemplul 12:Utiliznd tabelul ESTUD1 s se indexeze tabelul dup o cheie compus

    (NUME, MBAC), fr a permite existena dublurilor, ntr-un fiier de index INM.IDX.Structura tabelului este: MATR N(5), NUME C(40), ADRESA C(30), ANS N(1), ANIFN(4), DATAN N(4), MBAC N(5,2).

    USE ESTUD1I NDEX ON UPPER( NUME) +STR(MBAC, 5) TO I NM. I DX UNI QUEBROWSECLOSE DATABASES

  • 7/25/2019 Curs 4 SGBD

    28/39

    28

    Exemplul 13: S se indexeze tabelul ESTUD1 dup cmpul numeric MATR, ntr-unfiier de index IMATR.IDX, numai pentru nregistrrile care au cmpul MBAC (mediebacalaureat) >8.00:

    USE ESTUD1I NDEX ON MATR TO I MATR. I DX FOR MBAC>8. 0BROWSECLOSE DATABASES

    7. Aplicaie propus spre rezolvare n laborator

    Exerciiul1:Construirea bazelor de date.

    S se construiasc o structur a unei baze de date, folosind SGBD-ul VisualFoxPro, reprezentnd o situaie a creditelor n curs ale unei bnci ctre clienii si.

    Baza de date va avea numele Situatie_credite.DBC , cu urmtoarea componende tabele (fiiere cu extensia .DBF)i relaiile aferente.

    un credit poate fi atribuit mai multor clienti

    un client poate avea mai multe credite in acelasi timp

    Tipuri_crediteCod_credit N1Den_credit C20Dobanda N5,2

    ClientCod_client N3Data_clien DLoc_munca C20Venit_net N5

    Date_personaleCod_client N3Nume C20Prenume C40CNP C13

    CI C8Data_nast DAdresa M

    Stare_financiaraTip_credit N1Cod_client N3Valoare N6Perioada N3

    LegendCmp cheie primarCmpidex fr duplicateCmp index cu dubluri

    m:n

    1:1

    1:n1:n

  • 7/25/2019 Curs 4 SGBD

    29/39

    29

    Fereastra bazei de date va avea urmtorul aspect:

    Pentru a se putea ajunge la cele de mai sus s-au stabilit urmtoarele structuri de indeci:- n tabela tipuri_credite: cod_credit cheie primara (Primary)- n tabela client: cod_client cheie primara (Primary)- n tabela date_personale: cod_client index Candidate- n tabela stare_financiara: cod_client indexRegular

    tip_credit indexRegular

    Exerciiul 2:Restricii de integritate i adugarea direct pe tabel a nregistrrilor.

    a) pe tabela Tipuri_credite.DBF se vor aduga urmtoarele nregistrri:

    b) se vor seta opiuni de tergere i modificare n cascad pentru clienii bncii: deschidem o relaie (una oarecare din cele 3 existente) i stabilim urmtoarele

    restricii de integritate:

  • 7/25/2019 Curs 4 SGBD

    30/39

    30

    Exerciiul3:Adaugarea datelor n tabele prin intermediul formularelor.

    1)Adugarea unui nou client al bncii.Vom crea un formular, Adauga.SCX, dup cele descrise mai jos:

    Proiectare Rulare

    Formularul descrie urmtoarea list de proprieti: AutoCenter: .T. True BackColor: 200,200,255 BorderStyle: 0 No border Caption: Introducere client Height: 300 Name: Form1 Width: 540

    Ca i obiecte ataate pe formular apar o serie de etichete (Label-uri), cum ar fi:Adaugareclient, Cod client,Nume client, Prenume client, etc. cu urmtoarele proprieti:

    Caption: se va trece numele fiecrui obiect Label AutoSize: .T. True BackStyle: 0 Transparent FontBold: .T. True(la titlu) .F. False(la restul) FontSize: 14(la titlu) 11(la restul) Name: Label1,, Label11

  • 7/25/2019 Curs 4 SGBD

    31/39

    31

    Obiectele de introducere (TextBox-uri) pot memora dup caz date de tip ir de caractere,numeric sau dat calendaristic.

    se poate opta pentru o reprezentare explicit a coninutului obiectelor de tipTextBox prin click dreapta pe respectivul obiect Builder se alege pagina1.Format iar n lista ascuns Data Typese alege unul din tipurile dorite pentrureprezentarea datelor (Character,Logical,Date,Numeric)

    toate datele memorate n cele 10 text-box-uri vor fi trimise ctre variabile. Acestlucru se realizeaz prin selectarea fiecrui cmp de text n parte, iar n proprietateaControlSourceatribuindu-se numele dorit. Noi am ales urmtoarea variant: text1v1, text2 v2,, text10 v10.

    Butonul de comand(Command Button) LOCALIZARE:

    SET DEFA TO ""

    CLOSE ALL DATA &&inchide baze de date si tabele de pe locatiarespectiva

    *deschidem baza de date

    OPEN DATA Si t uat i e_cr edi t e

    *vom deschide tabelele in zone de lucru distincte

    SELECT 1USE Ti pur i _cr edi t e

    SELECT 2USE Cl i ent

    SELECT 3USE Date_personal e

    SELECT 4USE St ar e_f i nanci ar a

    WAI T WI ND( "Local i zarea s- a pr odus")

    Butonul de comanda (Command Button) OK:

    SELECT cl i ent &&am deschis zona de lucru in care se gaseste tabela client

    LOCATE FOR cod_cl i ent=v1I F FOUND( )MESSAGEBOX( "Mai est e un cl i ent cu acel asi cod i n baza de date. ")

    ELSEAPPEND BLANKREPLACE cod_cl i ent WI TH v1REPLACE dat a_cl i en WI TH v10REPLACE l oc_munca WI TH v8REPLACE veni t _net WI TH v9

    SELECT dat e_personal eAPPEND BLANKREPLACE cod_cl i ent WI TH v1

  • 7/25/2019 Curs 4 SGBD

    32/39

    32

    REPLACE nume WI TH v2REPLACE pr enume WI TH v3REPLACE cnp WI TH v4

    REPLACE ci WI TH v5REPLACE data_nast WI TH v6REPLACE adr esa WI TH v7

    WAI T WI ND( "Adaugare r eal i zat a") ENDI F

    THI SFORM. RELEASE

    Butonul Cancel:

    WAI T WI ND( "Adaugare nereal i zat a")THI SFORM. RELEASE

    2) Operarea n starea financiara a unui anumit client existent, prin adaugare de noicredite.Vom introduce un nou formular Adauga_stare.SCX, dup cele descrise maijos:

    Proiectare Rulare

    a) Proprietile de baza ale noului formular vor fi aceleai precum cele ale primuluiformular.

    b)Obiectele liste ascunse sunt setate pentru a avea n mod implicit date din tabeleleClient (codul clientului) i Tipuri_credite (tipul creditului). Acestea se realizeaz princlick dreapta pe obiect i selectarea cmpurilor dorite din tabelele cu pricina.

    Obiectul Combo1: Date vor fi preluate din tabela Client, cmpul Cod_client. Acest lucruse face prin click dreapta pe obiect Builder i se va ajunge la:

  • 7/25/2019 Curs 4 SGBD

    33/39

    33

    ControlSource: cd

    Obiectul Combo2: Similar cu primul buton, doar c aici selecia se va face din tabelaTipuri_credite cmpul Cod_creditControlSource: tp

    c) Obiectele cmpuri de introducere date (Text1 i Text4) vor fi setate pentruutizalizare doar n citire (ReadOnly: .T. True).

    Text1, Text2, Text3i Text4vor reine valori numerice.Datele din obiectul Text1vor fi transmise ntr-o variabil, al crei nume i-l punem

    db(ControlSource: db). n mod similar Text2va fi transmis n vl, iar, Text3n pr.

    d)Coninutul butonului de comand :

    SET DEFA TO ""

    CLOSE ALL DATA

    SELECT 1USE t i pur i _credi t e

    SELECT 2USE cl i ent

    SELECT 3USE dat e_per sonal e

    SELECT 4USE st ar e_f i nanci ar a

    e)Coninutul primului buton este:

    SELECT Ti pur i _cr edi t eLOCATE FOR cod_cr edi t =VAL( t p)THI SFORM. t ext1. val ue=dobanda

  • 7/25/2019 Curs 4 SGBD

    34/39

    34

    f) Coninutul celui de-al doilea buton este:

    THI SFORM. t ext4. VALUE=PAYMENT( vl , db/ 12/ 100, pr )

    g)Coninutul butonului este:

    SELECT st are_f i nanci araAPPEND BLANKREPLACE t i p_cr edi t WI TH VAL( t p)REPLACE cod_cl i ent WI TH VAL( cd)REPLACE val oar e WI TH vlREPLACE per i oada WI TH pr

    WAI T WI ND( "Adaugare real i zat a")

    THI SFORM. RELEASE

    h)Coninutul butonului este:

    WAI T WI ND( "Adaugare nereal i zat a")THI SFORM. RELEASE

    Exerciiul 4:Parcurgerea tabelelor.

    Vom introduce un nou formular Parcurgere.SCX, dup cele descrise mai jos:

    Proiectare Rulare

    Proprietile obiectului grid (Grid1) sunt urmtoarele: Din meniul View se alege Data Environment, apoi se d click dreapta pe

    fereastr i se alege opiunea Add, dup care se selecteaz tabela dorit, adic, n cazulnostru Date_personale .

    Name: Grid1 RecordSource: Date_personale

  • 7/25/2019 Curs 4 SGBD

    35/39

    35

    Procedura ataat butonului PRIM:GO TOP

    THI SFORM. GRI D1. SETFOCUS

    Procedura ataat butonului URMATOR:I F ! EOF( )

    SKI PENDI F

    THI SFORM. GRI D1. SETFOCUS

    Procedura ataat butonului ANTERIOR:I F !BOF()

    SKI P - 1ENDI F

    THI SFORM. GRI D1. SETFOCUS

    Procedura ataat butonului ULTIM:GO BOTTOM

    THI SFORM. GRI D1. SETFOCUS

    Procedura ataat butonului IESIRE:THI SFORM. RELEASE

    Exerciiul 5:Cutare i localizaren tabele.

    Vom introduce formularul Cauta.SCX:

    cod numn cazul obiectului Combo1se acioneaz click dreapta, apoi opiuneaBuideri se

    selecteaz codul clientului din tabela Clientdup schema de mai jos:

  • 7/25/2019 Curs 4 SGBD

    36/39

    36

    SELECT dat e_per sonal e

    LOCATE FOR cod_cl i ent =VAL( cod)??SPACE(8) +"Cl i ent ul est e " + ALLTRI M( UPPER( nume) ) + SPACE( 1) +;

    ALLTRI M( UPPER( prenume) )

    Coninutul primului buton :

    SELECT dat e_per sonal e

    LOCATE FOR cod_cl i ent =VAL( cod)MESSAGEBOX( "Cl i ent ul est e " + ALLTRI M( UPPER( nume) ) + SPACE( 1) +;

    ALLTRI M( UPPER( pr enume) ) )

    sau

    Cel de-al doilea buton :

    num=ALLTRI M( UPPER(num) )

    SELECT nume, pr enume;FROM dat e_personal e;WHERE ALLTRI M( UPPER(Nume) ) LI KE "%"+num+"%"

    Exerciiul 6:Aranjarea datelor n tabele prin sortare i indexare.

    Se va construi un formular Aranjare.SCX, avnd nalimea setat la 200.

  • 7/25/2019 Curs 4 SGBD

    37/39

    37

    Modul proiectare Modul rulare

    Controlul listei ascunse are urmtoarea proprietate:

    Butonul de comand are urmtoarea procedur deeveniment Click:

    DO CASECASE THI SFORM. Combo1. VALUE="Nume si pr enume" AND;

    THI SFORM. opt i ongr oup1. VALUE=1SELECT Dat e_personal eSORT TO a ON nume / A, pr enume / A

    CASE THI SFORM. Combo1. VALUE="Nume si pr enume" AND;THI SFORM. opt i ongr oup1. VALUE=2

    SELECT Dat e_personal eSORT TO a ON nume / D, pr enume / D

    CASE THI SFORM. Combo1. VALUE="Varst a" AND;THI SFORM. opt i ongr oup1. VALUE=1

    SELECT Dat e_per sonal eSORT TO a ON dat a_nast / A

    CASE THI SFORM. Combo1. VALUE="Varst a" AND;THI SFORM. opt i ongr oup1. VALUE=2

    SELECT Dat e_personal eSORT TO a ON dat a_nast / D

    ENDCASE

    USE aBROWMESSAGEBOX( "Apasa butonul LOCALI ZARE")CLOSE ALL DATA

  • 7/25/2019 Curs 4 SGBD

    38/39

    38

    Label3

    Butonul de comand are urmtoarea procedur de

    eveniment Click:DO CASE

    CASE THI SFORM. combo1. VALUE="Nume si pr enume" AND;THI SFORM. opt i ongroup1. VALUE=1

    SELECT Date_personal eI NDEX ON nume+pr enume TAG a

    CASE THI SFORM. combo1. VALUE="Nume si pr enume" AND;THI SFORM. opt i ongroup1. VALUE=2

    SELECT Date_personal eI NDEX ON nume+pr enume DESC TAG a

    CASE THI SFORM. combo1. VALUE="Varst a" AND;THI SFORM. opt i ongroup1. VALUE=1

    SELECT Date_personal eI NDEX ON data_nast TO a

    CASE THI SFORM. combo1. VALUE="Varst a" AND;THI SFORM. opt i ongroup1. VALUE=2

    SELECT Date_personal eI NDEX ON dat a_nast DESC TAG a

    ENDCASE

    BROW

    Exerciiul 7:tergerea nregistrrilor.

    Vom introduce un formular cu numele Sterge.SCX.

    Obiectul Combo1:- ControlSource: cod- Name: Combo1- datele sunt preluate din cmpul Cod_client, tabela Client

  • 7/25/2019 Curs 4 SGBD

    39/39

    Butonul de comand :

    SELECT Dat e_personal eLOCATE FOR cod_cl i ent =VAL( cod)THI SFORM. l abel 3. CAPTI ON="Ster gem cl i ent ul : "+SPACE(2) ;

    +ALLTRI M( STR( cod_cl i ent ) ) +SPACE(2) ;+ALLTRI M( nume) +SPACE( 2) +ALLTRI M( pr enume)

    SELECT Cl i entLOCATE FOR cod_cl i ent =VAL( cod)DELETE

    Butonul de comand :

    MESSAGEBOX( "St ergere r eal i zat a. " )

    THI SFORM. RELEASE

    SELECT cl i entPACKSELECT dat e_per sonal ePACKSELECT st are_f i nanci araPACK

    Butonul de comand :

    MESSAGEBOX( "St erger e anul ata. " )

    SELECT Cl i entRECALLSELECT Dat e_personal eRECALLSELECT St are_f i nanci araRECALL ALL

    THI SFORM. RELEASE