FoxPro 2.6 sub Windows – Intrarea şi ieşirea din FoxProW.

Elemente de interfaţă

1. INTRAREA ŞI IEŞIREA DIN FoxProW. MEDIUL FoxProW. ELEMENTE DE INTERFAŢĂ Pentru a porni FoxProW sub Windows este necesar ca anterior să fi fost instalat atât sistemul Windows, cât şi FoxProW-ul sub acest sistem. Presupunând că aceste operaţii s-au executat, pornirea FoxProW-ului se poate face astfel: - prin dublu clic pe icoana corespunzătoare acestuia din desk-top (vulpea), dacă aceasta există în desk-top; - alegând Start, Programs, FoxProW for Windows, dacă icoana FoxProW-ului nu se află în desk-top. Iniţial, fereastra asociată FoxProW-ului arată ca în figura de mai jos:

În partea superioară a acesteia, imediat sub titlu, se află meniul sistem al FoxProW-ului, prin care utilizatorul poate introduce comenzile sale în mod interactiv. Fereastra de comenzi Command permite utilizatorului să introducă comenzi FoxProW în vederea execuţiei immediate. Aceată fereastră poate fi manipulată ca orice altă fereastră Windows. Ecranul FoxProW reprezintă zona de afişare a informaţiilor, ca rezultat al comenzilor transmise de utilizator. Pentru a vedea tot ecranul, inclusiv porţiunea de sub fereastra de comenzi, se poate ascunde această fereastră, se poate transforma într-o icoană sau se poate închide, reafişarea sa realizându-se prin alegerea opţiunii Command din submeniul Window. Alături de aceste trei elemente ale interfeţei FoxProW-ului, care sunt vizibile pe ecran imediat după pornirea acestui SGBD, comunicarea dintre utilizator şi sistem mai implică şi alte elemente, cum ar fi ferestrele sistem şi obiectele de control. Ferestrele sistem sunt deschise de FoxProW ca urmare a unor comenzi ale utilizatorului. Ele pot conţine mesaje, obiecte de control şi chiar meniuri asociate şi sunt manipulate ca oricare altă fereastră Windows. Comunicarea propriu-zisă dintre utilizator şi sistem se realizează prin intermediul obiectelor de control, care pot fi folosite la:
2

FoxPro 2.6 sub Windows – Intrarea şi ieşirea din FoxProW. Elemente de interfaţă

introducerea de diferite texte, cu diferite semnificaţii (cum ar fi nume de fişiere, conţinutul unor câmpuri, diferite valori numerice etc.); • selectarea unor opţiuni din mai multe variante posibile; • activarea sau dezactivarea unor comutatoare, opţiuni; Obiectele de control sunt de următoarele tipuri: • câmpuri, regiuni, zone de editare, însoţite eventual de butoane de incrementare/decrementare (pentru câmpurile numerice); • liste; • liste ascunse; • comutatoare; • declanşatoare; • butoane radio. Pentru exemplificarea modului de lucru cu obiectele de control ale interfeţei FoxProW, vom folosi două ferestre sistem, fereastra Open şi fereastra New, afişate pe ecran ca urmare a alegerii opţiunilor Open şi respectiv New din submeniul File.

Fereastra Open este folosită pentru specificarea numelui unui fişier ce urmează a fi deschis. Ea conţine următoarele obiecte de control: • un câmp de editare, File Name, în care poate fi introdus, caracter cu caracter, de la tastatură, numele fişierului ce urmează a fi deschis; • două liste, una sub câmpul de editare, iar cealaltă în partea dreaptă a ferestrei (numită Directory), care permit selectarea unui fişier şi respectiv a unui director dintr-o mulţime finită, afişată total sau parţial pe ecran;
3

FoxPro 2.6 sub Windows – Intrarea şi ieşirea din FoxProW. Elemente de interfaţă

două liste ascunse, numite List Files of Type şi Drive, prin intermediul cărora se permite selectarea tipului de fişiere, respectiv a unităţii de disc; diferenţa dintre listele simple şi cele ascunse este aceea că la cele de al doilea tip, în starea neselectat, este afişat pe ecran doar elementul curent, restul listei fiind afişat numai la trecerea în starea selectat, când se alege un alt element; în cazul listelor simple starea neselectat şi cea selectat nu diferă din punctul de vedere al numărului de elemente afişate pe ecran la un moment dat; • patru comutatoare, numite All Files, Read Only, Environment şi Exclusive fiecare dintre acestea indicând prezenţa sau absenţa unei anumite proprietăţi, simbolizată prin numele comutatorului respectiv; prezenţa proprietăţii este indicată printr-un X în interiorul pătrăţelului asociat comutatorului (starea activat), iar în lipsa acesteia pătrăţelul va fi gol (starea dezactivat); • trei declanşatoare, New, Open şi Cancel, în partea dreaptă a ferestrei. a căror acţionare determină declanşarea unor anumite operaţii, sugerate prin numele fiecăruia în parte. Fereastra New, folosită în scopul creării unui nou fişier, de un anumit tip, conţine următoarele obiecte de control: • un grup de butoane radio, numit File Type, a căror principală caracteristică este aceea că permite selectarea unei anumite variante din mai multe posibile; activarea unuia dintre butoanele radio ale unui grup determină dezactivarea vechiului buton radio activat; • două declanşatoare, numite New şi Cancel.

Editorul de texte Apare adeseori necesitatea introducerii sau modificării conţinutului unui fişier pe disc, în acest scop folosindu-se editorul de texte încorporat FoxProW-ului. Textul se introduce caracter cu caracter, de la tastatură, la sfârşitul fiecărei linii tastându-se Enter. Pentru mutarea cursorului în cadrul ferestrei de editare se folosesc tastele sau combinaţiile de taste următoare: Tasta sau combinaţia de taste Efectul Un caracter la dreapta → Un caracter la stânga ← O linie în sus ↑ O linie în jos ↓ Page Up O pagină de text în sus Page Down O pagină de text în jos Home La începutul liniei End La sfârşitul liniei Un cuvânt la dreapta Ctrl + → Un cuvânt la stânga Ctrl + ← Ctrl + Home La începutul textului Ctrl + End La sfârşitul textului Poziţionarea cursorului pe o anumită linie se poate face şi prin intermediul opţiunii Goto Line, la alegerea căreia este deschisă o fereastră:

4

menţinând butonul stâng apăsat. de asemenea. şterge cuvântul deasupra căruia se află cursorul. Selectarea textului cu ajutorul mouse-ului se face prin deplasarea cursorului acestuia peste textul de selectat.6 sub Windows – Intrarea şi ieşirea din FoxProW. Pentru selectarea în întregime a textului dintr-o fereastră de editare se poate folosi opţiunea Select All din meniul Edit. în cadrul textului editat şi. 5 . nu şi pe cele care intră în componenţa unor cuvinte compuse. nu se mai face deosebirea între literele mari şi mici în timpul căutării. Selectarea unei porţiuni de text urmată de alegerea opţiunii Clear din submeniul Edit. ştergerea textului selectat.  Delete. Există. Pentru găsirea automată a unui cuvânt. Căutarea unei secvenţe de text în cadrul textului aflat în editare se realizează astfel: • se alege opţiunea Find din submeniul Edit.  Dacă există text selectat. şterge caracterul imediat din stânga cursorului. ţinând apăsată tasta Shift şi deplasând cursorul în altă poziţie. se va şterge acest text. înlocuirea sa cu o altă secvenţă de text. şterge caracterul imediat din dreapta cursorului. determină căutarea cuvintelor independente. deschizându-se fereastra cu acelaşi nume: • • • în câmpul de editare Look For se introduce secvenţa de text ce urmează a ficăutată în textul sursă. o porţiune de text poate fi tratată ca un tot unitar. Match Whole Word: la activare. de asemenea. frază. posibilitatea copierii sau mutării unei porţiuni de text în altă poziţie prin folosirea opţiunilor Cut. Astfel. determină. Wrap Around: după ce căutarea ajunge la sfârşitul fişierului editat. Copy şi Paste ale submeniului Edit. se folosesc opţiunile Find. Selectarea textului ce alcătuieşte blocul se face cu ajutorul tastaturii. până la poziţia curentă a cursorului. Find Again. Replace and Find Again şi Replace All ale submeniului Edit. se trece automat la parcurgerea textului de la început. Elemente de interfaţă în care se va specifica numărul liniei pe care se va poziţiona cursorul (prin intermediul câmpului de editare Line Number şi a declanşatorului Goto). ştearsă prin combinaţii simple de taste. propoziţie. eventual. Ştergerea unei porţiuni de text se face prin:  Backspace.FoxPro 2. copiată. O facilitate importantă a editorului FoxProW este posibilitatea lucrului cu blocuri de text. mutată. la acţionarea uneia din tastele de mai sus. adică poate fi înlocuită.  Ctrl + Backspace. acţionarea declanşatorului Find determină căutarea textului specificat şi selectarea acestuia în cazul în care este găsit. declanşatoarele din secţiunea Options au următoarele semnificaţii: Ignore Case: în cazul selectării acestuia.

Structura bazelor de date Pentru a putea fi utilizată. fişiere index. ecrane. lungimea şi. Exemplu de manipulare a bazelor de date prin intermediul meniului sistem Bazele de date reprezintă acumulări de date. • reorganizarea bazei de date. cu o anumită organizare. mecanismul de manipulare a bazelor de date în FoxProW. înainte de prima utilizare. al ordinii datelor memorate etc. valoare. distingem: • adăugarea de noi date la baza de date. Operaţii.lungimea unei înregistrări etc. Această operaţie presupune crearea fişierului care va memora baza de date şi introducerea în acesta a unor informaţii specifice bazei. BAZE DE DATE. • consultarea bazei de date. Elemente de interfaţă 2. număr de înregistrări. tipul lor. Table Structure Înainte de prezentarea modului de lucru cu această fereastră. pe baza datelor memorate în bazele de date. MENIURI 2. În mare. meniuri. în vederea obţinerii operative a unor informaţii utile despre subiectul respectiv. adică a structurii acesteia. vom crea o bază de date în care se va ţine evidenţa stocurilor de materiale dintr-un depozit. adică extragerea unor informaţii. filtre. Comenzile pot fi date fie prin intermediul meniului sistem al FoxProW. • după ce baza de date a fost deschisă. Din grupul de butoane radio din partea stângă se selectează butonul radio Table/DBF. cât şi specificarea unor parametri referitori la organizarea bazei. Fiecare înregistrare a bazei de date va avea următorul conţinut: cod material. etichete. unitate de măsură. Toate aceste operaţii asupra bazelor de date se execută la comanda utilizatorului. operaţie care va determina deschiderea unei noi ferestre. indicând că fişierul care se va crea va fi o bază de date (se mai puteau crea programe. aceasta determinând deschiderea ferestrei cu acelaşi nume. • în final. denumire. fie folosind comenzile şi funcţiile limbajului de programare. rapoarte. baza de date se închide. referitoare la un anumit subiect. Pentru a crea această bază de date se alege opţiunea New a submeniului File. este următorul: • înainte de folosirea unei baze de date.FoxPro 2. să stabilim structura exactă a bazei de date. informaţii suplimentare.6 sub Windows – Intrarea şi ieşirea din FoxProW. urmează efectuarea diferitelor operaţii asupra datelor memorate în baza de date sau asupra bazei de date în ansamblul ei.1 Modul de lucru cu bazele de date. o bază de date trebuie mai întâi creată pe suportul de memorare extern. • modificarea sau ştergerea unor date introduse anterior. adică denumirea câmpurilor. proiecte. aceasta trebuie creată pe dispozitivul de memorare extern (disc magnetic). Pentru exemplificare.2 Crearea bazelor de date. necesită condiţii speciale de depozitare. acolo unde este 6 . din punctul de vedere al structurii acesteia. Operaţiile care se pot efectua asupra datelor dintr-o bază de date. cantitate. cum ar fi structură. Crearea unei baze de date presupune atât crearea fişierului care va memora datele. data ultimei intrări/ieşiri. fişiere ASCII. • prima operaţie în lucrul cu o bază de date creată anterior este deschiderea ei. Operaţia de creare a unei baze de date se realizează o singură dată. folosind restul de butoane radio ale grupului). Urmează acţionarea butonului New. 2.

aceeaşi operaţie se realizează cu ajutorul combinaţiilor Ctrl + ↑ şi Ctrl + ↓.imagine coloana a cincea.numeric Float . se poate folosi atât ca un câmp de editare (deci se poate tasta un număr în ea). cu butonul stâng al mouse-ului apăsat. Denumire câmp cod denumire cantitate unit_mas valoare ultim_misc cond_spec informatii Tip câmp Lungime Zecimale Character 8 Character 30 Numeric 10 2 Character 3 Numeric 10 2 Date 8 Logical 1 Memo 10 Această structură stabilită pentru baza de date pe care o vom denumi MATERIAL. în caractere.…).DBF. booleană Memo . pentru mutarea unui câmp în altă poziţie se acţionează butonul din această coloană şi. este utilizată la specificarea tipului fiecărui câmp în parte. numărul de zecimale. a patra coloană.şir de caractere Numeric . care nu poartă nici-un nume. va indica lungimea câmpurilor.dată calendaristică Logical . Width. se foloseşte la stabilirea unor criterii de ordonare a datelor din baza de date. este folosită la schimbarea ordinii de apariţie a câmpurilor în baza de date.FoxPro 2. Table Structure: • • • • • Semnificaţia celor şase coloane care apar în această listă este următoarea: prima coloană.6 sub Windows – Intrarea şi ieşirea din FoxProW. cantitate. denumire. cea de-a doua coloană.numeric Date .logic. Name.general Picture . lungimea câmpurilor numerice include şi 7 . se specifică denumirea câmpurilor bazei de date (cod. după care se eliberează butonul mouse-ului.memo General . prin intermediul tastaturii. Elemente de interfaţă cazul. ea conţine liste ascunse cu următoarele elemente: Character . va fi introdusă în fereastra de specificare a structurii bazei de date. cât şi prin intermediul butoanelor de incrementare/decrementare. se mută câmpul odată cu cursorul în noua poziţie. în cea de-a treia coloană. Tag. Type.

Logical (1 caracter). • acţionarea declanşatorului New determină pornirea operaţiei de creare a unei baze de date cu numele specificat (care nu trebuie să existe anterior pe disc). Celelalte patru butoane corespund diferitelor grupuri de opţiuni ale mediului FowProW ce sunt controlate prin intermediul acestei ferestre. În secţiune Field există două declanşatoare: Insert – inserează un nou câm deasupra câmpului curent şi Delete – şterge câmpul curent. unele tipuri de câmpuri au lungimi predefinite: Date (8 caractere). în care se va specifica numele bazei de date care se deschide. • coloana Dec se foloseşte în cazul câmpurilor numerice pentru a preciza numărul de zecimale. 2. Controlul zonelor de lucru şi al bazelor de date deschise în acestea se realizează în FoxProW prin fereastra View. • după specificarea numelui se acţionează declanşatorul Open pentru deschiderea bazei de date respective. directorul în care se va găsi acest fişier şi discul pe care se va afla. Lista Work Areas (zone de lucru) conţine ca elemente cele 255 zone de lucru. se va deschide fereastra Save As în care se vor indica numele fişierului în care se va depune această bază de date (MATERIAL. Dacă a fost acţionat butonul OK.FoxPro 2. de sus în jos. sau se poate selecta din lista afişată sub acest câmp. General (10 caractere).3 Deschiderea şi închiderea bazelor de date. Elemente de interfaţă punctul zecimal în numărul caracterelor. Memo (10 caractere).6 sub Windows – Intrarea şi ieşirea din FoxProW. în modul de lucru View. fereastră deschisă la alegerea opţiunii View a submeniului Window: Selectarea modului de lucru View al acestei ferestre se realizează prin acţionarea primului buton. una singură dintre acestea fiind accesibilă la un moment dat. Pentru a deschide o bază de date în zona de lucru curentă se acţionează declanşatorul Open care permite deschiderea ferestrei cu acelaşi nume. de pe discul specificat prin lista ascunsă Drive:. deschiderea acesteia se realizează astfel: • se alege opţiunea Open a submeniului File pentru deschiderea ferestrei cu acelaşi nume. • numele bazei de date care se deschide se poate introduce manual în câmpul de editare File Name. care nu lucrează decât cu o singură bază de date. în această listă sunt afişate toate fişierele din directorul selectat prin lista Directory. de tipul dat de elementul selectat din lista ascunsă List Files of Type:. În această 8 . După terminarea lucrului în această fereastră se acţionează butonul OK pentru continuare sau Cancel pentru renunţarea la operaţia de creare a bazei de date. din grupul de patru cinci butoane din partea stângă-sus a ferestrei. cea care este selectată curent în această listă şi care se numeşte “zona de lucru curentă”. Zone de lucru Pentru rezolvarea unor probleme simple.DBF).

iar înregistrările sunt linii. Adăugarea de înregistrări la o bază de date este o operaţie curentă. Pentru aceasta se alege opţiunea Browse a submeniului Database. ea realizânduse ori de câte ori se încarcă noi date în aceasta. iar înregistrările. deschizându-se o fereastră în care va fi afişat spre modificare conţinutul bazei de date. Deplasarea din câmp în câmp se face cu ajutorul tastelor Tab (la dreapta) şi Shift + 9 . 2. fiind separate printr-o linie punctată. Mai întâi trebuie deschisă baza de date la care se adaugă noi înregistrări. aceasta însemnând că nu putem adăuga. după care se acţionează declanşatorul Close. • câmpurile sunt puse unele sub altele. alias-ul este chiar numele bazei de date (al fişierului asociat acesteia. se acţionează combinaţia Ctrl + End care închide fereastra de adăugare şi salvează noile înregistrări adăugate sau se închide simplu fereastra de adăugare ca oricare altă fereastră Windows. alias-ul bazei de date este afişat în lista Work Areas. la un moment dat. Următoarele baze de date care se doresc a fi deschise trebuie să folosească alte zone de lucru. După terminarea lucrului cu o bază de date.FoxPro 2. după care se procedează ca la prima bază de date. La crearea unei baze de date. folosit la referirea bazei de date respective. cu ajutorul combinaţiei Ctrl + Enter. câmpurile logice se completează cu “F” pentru fals şi “T” pentru adevărat. numit “alias”. De obicei. pe ecran fiind deschisă o fereastră de adăugare. După deschiderea bazei de date în zona de lucru dorită. • se completează fiecare câmp în parte.5 Modificarea şi vizualizarea conţinutului unei baze de date. Mai întâi se selectează zona de lucru care conţine baza de date. după care se procedează astfel: • se alege opţiunea Append a submeniului Record. • după completarea ultimului câmp al ultimei înregistrări care se doreşte a fi adăugată la baza de date. Închiderea bazei de date presupune eliberarea zonei de lucru în care a fost deschisă aceasta. La deschidere. Elemente de interfaţă fereastră se alege baza de date care urmează a fi deschisă. modifica sau şterge decât câte o înregistrare completă.6 sub Windows – Intrarea şi ieşirea din FoxProW. de asemenea unele sub altele. Pentru aceasta se alege opţiunea View a submeniului Window. sub formă de tabel: câmpurile sunt coloane. acesteia i se atribuie un nume simbolic. în locul numărului care indică zona de lucru. aceasta trebuie închisă. fără extensie). completarea câmpurilor memo (de exemplu informatii din baza de date MATERIAL. după introducerea întregului conţinut. pentru a deschide încă o bază de date se schimbă mai întâi zona de lucru curentă. 2. Odată cu deschiderea unei baze de date într-o zonă de lucru.4 Adăugarea de noi date într-o bază de date Lucrul cu datele din bazele de date se face la nivel de înregistrare. acestea pot fi vizualizate şi modificate. aceasta este automat deschisă în zona de lucru curentă.DBF) se face în ferestre distincte deschise prin acţionarea combinaţiei Ctrl + Page Down şi închise. Fereastra Browse Odată introduse date într-o bază de date. înregistrare după înregistrare. fereastra View poate fi închisă ca oricare altă fereastră Windows. Deci. prin alegerea acesteia din lista Work Areas.

Acest mod de afişare. Valorile care vor fi introduse în câmpul selectat vor fi precizate prin intermediul declanşatorului With… sau prin câmpul de editare din dreapta acestuia. la selectarea butonului All. în cazul selectării butonului radio Record (n precizat în câmpul de editare alăturat butonului radio). În această fereastră pot fi modificate fontul folosit. • afişarea sau inhibarea afişării liniilor despărţitoare dintre câmpuri şi înregistrari. Modificarea automată a conţinutului unei baze de date Pe lângă modificarea manuală a conţinutului unei baze de date. deschisă la activarea comutatorului cu acelaşi nume. For şi While permit stabilirea înregistrărilor afectate de această comandă. când se selectează butonul radio Next (n fiind introdus în câmpul de editare din dreapta acestui buton radio). Închiderea ferestrei Browse se realizează fie prin combinaţia Ctrl + End. inclusiv cea curentă. • următoarele n înregistrări. Elemente de interfaţă Tab (la stânga). există posibilitatea modificării valorilor anumitor câmpuri. Comutatoarele Scope.FoxPro 2. Vor fi modificate doar acele înregistrări selectate de sistem pe baza unui set de condiţii stabilite de utilizator. de la cea curentă inclusiv şi până la ultima. din baza de date specificată prin lista ascunsă From Table. folosind tastele ↑ şi ↓. la meniul sistem al FoxProW este adăugat un nou submeniu (numit de asemenea Browse) prin care se pot efectua diferite operaţii din această fereastră cum ar fi: • schimbarea modului de afişare a cămpurilor (unul lângă altul sau unul sub altul). sub forma unui tabel. în care atât înregistrările cât şi câmpurile sunt afişate unele sub altele.6 sub Windows – Intrarea şi ieşirea din FoxProW. calculate automat de FoxProW pe baza unor expresii furnizate de utilizator. Stabilirea înregistrărilor de modificat Există multe comenzi FoxProW care acţionează asupra mai multor înregistrări ale bazelor de date. Afişarea sau inhibarea afişarii liniilor separatoare ale câmpurilor şi înregistrărilor în cadrul ferestrei Browse se face prin intermediul opţiunii Grid a submeniului Browse. a ordinii de afişare a acestora. Modul de afişare în interiorul ferestrei Browse este stabilit în fereastra Font deschisă la alegerea opţiunii Font a submeniului Browse. • schimbarea fontului de afişare a textului în fereastra Browse etc. se numeşte mod Browse. • schimbarea dimensiunilor de afişare a câmpurilor. iar din înregistrare în înregistrare. stilul şi dimensiunea acestuia. permite specificarea domeniului înregistrărilor care vor fi modificate astfel: • toate înregistrările. For (pentru…) şi While (atâta timp cât…). fie prin metode specifice ferestrelor platformei grafice Windows. Pentru aceasta. respectiv Browse din submeniul Browse al meniului sistem. Odată deschisă fereastra Browse. În partea stăn-gă sus se află o listă din care se va alege câmpul care se modifică. stabilirea acestora făcându-se pe baza clauzelor Scope (domeniu). Fereastra Scope. • înregistrarea cu numărul n. se alege opţiunea Replace a submeniului Record pentru a fi deschisă fereastra cu acelaşi nume. La deschiderea ferestrei Browse pentru modificarea sau vizualizarea conţinutului unei baze de date. Un alt mod de afişare este cel numit Change. • restul de înregistrări. câmpurile sunt afişate unele lângă altele. Trecerea de la un mod de afişare la altul se face prin alegerea opţiunii Change şi. la selectarea 10 . iar înregistrările unele sub altele.

cât şi a altor expresii FoxProW (de orice tip).FoxPro 2. indiferent de valoarea expresiei logice asociate clauzei. în cazul expresiilor logice asociate clauzelor cu aceleaşi nume. numit Constructorul de expresii (Expression Builder). Logical şi Date conţin funcţii FoxProW de tip şir de caractere. Prima înregistrare care nu mai respectă această condiţie determină oprirea procesului de selectare. din care se aleg variabile folosite în expresie. sau prin activarea altor obiecte de control. asociată acestui utilitar. sau While Clause etc.). Alegerea unei funcţii din aceste liste determină introducerea automată în regiunea de editare Expression. Constructorul de expresii Pentru alcătuirea expresiilor logice asociate clauzelor For şi While. For şi While acţionează cumulativ.). următoarele înregistrări ale bazei de date nefiind selectate. Exemplu: condiţia: 11 . Expresia construită va fi introdusă în regiunea de editare Expression (sau For Clause. Deschiderea ferestrei Expression Builder. din care se aleg câmpuri ale bazei de date specificate prin lista ascunsă From Table şi în cazul listei Variables. fie asistat de FoxProW prin intermediul celorlalte obiecte de control ale ferestrei. fie manual de către utilizator (caracter cu caracter). Vor fi selectate acele înregistrări pentru care expresia clauzei este evaluată la adevărat (. fiecare împunându-şi propriile restricţii la selectarea înregistrărilor. Acelaşi mod de lucru se foloseşte în cazul listei Fields. Vor fi selectate înregistrări din baza de date atâta timp cât condiţia clauzei este îndeplinită (expresia logică are valoarea adevărat). Math. se poate folosi un utilitar încorporat al mediului. se face prin activarea comutatoarelor For şi While. la poziţia curentă a cursorului. Acţionarea declanşatorului Verify determină testarea corectitudinii expresiei specificate şi afişarea unui mesaj de eroare în cazul când expresia respectivă nu este corectă. logic şi respectiv dată calendaristică. numeric. Dintre înregistrările selectate prin clauza Scope vor fi afectate numai acelea care respectă condiţiile clauzelor For şi While. Elemente de interfaţă butonului radio Rest.T. Condiţia clauzei For va fi specificată cu ajutorul Constructorului de expresii pornit la activarea comutatorului For. Listele ascunse String. a funcţiei respective (în forma de prezentare a sintaxei funcţiei respective).6 sub Windows – Intrarea şi ieşirea din FoxProW. Deci clauzele Scope. Clauza While are de asemenea asociată o expresie logică.

În FoxProW există două tipuri de ştergere: ♦ ştergerea logică – prin care înregistrările nu sunt şterse propriu-zis din bazele de date. • cu ajutorul Constructorului de expresii pornit la acţionarea declanşatorului With… se introduce expresia de calcul al noilor cantităţi: material. 2. 12 . • din lista ascunsă String se alege SUBSTR (. 1) == “A” se introduce astfel: • se deschide fereastra Expression Builder prin activarea comutatorului For. Datorită faptului că ştergerea logică nu elimină fizic înregistrările.). prin înlăturarea marcatorului de ştergere al acestora. • se stabilesc condiţiile de selecţie a înregistrărilor: Scope: All For: SUBSTR (material. Pe lângă aceste două tipuri de ştergeri. Accesul la datele din bazele de date Ca şi celelalte tipuri de prelucrări aplicate asupra datelor din bazele de date şi ştergerea lucrează tot la nivel de înregistrare. • din lista Fields se alege câmpul cod (material. să se dubleze cantitatea de bere (cod: “bere”) de orice tip: • se alege opţiunea Replace a submeniului Record pentru deschiderea ferestrei asociate acesteia.FoxPro 2.).DBF deschisă în zona de lucru curentă. 1.cod. numită “accesare a câmpurilor”.6 Ştergerea datelor din bazele de date. Un alt tip de ştergere logică a unor baze din bazele de date se poate realiza la nivel de câmpuri. 1. fără posibilitatea de refacere.cantitate*2 • se acţionează declanşatorul Replace. există posibilitatea de refacere a înregistrărilor şterse logic din baza de date. 1. Această tehnică. după care se mută cursorul la sfârşitul liniei: SUBSTR (material. FoxProW mai permite un al treilea mod de ştergere a unor înregistrări. restul de câmpuri care nu aparţin acestei liste fiind invizibile pentru utilizator (ca şi când nu ar exista). • se completează cu 1 celelalte poziţii ale funcţiei SUBSTR(. Având baza de date MATERIAL. testează marcatorul de ştergere al acesteia şi. • se alege elementul “text” din lista ascunsă String şi între ghilimele se introduce caracterul “A”: SUBSTR (material.. consideră că înregistrarea nu există în baza de date respectivă.cod. 1) == “A” • se acţionează declanşatorul Verify pentru verificare şi apoi OK pentru acceptarea expresiei.cod. stabileşte o listă de câmpuri ale bazei de date care vor putea fi accesate prin comenzile şi funcţiile FoxProW.DBF a fost deschisă anterior şi a fost selectată din lista ascunsă From Table). la nivel de înregistrare (logică şi fizică) şi la nivel de câmpuri. dacă acesta este poziţionat. Exemplu: modificarea automată a conţinutului bazei de date. Această operaţie poartă numele de “refacere” sau “rechemare” (“recall” în limba engleză).6 sub Windows – Intrarea şi ieşirea din FoxProW. 1..cod. 1) | • se alege operatorul == din lista ascunsă Logical. ♦ ştergerea fizică – prin acest tip de ştergere înregistrările dispărând fizic din baza de date. înainte de prelucrarea unei înregistrări.cod) (baza de date MATERIAL. Elemente de interfaţă SUBSTR (material. ci sunt doar marcate pentru ştergere (se poziţionează câte un indicator pentru fiecare înregistrare ştearsă din baza de date). Comenzile FoxProW care lucrează cu înregistrările din baza de date. 4) == “bere” While: • se alege câmpul de modificat “cantitate” din lista ferestrei Replace. ci doar le ascunde prin poziţionarea marcatorului de ştergere.

• se acţionează declanşatorul Fields pentru deschiderea ferestrei Field Picker. locaţie care este numită “indicator de înregistrări”. Există două tipuri de deplasări într-o bază de date: • unul în care numărul înregistrării curente se calculează prin evaluarea unei expresii numerice furnizate de utilizator (comenzile GOTO şi SKIP). Elemente de interfaţă de asemenea logică. nu numai la cel selectat. Ştergerea logică a înregistrărilor se realizează prin intermediul ferestrei Delete care se deschide la alegerea opţiunii Delete a submeniului Record. numită filtrare”. • se acţionează declanşatorul Recall. la un moment dat putând fi prelucrată numai o înregistrare. înregistrările nu mai pot fi refăcute.7 Deplasarea în bazele de date. Cel de-al treilea tip de ştergere/accesare a datelor dintr-o bază de date. Condiţiile de accesare a câmpurilor bazei de date active. în funcţie de respectarea unei condiţii dinainte stabilite. va permite accesul numai la înregistrările care respectă condiţia dată. adică lista de câmpuri active şi inactive ale bazei de date. cu deosebirea că se referă la toate câmpurile. Operaţia se referă la baza de date curentă. Va fi pornit Constructorul de expresii în vederea specificării expresiei de filtrare. La comanda Pack se şterg fizic toate înregistrările şterse logic.valoare > 100000 2. • se specifică condiţiile de selecţie a înregistrărilor de rechemat cu ajutorul clauzelor Scope. trebuie avut grijă să nu mai existe alte înregistrări şterse logic într-o etapă anterioară. Deci. Ştergerea fizică a unor înregistrări de baze de date se realizeaă în două etape: • se marchează pentru ştergere (se şterg logic) înregistrările dorite. înainte de marcarea logică a înregistrărilor de şters. care se închide prin acţionarea declanşatorului OK. For şi While după care se acţionează declanşatorul Delete. Exemplu: pentru a permite accesul doar la materialele care au o valoare mai mare de 100000 se va introduce următoarea condiţie de filtrare: material. Căutări secvenţiale Accesul la datele memorate în bazele de date se face la nivel de înregistrare. În această fereastră se specifică înregistrările care vor fi şterse prin clauzele Scope. se realizează asemănător cu filtrarea/accesarea câmpurilor. Această tehnică. • din lista All Fields se selectează câmpurile active care vor fi transferate în lista Selected Fields prin acţionarea declanşatorului Move. se stabilesc după cum urmează: • se deschide fereastra Setup prin alegerea opţiunii cu acelaşi nume a submeniului Database. cea curentă. For şi While. • se comandă ştergerea fizică a înregistrărilor marcate anterior prin alegerea opţiunii Pack a submeniului Database.FoxPro 2. Schimbarea înregistrării curente este echivalentă cu modificarea indicatorului de înregistrări. • altul în care selectarea înregistrării curente se face în funcţie de o expresie logică 13 . Rechemarea înregistrărilor marcate anterior pentru ştergere (deci a celor şterse logic) poate fi obţinută astfel: • se alege opţiunea Recall a submeniului Record pentru deschiderea ferestrei Recall. • se acţionează declanşatorul OK pentru revenirea în fereastra Setup. filtrarea înregistrărilor. Atenţie: odată şterse fizic. operaţie care poartă numele de “deplasare în baza de date”. acesteia i se acordă o locaţie de memorie în care este memorat numărul înregistrării curente. Odată cu deschiderea unei baze de date. cu deosebirea că în fereastra Setup se va acţiona declanşatorul Filter Data în locul lui Fields. • trecerea în sens invers din lista Selected Fields în lista All Fields este echivalentă cu eliminarea câmpurilor respective din lista de câmpuri active şi se realizează cu ajutorul declanşatorului Remove.6 sub Windows – Intrarea şi ieşirea din FoxProW. • declanşatoarele All şi Remove All au aceeaşi semnificaţie cu Move şi Remove. restul neapărând în baza de date respectivă.

Indicatorul de înregistrări va fi poziţionat pe prima înregistrare a bazei de date care respectă condiţia impusă. în care va fi precizată condiţia de testat şi condiţiile de selecţie a înregistrărilor care vor fi testate (clauzele Scope. adică se realizează o deplasare relativă la poziţia curentă a indicatorului de înregistrări (comanda SKIP). • butonul radio Record este folosit la poziţionarea indicatorului de înregistrări pe înregistrarea cu numărul n. în care calculul noului număr al înregistrării curente se face relativ la cel vechi. 2. ele vor fi găsite prin opţiunea Continue a submeniului Record (la fiecare alegere indicatorul de înregistrări va fi poziţionat pe prima înregistrare care respectă condiţiile impuse prin ultima comandă Locate). Primul din aceste tipuri are de asemenea două variante: • una în care numărul înregistrării curente este absolut. modificare.Scope: All . rapoarte. Exemple: deplasare pe prima înregistrare: Goto Top sau Goto 1 deplasare pe ultima înregistrare: Goto Bottom deplasare pe înregistrarea 6: Goto 6 sau Goto 2*3 deplasarea pe următoarea înregistrare: Skip sau Skip 1 deplasarea pe înregistrarea anterioară: Skip –1 Un alt mod de a calcula numărul înregistrării curente este dat de căutarea secvenţială (comenzile LOCATE şi CONTINUE). Elemente de interfaţă (condiţie) furnizată de utilizator )curentă va fi prima înregistrare care respectă condiţia impusă). În acest caz indicatorul de înregistrări va fi poziţionat automat pe prima înregistrare care respectă o condiţie impusă anterior de utilizator. prin selectarea căruia indicatorul avansează cu n înregistrări. deplasează indicatorul de înregistrări pe ultima înregistrare a bazei de date.While Continue Continue Continue Continue Comenzile Locate şi Continue pot fi date şi direct din fereastra Browse. • butonul radio Bottom. unde n este precizat în câmpul de editare alăturat butonului radio. necesare utilizatorului în activitatea curentă. liste. unde n este introdus în câmpul de editare din dreapta butonului radio. For şi While).6 sub Windows – Intrarea şi ieşirea din FoxProW. Alegerea opţiunii Locate din submeniul Record deschide fereastra cu acelaşi nume. Alegerea acestei opţiuni determină deschiderea ferestrei Goto. • alta. ştergere etc.) au fost făcute cu scopul de a putea obţine pe baza lor diferite informaţii. Deplasarea absolută în baza de date se realizează cu ajutorul opţiunii Goto a submeniului Record. Exemplu: pentru a găsi primele 5 materiale mai scumpe decât 1500 lei/buc se vor specifica condiţiile: Locate . Calculele 14 . vizualizare.For: Material.FoxPro 2. el calculându-se faţă de începutul bazei de date (comanda GOTO). relativ la cea curentă. În aceeaşi fereastră se găseşte şi butonul radio Skip. opus lui Top.valoare > 1500 .8 Calcule statistice cu datele din bazele de date Toate prelucrările efectuate asupra datelor din bazele de date (introducer. în care: • selectarea butonului radio Top determină poziţionarea indicatorului de înregistrări la începutul bazei de date (pe prima înregistrare). Dacă în baza de date există mai multe înregistrări pentru care expresia logică este adevărată.

valoare (preţul unitar în lei/sticlă) Scope: All For: substr(material.cod. Se vor introduce: Expr: material. calcul de număr de elemente care respectă o anumită condiţie etc. 4) == “bere” While: To Variable: a Pentru a afişa valoarea variabilei “a”. va fi introdusă o expresie numerică ce se va evalua pentru fiecare înregistrare selectată. care are asociată următoarea fereastră: Înregistrările care se vor lua în calcul se vor stabili prin clauzele Scope. 4) == “bere” While: To Variable: a Pentru a afişa valoarea variabilei “a”. unitate de măsură:st): Expr: material. acestea fiind prezentate în continuare.cod. a Numărul de înregistrări care respectă o anumită condiţie se calculează cu ajutorul 15 . după executarea calculului se pot introduce în fereastra de comenzi următoarele două comenzi: clear ? “Valoarea medie este “. prin intermediul opţiunii Sum a submeniului Database. Folosind Constructorul de expresii. valorile obţinute fiind mediate aritmetic. însumări de expresii. Se va obţine o valoare care se va depune în variabila selectată din lista Memory Variables sau specificată în câmpul To Variable. Elemente de interfaţă statistice care vor fi efectuate cu datele din bazele de date sunt de tipul: medii aritmetice. 1. unitate de măsură:st). For şi While. calcul de minime şi maxime.cantitate Scope: All For: substr(material.6 sub Windows – Intrarea şi ieşirea din FoxProW. 4.. după executarea calculului se pot introduce în fereastra de comenzi următoarele două comenzi: clear ? “Valoarea totală este “.FoxPro 2. pornit la activarea comutatorului Expr….valoare*material. Media aritmetică a valorilor unei expresii calculate pe baza datelor din bazele de date se va calcula prin intermediul opţiunii Average a submeniului Database. Exemplu: să se calculeze valoarea totală a berii din depozit (cod:bere. Exemplu: să se calculeze valoarea medie a unei sticle de bere (cod:bere. a În mod asemănător se calculează suma valorilor unei expresii dependente de câmpurile bazei de date.

6 sub Windows – Intrarea şi ieşirea din FoxProW. NPV – valoarea absolută. de obicei cu aceeaşi structură cu a celei care se sortează. în care se copiază înregistrările în ordinea dorită. În lista ascunsă Math se găsesc funcţiile statistice enumerate mai sus. Expr: MAX(material.valoare > 5000 While: To Variable: a Pentru a afişa valoarea variabilei “a”.9. la a cărei alegere se obţine pe ecran fereastra Sort. a O altă opţiune a submeniului Database care permite calcule statistice este Calculate. 16 . în care sunt depuse aceleaşi înregistrări.1 Sortarea unei baze de date Această metodă de ordonare determină obţinerea unei noi baze de date.9 Ordonarea datelor din bazele de date În FoxProW există două metode principale de ordonare a bazelor de date: sortarea unei baze de date – care presupune crearea unei noi baze de date. Sortarea unei baze de date se obţine cu ajutorul opţiunii Sort a submeniului Database. a 2. Aceasta permite calcularea următoarelor funcţii statistice: AVG – media aritmetică.valoare) Scope: All For: While: To Variable: a Pentru a afişa valoarea variabilei “a”. MAX – maximul unei expresii. indexarea unei baze de date – caz în care se creează un nou fişier. Elemente de interfaţă opţiunii Count a submeniului Database. STD – abaterea medie pătratică. SUM – suma valorilor unei expresii.FoxPro 2. Activarea comutatorului Fields în fereastra Calculate determină pornirea Constructorului de expresii cu ajutorul căruia se va introduce expresia de calculat. după executarea calculului se pot introduce în fereastra de comenzi următoarele două comenzi: clear ? “Nr. VAR – variaţia faţă de medie.materiale cu valoare peste 5000 “. în care se memorează doar ordinea înregistrărilor bazei de date. după executarea calculului se pot introduce în fereastra de comenzi următoarele două comenzi: clear ? “Cea mai mare valoare “. MIN – minimul unei expresii. Expr: Scope: All For: material. numir fişier index. • • 2. Condiţia de îndeplinit se specifică cu ajutorul clauzei For. Exemplu: să se numere materialele care au preţul mai mare decât 5000. CNT – număr de înregistrări. Exemplu: să se calculeze cea mai mare valoare a materialelor din depozit. dar în ordinea dorită.

Partea superioară aferestrei este folosită la specificarea cheii de ordonare. aceasta însemnând stabilirea modului de ordonare a înregistrărilor după acest criteriu (crescător sau descrescător) şi primul câmp care va fi folosit la compararea înregistrărilor. pentru a nu mai permite reselectarea acestuia. Alcătuirea cheii de sortare se face astfel: • se stabileşte primul criteriu de sortare. For şi While.2 Crearea bazelor de date). prin intermediul listei All Fields. în stânga. în lista Sort Order vom observa o săgeată indicând modul de sortare: ↑ pentru crescător. Este posibil ca în noua bază de date să nu se mai copieze toate câmpurile bazei de date care se sortează. Noua bază de date care va conţine înregistrările în ordinea dorită va fi specificată prin intermediul secţiunii Output. ci numai o parte dintre acestea. prin comutatoarele Scope. Numele bazei de date. în funcţie de modul de sortare după primul câmp (crescător sau descrescător). se numeşte cheie de sortare. pentru aceasta se alege unul dintre butoanele radio Ascending sau Descending. În această parte.FoxPro 2. care se vor selecta în fereastra deschisă prin activarea comutatorului Fields. Elemente de interfaţă Baza de date care se va sorta se alege prin intermediul listei ascunse From Table. în care se vor introduce câmpurile selectate din lista All Fields. iar în partea dreaptă se află lista Sort Order.6 sub Windows – Intrarea şi ieşirea din FoxProW. • în cazul când primul câmp al cheii de sortare este de tip şir de caractere se poate activa comutatorul Ignore Case pentru a face compararea câmpurilor independentă de tipul caracterelor (majuscule sau minuscule). care. După stabilirea cheii de sortare se trece la specificarea condiţiilor de selecţie a înregistrărilor care se vor copia în noua bază de date. • se procedează analog pentru următoarele câmpuri care alcătuiesc cheia de sortare (se selectează modul de sortare şi se alege câmpul dorit). în acest caz. • se selectează ca prim câmp al cheii de sortare unul din câmpurile bazei de date. ↓ pentru descrescător şi un buton care permite rearanjarea câmpurilor din lista Sort Order (la fel ca la mutarea câmpurilor în fereastra Table Structure folosită la crearea unor baze de date – vezi paragraful 2. • se acţionează declanşatorul Move care determină adăugarea câmpului selectat la lista Sort Order şi dezactivarea respectivului câmp din lista All Fields. al fişierului care va memora datele bazei de date sortate se va specifica în 17 . în stânga câmpului selectat. se găseşte lista All Fields din care se vor alege câmpurile care vor alcătui cheia de sortare. prin intermediul secţiunii Input a ferestrei.

denumire. se parcurg următoarele etape: • se deschide baza de date. All. indicând o ordonare crescătoare a bazei de date (după valoare). de exemplu LISTA. Exemplu: să se obţină lista tuturor materialelor care necesită condiţii speciale de depozitare (cond_spec=. După ce toate aceste operaţii au fost executate se poate trece la ordonarea propriuzisă a bazei de date prin acţionarea declanşatorului OK. 4. la care conţinutul bazei de date este copiat într-o nouă bază de date în ordinea dorită.T. Spre deosebire de sortare.DBF. 2. se selectează butonul radio Ascending din secţiunea Field Options. prin comutatorul Scope se alege domeniul înregistrărilor.9. din lista All Fields se alege câmpul “valoare” după care se va face ordonarea. Odată creat fişierul index.6 sub Windows – Intrarea şi ieşirea din FoxProW. indexarea presupune de asemenea crearea unui nou fişier asociat bazei de date. ducând astfel la o relativă economie de spaţiu de memorare comparativ cu metoda anterioară.DBF. 18 . În fişierul indexat asociat bazei de date se va memora pentru fiecare înregistrare valoarea cheii de indexare şi numărul de ordine al înregistrării (cel fizic). dată de un anumit criteriu de ordonare. se acţionează declanşatorul OK pentru a porni procesul de sortare. se selectează acea cheie care va da ordinea înregistrărilor. aceasta însemnând stabilirea cheii de indexare şi a altor opţiuni relativ la modul de indexare şi crearea fişierului fişierului index asociat. înregistrările neordonate fizic fiind văzute logic în ordinea dorită.DBF. Elemente de interfaţă fereastra Save As deschisă prin acţionarea declanşatorului cu acelaşi nume. • se deschid fişierele index asociate acesteia (create anterior). pe ecran apărând fereastra asociată acestei opţiuni. 1. iar cu ajutorul comutatorului For se introduce condiţia de selecţie a înregistrărilor: material. se deschide baza de date LISTA. fie manual. 3. 2. 5. fie automat de FoxProW. se deschide baza de date MATERIAL.. prin intermediul comutatorului Fields se specifică acele câmpuri care vor face parte din raportul de ieşire: cod. Pentru stabilirea unei anumite ordini a înregistrărilor unei baze de date prin metoda indexării.FoxPro 2. se acţionează declanşatorul Save As pentru a specifica baza de date care va memora lista dorită.DBF şi apoi o fereastră Browse pe aceasta pentru a vizualiza lista dorită. Accesul la datele dintr-o bază de date indexată se face prin intermediul fişierului index asociat. 8. ea calculânduse pentru fiecare înregistrare a bazei de date şi folosindu-se la compararea înregistrărilor acesteia. Acesta acţionează ca un filtru asupra bazei de date.cond_spec=. numită cheie de index activă. • se indexează baza de date. pentru a lucra cu o bază de date indexată se procedează astfel: • se deschide baza de date. se alege opţiunea Sort a submeniului Database. Cheia de ordonare în cazul indexării se numeşte cheie de indexare. valoare.T. • din mai multe criterii de ordonare. chei de indexare. 7. de utilizator. care va memora însă numai informaţiile referitoare la ordinea înregistrărilor bazei de date. obţinând astfel o dublare a informaţiilor pe disc şi deci risipă de spaţiu de memorare.) din baza de date MATERIAL. în ordine valorică. sau se poate renunţa la aceasta prin acţionarea declanşatorului Cancel. 9.2 Indexarea bazelor de date Indexarea unei baze de date reprezintă o metodă performantă de acces la înregistrări. într-o anumită ordine. asociate simultan unei baze de date. 6.

Tipul de indexare crescătoare sau descrescătoare se indică prin intermediul butoanelor radio Ascending şi. se închide baza de date şi odată cu aceasta. cu titlul generic de “etichetă index”. nestructurale – care trebuie deschise explicit de utilizator.6 sub Windows – Intrarea şi ieşirea din FoxProW. fără a mai fi nevoie de o comandă specială pentru deschiderea lor. dar au extensia . Fişierele index ce se asociază unei baze de date pot fi de două tipuri: 1. Când acest comutator este dezactivat. ele nefiind deschise automat odată cu baza de date. acestea au acelaşi nume cu baza de date. indiferent de valoarea cheii de indexare.DBF indexată după cod. extensia implicită fiind de asemenea .IDX) care conţin o singură cheie de indexare şi deci un singur criteriu de ordonare. atât simple.CDX. structurale – care sunt deschise automat odată cu baza de date. Elemente de interfaţă • • se execută operaţiile dorite asupra bazei de date indexate. cât şi compuse. acesta constând într19 . în mod automat. După acţionarea declanşatorului New se va deschide fereastra Index: Cheia de indexare se construieşte fie alegând câmpuri ale bazei de date din lista Fields. Descending. fiecăruia dintre acestea asociindu-i-se un nume. Există posibilitatea stabilirii unui filtru pentru indexul nou creat.CDX).FoxPro 2. fişierele index compuse pot fi de două tipuri: 1. fişiere index compuse (cu extensia . fie cu ajutorul Constructorului de expresii pornit la acţionarea declanşatorului Index Key din dreapta acestei liste. respectiv. se permite accesul la toate înregistrările bazei de date. cel activ. fişiere index simple (având extensia . Activând comutatorul Unique se va permite accesul numai la prima înregistrare cu o valoare dată a cheii de indexare. Unei baze de date i se pot asocia mai multe fişiere index. După acţionarea lui se va deschide fereastra asociată acestei opţiuni. 2. La rândul lor. acestea poartă nume diferite de cel al bazei de date. numită etichetă index activă. restul înregistrărilor care au aceeaşi valoare a cheii de indexare fiind inaccesibile. Pentru o anumită valoare a cheii de indexare pot exista mai multe înregistrări ale bazei de date (de exemplu pentru baza de date MATERIAL. în care se memorează mai multe criterii de ordonare. şi fişierele index asociate.CDX. sau de o singură etichetă index dintr-un fişier index compus. pot exista mai multe materiale care să aibă acelaşi cod de material). Indexarea unei baze de date se face alegând opţiunea New a submeniului File şi selectând butonul radio Index. 2. La un anumit moment de timp ordinea de accesare a înregistrărilor bazei de date este dată de un singur fişier index simplu.

Fişierul index care se va crea este specificat prin opţiunea Output File a ferestrei. această operaţie realizându-se astfel: • se alege opţiunea Open a submeniului File obţinând pe ecran fereastra Open. fie manual prin introducerea numelui şi căii complete în regiunea de editare text din dreapta acestui declanşator.6 sub Windows – Intrarea şi ieşirea din FoxProW. • cu ajutorul listelor ascunse Drive şi Directory şi al listei din partea stângă a ferestrei se stabileşte directorul de unde se preia fişierul index. se foloseşte opţiunea Setup a submeniului Database. În această fereastră. iar dacă acesta este compus. structural sau nestructural.T. • se specifică apoi tipul indexării (crescătoare sau descrescătoare.). Expresia index filtru se specifică cu ajutorul Constructorului de expresii. • în final se acţionează declanşatorul OK. În celelalte cazuri. este dat de starea comutatorului Structural Index Structure (când acesta este activat se va crea un fişier index compus structural).). • se repetă operaţiile anterioare pentru toate fişierele index asociate bazei de date active. Din mai multe fişiere index deschise pentru o bază de date.FoxPro 2. înregistrarea nu va putea fi accesată. Deci. există o singură etichetă index a fişierului index respectiv care va determina criteriul de ordonare a bazei de date. În lista Indexes sunt afişate toate fişierele index simple şi toate etichetele index deschise pentru baza de date activă. Numele fişierului index şi directorul unde va fi depozitat acesta se introduc fie prin intermediul ferestrei Save As. • apoi se stabileşte cheia de indexare. care are asociată fereastra Setup. • se stabileşte apoi numele acestui fişier şi locul în care acesta va fi depozitat pe disc (pentru fişierele index simple şi pentru fişierele index compuse nestructurale). după deschiderea unei baze de date este necesară şi deschiderea fişierelor index asociate. compact sau necompact). pornit la acţionarea declanşatorului Index Filter. compus. Crearea unui fişier index pentru o bază de date nu presupune neapărat că acesta este deschis odată cu baza de date decât în cazul fişierelor index compuse structurale. • fişier index compus în cazul selectării butonului radio Compound Index File (CDX). pentru crearea unui fişier index se vor parcurge următoarele etape: • mai întâi se stabileşte tipul fişierului index (simplu. Pentru a adăuga la această listă un nou element (fişier index simplu sau etichetă index) se acţionează declanşatorul 20 . • în cazul fişierelor index compuse se introduce în câmpul de editare Tag Name denumirea etichetei index care se va crea. • din lista ascunsă List Files of Type se alege elementul Index. cele compuse fiind întotdeauna compacte). • din lista din partea stângă-sus a ferestrei se alege fişierul index care se va deschide şi apoi se acţionează declanşatorul Open. indicând că vom deschide un fişier index pentru baza de date curentă. Pentru a stabili care fişier index simplu este activ sau care etichetă index a unui fişier index compus este activă. Dacă această expresie are valoarea adevărat (.F. structural sau nestructural. unică sau multiplă). sau direct în câmpul de editare din dreapta acestui declanşator. Elemente de interfaţă o expresie logică care va fi evaluată înainte de accesarea fiecărei înregistrări. Când se crează un fişier index compus. secţiunile Indexes şi Index Description controlează modul de indexare al bazei de date active. Tipul fişierului index va fi dat de grupul de butoane radio din această secţiune: • fişier index simplu când este selectat butonul radio Single Index File (IDX). Activând comutatorul Compact Index Structure fişierul index creat va fi compact (are sens numai în cazul fişierelor index simple. deschisă la acţionarea declanşatorului cu acelaşi nume. înregistrarea va fi accesibilă. tipul acestui fişier. iar în cazul valorii fals (. cât şi filtrul index. unul singur dă ordinea de accesare a înregistrărilor.

Pentru reactualizarea lor se foloseşte opţiunea Reindex a submeniului Database care reface toate fişierele index deschise pentru baza de date curentă. După această operaţie acestea reflectă starea curentă a bazei de date. după selectarea din lista Indexes a fişierului index de închis. 21 . Odată cu închiderea bazei de date se închid şi toate fişierele index asociate acesteia. O altă facilitate importantă a indexării bazelor de date este cea a creşterii substanţiale a vitezei de căutare. pe o bază de date indexată se folosesc metode mai avansate de căutare (cum ar fi metoda înjumătăţirii intervalului). chiar de sute de ori (în funcţie de numărul de înregistrări ale bazei de date). Acţionarea declanşatorului No Order face ca accesarea înregistrărilor bazei de date să se facă în ordinea fizică a acestora. În schimb. Există situaţii când apar neconcordanţe între conţinutul bazei de date şi conţinutul fişierelor index create pentru ea. simple sau compuse. care măresc viteza de căutare de zeci. fără folosirea vreunui fişier index asociat bazei de date. la alegere acesteia deschizându-se fereastra Constructorului de expresii. Căutarea într-o bază de date indexată se face după o valoare a cheii de indexare. Declanşatorul Modify se foloseşte pentru a modifica cheia de indexare a unui fişier index simplu sau a unei etichete index selectate anterior din lista Indexes. nu vor fi actualizate. Stabilirea fişierului index simplu sau a etichetei index care va da ordinea de accesare a înregistrărilor se va face prin selectarea acestuia din lista Indexes a acestei ferestre şi acţionarea declanşatorului Set Order. Închiderea unui fişier index se face prin acţionarea declanşatorului Remove. În timp ce într-o bază de date neindexată căutarea se face secvenţial. ele memorând o stare veche a bazei de date. care nu au fost deschise în momentul efectuării modificărilor. Elemente de interfaţă Add şi în fereastra deschisă se alege fişierul index respectiv. Fereastra se părăseşte prin acţionarea declanşatorului OK.FoxPro 2. structurale sau nestructurale. La modificarea conţinutului unei baze de date se actualizează automat toate fişierele index deschise pentru aceasta. fişierele index create pentru baza de date respectivă. Căutările în bazele de date indexate se fac prin intermediul opţiunii Seek din submeniul Record.6 sub Windows – Intrarea şi ieşirea din FoxProW. indiferent de tipul lor. înregistrare după înregistrare.

structural. Dacă valoarea expresiei este egală cu valoarea cheii de indexare pentru înregistrarea testată. iar dacă cele două valori diferă.FoxPro 2. 22 . Exemplu: dându-se baza de date MATERIAL. Elemente de interfaţă În fereastra Constructorului de expresii se va introduce o expresie care va fi evaluată la fiecare testare a unei înregistrări a bazei de date. • urmează specificare tipului indexării: crescătoare (butonul radio Ascending selectat) şi multiplă (comutatorul Unique dezactivat).DBF în care sunt memorate datele referitoare la materialele dintr-un depozit şi având structura dată în primul paragraf al acestui capitol. pe ecran fiind deschisă fereastra de creare a fişierelor index. care în acest caz este formată doar din câmpul “cod”.DBF. atunci această înregistrare va fi considerată găsită. • se acţionează butonul declanşator New. • vom crea un fişier index compus. • se acţionează declanşatorul Add to Index List pentru a adăuga indexul nou creat la lista Index Key. • se indexează această bază de date. se selectează acest câmp din lista Fields. care permit viteze de căutare mai ridicate. Modul de parcurgere a înregistrărilor nu este secvenţial. înregistrarea se va considera negăsită. prima etichetă index fiind acum creată. cod. • se introduce în câmpul Tag Name numele primei etichete index. pentru aceasta se alege opţiunea New a submeniului File şi din fereastra deschisă se alege butonul radio Index. ci se folosesc metode mai avansate.6 sub Windows – Intrarea şi ieşirea din FoxProW. în cazul fişierelor indexate. să se listeze materialele din depozit în ordine alfabetică a codului şi în ordine crescătoare a valorii. Procedăm astfel: • se deschida baza de date MATERIAL. numele etichetei îl vom introduce în câmpul Tag Name. • pentru specificarea cheii de indexare. selectând butonul radio Compound Index File (CDX) şi activând comutatorul Structural Index Structure (dacă acestea nu sunt deja activate). • vom crea acum cea de-a doua etichetă pe care o vom numi “valoare”. Spre deosebire de căutarea într-o bază de date neindexată. sărindu-se la o altă înregistrare. după găsirea unei înregistrări potrivite se parcurg următoarele înregistrări cu aceeaşi valoare a cheii de indexare prin comanda Skip (opţiunea Goto din submeniul Record şi butonul radio Skip).

acţionăm declanşatorul OK pentru închiderea ferestrei şi crearea fişierului index respectiv. acţionăm declanşatorul Add to Index List pentru a adăuga şi cel de-al doilea index la lista Index Key. la fel se procedează pentru listarea bazei de date în ordinea crescătoare a valorii materialelor. Importul datelor dintr-un fişier extern într-o bază de date FoxProW se face prin intermediul opţiunii Append From… a submeniului Database. cu cele două etichete specificate. pentru o listare simplă a bazei de date se poate introduce în fereastra de comenzi instrucţiunea LIST. Tipul fişierului din care se vor prelua datele este dat de elementul selectat din lista ascunsă File Type. 23 . având următoarele variante: Table(DBF) Delimited with Tabs Delimited with Commas Delimited with Spaces –o altă bază de date FoxProW. dacă se doreşte o listare mai complexă se poate folosi generatorul de filtre. –un fişier text în care separarea câmpurilor se face printr-un spaţiu. Paradox etc. în care câmpurile sunt separate prin Tab. care detrmină deschiderea ferestrei cu acelaşi nume. Lotus123. se închide această fereastră şi se deschide fereastra Browse pentru baza de date activă. Elemente de interfaţă • • • • • • • • vom preciza în continuare cea de-a doua cheie de indexare alegând câmpul “valoare” din lista Database Fields. un fişier text în care separarea câmpurilor se face printr-o virgulă. 2. Prin intermediul acestei comenzi se vor adăuga înregistrări la baza de date activă. pentru aceasta se va deschide fereastra Setup prin alegerea opţiunii cu acelaşi nume din submeniul Database. putând transfera date la şi de la cele mai răspândite sisteme informatice. cea de-a doua etichetă index este acum creată. iar înregistrările printr-un sfârşit de linie (CR+LF).FoxPro 2.6 sub Windows – Intrarea şi ieşirea din FoxProW.cod din lista Indexes şi se acţionează declanşatorul Set Order. pentru listarea bazei de date ordonată după “cod” se va specifica mai întâi eticheta index activă. –un fişier text. cum ar fi Excel. în fereastra deschisă se alege indexul material. Aceste înregistrări vor fi preluate dintr-un fişier extern care va fi specificat în fereastra deschisă la acţionarea declanşatorului From… sau în câmpul de editare din dreapta acestuia.10 Import / Export de date din bazele de dateFoxProW posedă facilităţi de comunicare cu exteriorul foarte performante.

Microsoft Multiplan (4. Delimited with Tabs.0) (WRK). Symphony )1. versiunea 3. Symbolic Link Format (SYLK) –un fişier într-un format special de interschimbare. în care coloanele devin câmpuri.2) (RPD) –o bază de date RapidFile. caz în care datele sunt preluate din baza de date activă şi sunt trimise în exterior. Operaţia opusă importului este exportul. versiunea 3. iar celulele acestuia devin câmpuri. Paradox (PDOX) –o bază de date Paradox. Symbolic Link Format (SYLK).1/1. Delimited with Spaces. iarcoloanele devin câmpuri. iar condiţiile de selecţie a acestora prin intermediul comutatoarelor For şi While. către un fişier de pe disc. Lotus 1-2-3 (3.1/1.01). Data Interchange Format (DIF). Elemente de interfaţă System Data Format (SDF) –un fişier text în care înregistrările au o lungime fixă şi se termină printr-un sfârşit de linie (CR+LF).2) 24 .xx. Framework II (FW2) –un tabel Framework II. În baza de date activă se pot copia doar anumite câmpuri. versiunea 2. După precizarea tuturor opţiunilor referitoare la import se acţionează declanşatorul Append. Microsoft Excel (XLS) –fişier în format Microsoft Excel (program de calcul tabelar). delimited with Commas. la alegerea căreia este deschisă fereastra cu acelaşi nume: Modul de lucru în această fereastră este asemănător cu cel de la import. Symphony (1.x) (WK1) –tabel Lotus 1-2-3 (1A) în care coloanele devin câmpuri şi liniile înregistrări. Symphony (1. iar rândurile înregistrări. tipurile disponibile pentru fişierul spre care se exportă fiind următoarele: Table (DBF). Symbolic Link.01) (MOD) –fişier în format BIFF (Binary File Format) al sistemului Microsoft Multiplan.6 sub Windows – Intrarea şi ieşirea din FoxProW.FoxPro 2.0 sau 1. Microsoft Multiplan (4. System Data Format (SDF). Data Interchange Format (DIF) –fişier în format DIF în care coloanele devin câmpuri.0.0) (WRK) –tabel Symphony (1. Această operaţie se realizează cu ajutorul opţiunii Copy To a submeniului Database.01) (MOD). Domeniul înregistrărilor care se vor adăuga la baza de date activă se specifică cu ajutorul comutatorului Scope.0) (WK3) –tabel Lotus 1-2-3 (1A) în care coloanele devin câmpuri şi liniile înregistrări.5.2) (WR1) –tabel Symphony (1. Microsoft Excel (XLS). Symphony (1. acestea precizându-se în fereastra deschisă prin acţionarea declanşatorului Fields.1 sau 1. iar rândurile devin înregistrări.2) Lotus 1-2-3 (1A) (WKS) –tabel Lotus 1-2-3 (1A) în care coloanele devin câmpuri şi liniile înregistrări. liniile devin înregistrări. RapidFile (1. Lotus 1-2-3 (2. în care liniile tabelului devin înregistrări.

11 Baze de date relaţionale. urmând ca denumirile complete ale acestor unităţi să fie memorate într-un tabel separat care se află în relaţie cu primul.A) (WKS). egal cu numărul de facturi schimbate cu această unitate economică: Nr. denumire furnizor. denumire beneficiar etc.x) (WK1). folosindu-se următoarea terminologie: câmpurile se numesc “coloane”. datorită faptului că denumirea completă a unei unităţi economice se va găsi în tabel de un număr mare de ori. Memorarea în fiecare linie din tabel a denumirii complete a furnizorului şi beneficiarului este total ineficientă. Lotus 1-2-3 (2. respectiv beneficiarului. Ostructură mai complexă de bază de date relaţională pentru memorarea facturilor unei unităţi economice este dată în exemplul de mai jos (sub formă grafică pentru o mai bună înţelegere): 25 . Astfel.). care se află în relaţie unele cu altele. se va memora în tabelul facturilor numai codul furnizorului. data emiterii. 2. iar în fiecare linie se va putea memora o factură. Relaţii între tabele O bază de date relaţională este compusă din mai multe tabele.6 sub Windows – Intrarea şi ieşirea din FoxProW. alegând o codificare pentru unităţile economice cu care unitatea noastră schimbă facturi. Pentru memorarea acestora se va folosi un tabel în care coloanele vor corespunde rubricilor de pe formularul factură (număr factură. Lotus 1-2-3 (1. iar pentru înregistrări se foloseşte termenul de “linii”. … 40 41 … 53 … 62 … Dată Factură … 20/04/99 23/04/99 … 29/04/99 … 03/05/99 … … … … … … … … … … Total … 100000 240000 … 153500 … 180000 … TVA … 18000 43200 … 27630 … 32400 … Denumire Furnizor … Societatea Comercială ALFA SRL Societatea Comercială ALFA SRL … Societatea Comercială ALFA SRL … Societatea Comercială ALFA SRL … Folosind o bază de date relaţională pentru memorarea acestor facturi se poate face economie de spaţiu de memorare. Elemente de interfaţă (WR1). Structura relaţională a bazei de date a facturilor poate fi de forma: Nr. astfel încât poziţionarea indicatorului de linii (înregistrări) pe o linie a primului tabel va determina poziţionarea automată a indicatorului de linii al celui de-al doilea tabel pe linia corespunzătoare (cu aceeaşi valoare în coloana cod_furnizor).FoxPro 2. Exemplu: Să presupunem că proiectăm un sistem informatic pentru evidenţa facturilor unei unităţi economice. Factură … 40 41 … 53 … 62 … Data Factură … 20/04/99 23/04/99 … 29/04/99 … 03/05/99 … … … … … … … … … … Cod Furnizor … 23 23 … 23 … 23 … Cod Furnizor Denumire Furnizor 23 Societatea comercială ALFA SRL Între cele două tabele ale bazei de date relaţionale s-a stabilit o relaţie după coloana cod_furnizor. Un tabel al unei baze de date relaţionale are structura identică cu a unei baze de date simple. Fct.

în cazul când pentru o linie a tabelului părinte există mai multe linii ale tabelului copil. cu ajutorul căreia se face corespondenţa liniilor între cele două tabele. Elemente de interfaţă NR. dar invers această determinare nu se realizează. … … … … 24 29 … … … FURNIZ. Acest aspect a dus la stabilirea unui criteriu de clasificare a relaţiilor între tabele. restul fiind practic 26 . între zonele de lucru corespunzătoare. de egalitate. Mutarea indicatorului de linii în tabelul părinte determină evaluarea cheii relaţiei dintre cele două tabele pentru linia curentă din tabelul părinte şi pentru liniile tabelului copil. Unul dintre tabele va fi denumit părinte şi va avea ca subordonat pe cel de-al doilea tabel. compararea liniilor tabelelor reducându-se la compararea valorilor câmpului respectiv. • se deschid aceste tabele în zone de lucru distincte.DBF NIVEL IMPOZIT … Scutit impozit profit … BENEF. când unei linii din tabelul părinte îi corespunde o singură linie a tabelului copil.6 sub Windows – Intrarea şi ieşirea din FoxProW. Excepţii de la această regulă sunt acelea când cheia relaţiei este numerică sau când această cheie este chiar numărul de ordine al liniilor. aceasta se închide (se închid toate componentele). tabelul copil trebuie să fie indexat după cheia relaţiei.FoxPro 2. numit copil. fiecare din câte un tabel component.DBF COD DENUMIRE DOM … … … 24 … COD … 29 … GAMA SRL … INM … COD … INM … COD … COM … DOMENIU. având două tabele aflate în relaţie unul cu altul. … 123 … FACTURI.DBF COD COD … FURN. de subordonare.DBF CAPITAL ACT … … 400000 COM … … Relaţia dintre două tabele ale unei baze de date nu este una bidirecţională. din cele două tabele. • se stabilesc apoi relaţiile între tabele. cea părinte şi cele subordonate acesteia (indicatorii de linii ai tabelelor copil vor fi poziţionaţi automat pe liniile care corespund liniei selectate din tabelul părinte). fără a mai fi necesară coordonarea acestora (realizată de FoxProW). şi anume: ♦ relaţii de tip “una la una”. ci este o relaţie unidirecţională. unei linii a tabelului părinte îi corespund mai multe linii ale tabelului copil. nu va putea fi accesată decât prima dintre ele. În acest caz tabelul copil poate fi neindexat. Deci două linii din două tabele aflate în relaţie unul cu altul vor corespunde dacă au aceeaşi valoare a cheii relaţiei respective. O situaţie specială apare atunci când. BENEF. Indicatorul de linii al tabelului copil se va poziţiona pe linia pentru care valoarea cheii relaţiei este egală cu valoarea cheii respective pentru linia părinte. FACT. numită cheie a relaţiei. De cele mai multe ori cheia unei relaţii între două tabele este dată printr-un singur câmp. Modul de lucru cu bazele relaţionale este următorul: • se crează tabelele componente ca orice bază de date simplă. Atenţie! Pentru stabilirea unei relaţii între două tabele ale unei baze de date relaţionale.DBF DENUMIRE … Industrie Metaliferă … ACTIVIT. O înregistrare a bazei de date relaţională este formată din mai multe linii. • după terminarea lucrului cu baza de date relaţională respectivă. Deplasarea indicatorului de linii al tabelului părinte va determina poziţionarea corespunzătoare a indicatorului de linii al tabelului copil. Pentru a fi accesată o astfel de înregistrare se poziţionează indicatorul de linii al bazei de date părinte pe linia dorită şi se citesc datele din toate tabelele bazei de date. • se pot accesa acum datele din toate tabelele simultan. Stabilirea unei relaţii între două tabele presupune specificarea unei expresii.

FoxPro 2.6 sub Windows – Intrarea şi ieşirea din FoxProW. Elemente de interfaţă

invizibile;

relaţii de tip “una la mai multe”, caz în care unei linii a tabelului părinte îi pot corespunde mai multe linii ale tabelului copil; toate liniile tabelului copil vor putea fi accesate, indiferent de numărul lor. Pentru controlul bazelor de date relaţionale se foloseşte fereastra View, în modul de lucru cu acelaşi nume. Deschiderea acestei ferestre se face prin alegerea opţiunii View din submeniul Window, iar pentru selectarea modului de lucru se acţionează declanşatorul din colţul stânga-sus al ferestrei.

Pentru crearea unei baze de date relaţionale, presupunând că sunt deja create tabelele componente ale acesteia, se procedează în modul următor: • se deschid tabelele componente, fiecare în câte o zonă de lucru distinctă, folosind eventual declanşatorul Open al ferestrei View; • se stabileşte prima relaţie; pentru aceasta se selectează tabelul părinte prin deplasarea cursorului în lista Work Areas pe zona de lucru în care este deschis tabelul şi se acţionează tasta Space; • se acţionează declanşatorul Relations, în lista din partea dreaptă apărând tabelul părinte de la care pleacă o săgeată spre viitorul tabel copil; • se selectează acum tabelul copil din lista Work Areas; • în acest moment este deschisă fereastra Constructorului de expresii pentru specificarea cheii relaţiei; după introducerea expresiei dorite şi acţionarea declanşatorului OK relaţia este stabilită, în lista din partea dreaptă apărând acum tabelul selectat, subordonat tabelului părinte; • se creează în mod analog restul relaţiilor dintre tabelele componente ale bazei de date relaţionale. Observaţie: dacă tabelul copil nu este indexat, în locul pornirii Constructorului de expresii pentru specificarea cheii relaţiei se va presupune că numărul de ordine al liniilor va reprezenta cheia relaţiei. În cazul când tabelul copil este indexat, dar nu este specificat indexul activ, va fi deschisă o fereastră pentru a stabili indexul activ al tabelului copil. Pentru crearea unei relaţii de tipul “una la mai multe” vom proceda după cum urmează: • se creează relaţia respectivă ca orice relaţie de tipul “una la una”; • se transformă această relaţie într-una de tipul “una la mai multe”; pentru aceasta se selectează tabelul părinte din lista Work Areas şi se acţionează declanşatorul 1-ToMany; • este deschisă fereastra pentru crearea relaţiilor “una la mai multe” conţinând următoarele elemente:  Child Aliases – listă conţinând tabelele cu care se află în relaţie tabelul părinte curent selectat;
27

FoxPro 2.6 sub Windows – Intrarea şi ieşirea din FoxProW. Elemente de interfaţă

Selected Aliases – listă conţinând tabelele selectate care identifică relaţiile care vor fi transformate în “una la mai multe”; se va aplica această transformare pentru toate relaţiile dintre tabelul părinte curent şi tabelele copil selectate;

Move – trece tabelul selectat din lista Child Aliases în lista Selected Aliases;  All – acelaşi efect ca şi Move, dar pentru toate tabelele din lista Child Aliases;  Remove – acţiune opusă lui Move, deselectează tabelele selectate din lista Selected Aliases, trecându-le în lista Child Aliases;  Remove All – acelaşi efect ca şi Remove, dar pentru toate tabelele selectate din lista Selected Aliases;  OK – termină lucrul în această fereastră, realizând transformarea;  Cancel – renunţă la transformare; • se alege tabelul copil al relaţiei de transformat din lista Child Aliases; • se acţionează declanşatorul OK pentru închiderea ferestrei şi realizarea transformării relaţiei specificate în relaţie “una la mai multe”. În fereastra View, o relaţie de tipul “una la mai multe” este indicată printr-un dreptunghi plasat în dreapta tabelului părinte, în lista Work Areas. Modificarea unei relaţii create anterior se face urmând etapele: • se selectează relaţia de modificat din lista din partea dreaptă a ferestrei View prin deplasarea cursorului pe tabelul copil; • se acţionează tasta space pentru a modifica relaţia selectată (se va modifica cheia relaţiei în fereastra Constructorului de expresii); Ştergerea unei relaţii între două tabele se realizează astfel: • se selectează tabelul copil din lista din partea dreaptă a ferestrei View şi se intră în editarea relaţiei selectate; • în fereastra Constructorului de expresii se şterge expresia reprezentând cheia relaţiei şi se acţionează declanşatorul OK, relaţia fiind ştearsă. Relaţia stabilită între două tabele ale unei baze de date relaţionale nu reprezintă în sine un instrument de lucru. Aceasta este folosită doar prin efectele pe care le generează, prin modul de acces la datele depozitate în tabelele bazei de date.

2.12 Rapoarte totalizatoare. Baze de date totalizatoare Un alt mod de extragere şi prezentare a unor informaţii din bazele de date este reprezentat de rapoartele totalizatoare. Să presupunem următoarea problemă: în baza de date MATERIAL.DBF avem mai multe tipuri de bere (toate cu acelaşi cod), mai multe tipuri de ţigări (de asemenea cu acelaşi cod) etc. Dorim să aflăm lista materialelor pe clase (bere, ţigări etc.), cu valoarea totală pe fiecare clasă. Această listă reprezintă de fapt un
28

FoxPro 2.6 sub Windows – Intrarea şi ieşirea din FoxProW. Elemente de interfaţă

raport totalizator care se obţine astfel: • mai întâi se ordonează (sortează sau indexează) baza de date după cod_material; • apoi, automat, în urma comenzii Total a utilizatorului, se creează o bază de date nouă în care se depune o singură înregistrare pentru fiecare clasă de produs, în fiecare dintre acestea totalizându-se înregistrările corespunzătoare din baza de date sursă; • se vizualizează apoi baza de date totalizatoare într-o fereastră Browse care reprezintă de fapt raportul dorit. Crearea bazelor de date totalizatoare se face cu ajutorul opţiunii Total a submeniului Database, care determină afişarea ferestrei cu acelaşi nume. În această fereastră cheia de totalizare se specifică prin intermediul listei din partea stângăsus (când este un câmp al bazei de date) sau cu ajutorul Constructorului de expresii pornit la acţionarea declanşatorului Expr… (când cheia este o expresie). Cheia de totalizare reprezintă o expresie validă FoxProW, conţinând câmpuri ale bazei de date, după care se face totalizarea. Pentru fiecare înregistrare a bazei de date sursă (cea activă) se va evalua expresia respectivă şi se va “aduna” la înregistrarea corespunzătoare din baza de date totalizatoare. Deci pentru fiecare valoare a cheii de totalizare vom avea o singură înregistrare în baza de date totalizatoare şi una sau mai multe în baza de date sursă. Implicit se vor totaliza toate câmpurile numerice ale bazei de date (doar pentru acestea are sens însumarea). dacă se doreşte totalizarea doar a unora dintre acestea, lista câmpurilor care se vor totaliza va fi specificată în fereastra Field Picker deschisă la activarea comutatorului Fields. Numele şi locul bazei de date totalizatoare (directorul şi unitatea de disc) vor fi specificate în fereastra Save As deschisă la acţionarea declanşatorului cu acelaşi nume din fereastra Total, sau manual, în câmpul de editare de sub acest declanşator. Înregistrările care vor intra în calcul la totalizare vor fi selectate cu ajutorul clauzelor Scope, For şi While, prin intermediul declanşatoarelor cu acelaşi nume din fereastra Total. Atenţie! Cheia de sortare sau de indexare a bazei de date sursă trebuie să fie aceeaşi (sau să includă) cheia de totalizare.

29

3. • alte expresii logice. Operatorii logici.F.. 30 . modul de codificare a datelor în memoria calculatorului.T. funcţii trigonometrice etc. Operanzii numerici care intervin în expresii pot fi: • câmpuri numerice ale unei baze de date. şi nu unul orientat pe calcule matematice.T. ? 6<3 OR 4*2=9 . • tipul şir de caractere. Exemple: ? NOT (1=3) . <=. • tipul dată calendaristică. • variabile de tip numeric. NOT negaţie logică 3 AND “şi” logic 4 OR “sau” logic De asemenea. în ordinea priorităţii de evaluare.1 Tipul logic Este caracteristic datelor care nu pot lua decât două valori. Elemente de interfaţă 3. Pentru a specifica valoarea “adevărat” a unei expresii de tip logic se foloseşte construcţia . iar pentru valoarea “fals” se foloseşte . ? (1<=4) AND (5>3) . tipul numeric este implementat astfel încât să permită realizarea majorităţii operaţiilor matematice întâlnite în partea practică.F. construită după anumite reguli sintactice. • funcţii care returnează valori numerice. logaritmul.T. • variabile de tip logic. O expresie de tip logic reprezintă o combinaţie de operanzi şi operatori. • tipul numeric. În limbajul FoxProW vom avea următoarele tipuri de date: • tipul logic. Operanzii ce intră în componenţa expresiilor logice sunt de următoarele tipuri: • câmpuri de tip logic ale unei baze de date. …) este de tip logic. True (adevărat) sau False (fals). sunt următorii: Prioritatea Operator Semnificaţie 1 (.). a cărei evaluare va avea ca rezultat o valoare logică. TIPURI DE DATE Un tip de date reprezintă o caracteristică a datelor prin care se stabileşte ce operaţii se pot executa asupra lor. 3. rezultatul unei expresii care conţine operatori relaţionali (<.) grupează expresiile 2 !.2 Tipul numeric Cu toate că limbajul FoxProW este un limbaj orientat pe lucrul cu baze de date. De asemenea sunt prevăzute o serie de funcţii matematice prin care se pot calcula funcţiile matematice elementare (exponenţiala.. semnificaţia acestor date. • funcţii ce returnează valori logice.6 sub Windows – Intrarea şi ieşirea din FoxProW.FoxPro 2.

numărul de zecimale este 2. în ordinea priorităţii. modulo (restul împărţirii) 4 +.44.6667 Observaţie: numărul de cifre cu care FoxProW lucrează intern nu este afectat de comanda SET DECIMALS.area numerelor este controlat[ de comanda SET DECIMALS care are următoarea sintaxă: SET DECIMALS TO [n] Această comandă determină numărul minim de cifre zecimale care sunt afişate în cazul în care nu se specifică un format explicit de afişare. rezultatul fiind de tip numeric. != diferit de <= mai mic sau egal cu >= mai mare sau egal cu Funcţia MOD( ). specificându-se un alt număr prin n. Aceştia sunt: Operator Semnificaţie < mai mic decât > mai mare decât = egal cu <>.667 ( 0.) grupează expresiile 2 **. Între două expresii numerice se pot aplica şi operatori relaţionali. Exemplu: SET DECIMALS TO 3 a=2/3 DISPLAY MEMORY LIKE a A Pub N 0. #. /. având ca rezultate tot valori numerice. Implicit. împărţire. scădere Evaluarea unei expresii. această comandă controlând doar aspectul exterior al rezultatului. % înmulţire.11) 0 Afi.FoxPro 2. Exemplu: ? 2/3 0. dar el se poate schimba prin comanda SET DECIMALS. Exemple: ? MOD (38. se face de la stânga la dreapta. având sintaxa: MOD (expN1. expN2) returnează restul obţinut prin împărţirea expresiei numerice N1 la expresia numerică N2.6) 2 ? MOD (44. ^ ridicare la putere 3 *. Operatorii care se aplică unor operanzi numerici.6 sub Windows – Intrarea şi ieşirea din FoxProW. în ordinea apariţiei operatorilor în expresie. sunt următorii: Prioritatea Operator Semnificaţie 1 (. Elemente de interfaţă • constante numerice. adunare.11.67 SET DECIMALS TO 4 ? 2/3 0. 31 . pe acelaşi nivel de prioritate. obţinându-se expresii logice.66666667) Comanda DISPLAY MEMORY este folosită în acest exemplu pentru a afişa pe ecran informaţii despre variabila a.

32) 9 ? FLOOR (-4.FoxPro 2. Funcţii referitoare la semnul datelor numerice ABS (expN) – returnează valoarea absolută a argumentului.25) -2 Partea fracţionară a unui număr se obţine conform relaţiei {a} = a .46 ? a-INT(a) 0. Exemple: ? ABS (-400) 400 ? SIGN (-32) -1 a=-2/3 ? a=SIGN(a)*ABS(a) . FLOOR (expN) – returnează cel mai apropiat întreg mai mic sau egal cu argumentul.T. SIGN (expN) – returnează: +1 dacă expN > 0 0 dacă expN = 0 -1 dacă expN < 0. x SQRT(expN) – returnează e p N . mai mare sau egal cu argumentul.[a].25 ? a-INT(a) -0.46 a=-2.6 sub Windows – Intrarea şi ieşirea din FoxProW. expN2) aproximează expN1 la un număr real cu expN2 zecimale (în acest caz numărul de zecimale exprimat prin SET DECIMALS este ignorat). Exemple: 32 . Elemente de interfaţă Vom prezenta în continuare funcţiile numerice. Funţii de aproximare a datelor numerice INT (expN) – returnează partea întreagă a argumentului. Funcţii matematice elementare EXP(expN) – returnează e exp N .32) 9 ? CEILING (-4. Exemple: a=14.23) -4 ? FLOOR (8. adică acele funcţii care au ca scop prelucrarea datelor numerice.25 Alte moduri de a obţine o aproximaţie întreagă a unui număr sunt date de funcţiile: CEILING (expN) – returnează cel mai apropiat întreg.32) -5 Funcţia ROUND (expN1. LOG(expN) – returnează ln(exp N ) . Exemple: ? CEILING (8. LOG10(expN) – returnează lg(exp N ) .46) 14 ? INT (-2. Exemplu: ? INT (14.

exprimat în radiani.12. COS (expN) – returnează cosinusul unghiului expN. ACOS (expN) – returnează arccosinusul unghiului expN. expN2. cu o dobândă fixă. 0. de perioade.39 ? LOG(2) 0. TAN (expN) – returnează tangenta unghiului expN.00 ? EXP(LOG(3)) 3. expN2. RTOD (expN) – returnează valoarea în grade a unghiului expN exprimat în radiani. expN3) – returnează valoarea viitoare a unei investiţii. ASIN (expN) – returnează arcsinusul unghiului expN. 6) 411140. Exemplu: ? PAYMENT (100000. iar expN3 reprezintă numărul de plăţi. exprimat în radiani.69 ? LOG10(10) 1. periodică. de plăţi. calculată ca o sumă de plăţi periodice constante. expN3) – returnează valoarea viitoare a unei investiţii.32 ? PV (100000. numărul de zecimale returnat de PI ( ) este determinat de SET DECIMALS.00 ? SQRT(2) 1. 0. Exemplu: ? DTOR (90) = PI ( ) / 2 . exprimat în radiani. DTOR (expN) – returnează valoarea în radiani a unghiului expN exprimat în grade. expN3) – returnează valoarea fiecărei plăţi dintr-o serie periodică de plăţi a unui împrumut cu o dobândă fixă.T. aceasta se calculează ca o serie de plăţi periodice la o rată a dobânzii constantă. Elemente de interfaţă ? EXP(2) 7.10. expN2 este rata dobânzii la nivelul unei perioade. fiecărui caracter i se 33 . PV (expN1.6 sub Windows – Intrarea şi ieşirea din FoxProW.00 Funcţiile DTOR şi RTOD sunt funcţii inverse. expN1 reprezintă valoarea unei plăţi (constantă). expN3 este numărul de plăţi în care se face plata împrumutului. Funcţii referitoare la calcule financiare şi statistice PAYMENT (expN1. FV (expN1.90 3. 0. expN2 este rata dobânzii. iar expN3 reprezintă numărul de perioade. ? RTOD (PI ( )/ 4) 45.73 ? FV (100000. ATAN (expN) – returnează arctangenta unghiului expN. expN2.41 Funcţii trigonometrice PI ( ) – returnează valoarea lui π .FoxPro 2. 12) 146763. 6) 811518.12. expN2 este rata dobânzii. expN1 reprezintă valoarea împrumutului. SIN (expN) – returnează sinusul unghiului expN. exprimat în radiani. ordinea acestora fiind esenţială.3 Tipul şir de caractere Un şir de caractere reprezintă o mulţime ordonată de caractere care se tratează ca un tot unitar Într-un şir de caractere. expN1reprezintă valoarea unei plăţi periodice. adică unghiul de 180 de grade.

Aceştia sunt operatori binari care testează dacă două şiruri de caractere se află sau nu într-o relaţie dată. mulţimea caracterelor ce alcătuiesc şirul va fi încadrată de celălalt tip decât cel din şir. blancurile de la sfârşitul şirurilor fiind ignorate. la > mai mare decât nivel de caracter. Un subşir al şirului dat reprezintă o porţiune din şir. • variabile de tip şir de caractere. dar nu şi blancul de la începutul celui de-al doilea şir. pentru a fi egale. • funcţii ce returnează şiruri de caractere. Dacă lungimea şirului de caractere este 1. începând de la o poziţie şi având o lungime dată. • constante de tip şir de caractere. sunt considerate egale. În cazul SET EXACT ON.d. De exemplu ‘Şir de caractere’ şi ”Şir de caractere” reprezintă acelaşi şir de caractere. #. Operanzii care intră în componenţa acestor tipuri de expresii pot fi: • câmpuri de tip şir de caractere ale unei baze de date. încadrate între apostrofuri simple sau duble (la ambele capete trebuie să fie acelaşi tip de apostrof. acesta se reduce la un caracter. • operatori de comparare sau relaţionali. Numărul caracterelor dintr-un şir reprezintă lungimea şirului. a cărei evaluare va avea ca rezultat un şir de caractere. 34 . < mai mic decât returnează “adevărat” dacă relaţia este adevărată şi “fals” în caz contrar. În cazul SET EXACT OFF. două şiruri care sunt identice pe lungimea celui mai scurt. Operatorii relaţionali ce se aplică între două şiruri de caractere sunt: operator relaţie efect $ inclus în returnează valoarea adevărat dacă primul şir de caractere este conţinut în al doilea şi fals în caz contrar. Asupra şirurilor de caractere se aplică două tipuri de operatori: • operatori de concatenare. Dacă cele două şiruri nu se află în această relaţie. de exemplu “A”. Pentru a include unul dintre cele două delimitatoare într-un şir de caractere. Constantele de tip şir de caractere se specifică prin mulţimea caracterelor care le compun. astfel: se verifică relaţia dintre primele <>. care este şi opţiunea implicită. == identic Compararea a două şiruri de caractere de lungimi diferite este controlată de comanda SET EXACT ON / OFF. realizată după anumite reguli. două şiruri de caractere trebuie să coincidă caracter cu caracter. rezultatul evaluării expresiei este fals. • operatorul de concatenere special “-“: ‘salut_ _ _ _’ + ‘_prieteni !’ va avea ca rezultat: ‘salut_prieteni !_ _ _ _’. Dacă lungimea şirului este 0 obţinem şirul nul sau vid. ‘’ sau “”. Se observă că blancurile de la sfârşitul primului şir sunt eliminate. Un astfel de operator are sintaxa: expC1 operator expC2 Rezultatul evaluării acestei expresii este adevărat dacă şirul expC1 se află în relaţia dată de operator cu şirul expC2. Operatorii de concatenare sunt doi la număr şi anume: • operatorul de concatenare simplu ”+”: ‘salut_ _ _ _’ + ‘_prieteni !’ va avea ca rezultat: ‘salut_ _ _ _ _prieteni !’.FoxPro 2. specifică operatorului.6 sub Windows – Intrarea şi ieşirea din FoxProW. compararea se face în ordine.a. O expresie de tip şir de caractere reprezintă o combinaţie de operanzi şi operatori.m. != diferit de <= mai mic sau egal caractere ale celor două şiruri. Un grup aparte de operatori asupra şirurilor de caractere îl constituie operatorii relaţionali. dacă acestea sunt egale >= mai mare sau egal se trece la cel de-al doilea caracter ş. ‘1’. Elemente de interfaţă va putea asocia un număr reprezentând poziţia acestuia în cadrul şirului (primul caracter va avea poziţia 1).

expN) – extrage din şirul expC. REPLICATE (expC. pe o lungime de expN2 caractere.T. RTRIM (expC) – elimină blancurile de la sfârşitul şirului de caractere expC. Funcţii referitoare la subşirurile de caractere SUBSTR (expc. expN1. Exemplu: ? REPLICATE (‘AB ’.T. 6) Ziua LEFT (expC. de la dreapta spre stânga. începând de pe poziţia expN1. Exemplu: ? LEFT (‘La multi ani !’. expN) cu SUBSTR (expC. RIGHT (expC. un subşir de expN caractere. expN) cu SUBSTR (expC. 2) La ? RIGHT (‘Noapte buna !’. 6) == SPACE (6) . Exemplu: ? SUBSTR (‘ABCDEF’. ? 65 = ASC (CHR(65)) . LTRIM (expC) – elimină blancurile de la începutul şirului de caractere expC.FoxPro 2. expN2) – extrage subşirul expC. expN) – extrage din şirul expC.6 sub Windows – Intrarea şi ieşirea din FoxProW. de la stânga spre dreapta. Funcţiile CHR şi ASC sunt funcţii inverse. Elemente de interfaţă Funcţii referitoare la codificarea caracterelor din şiruri CHR (expN) – returnează caracterul ASCII corespunzător codului numeric expN. deci de la stânga lui. LEN (expC) – expN +1) unde funcţia LEN (expC) returnează lungimea şirului expC. dacă expN2 lipseşte. deci de la 35 . SPACE (expN) – returnează un şir de blancuri cu lungimea expN. expN) – returnează un şir obţinut prin repetarea şirului expC de expN ori.T.T. 3) BCD ? SUBSTR (‘Buna Ziua’. un subşir de expN caractere. 6) buna În mod evident. 1. Exemplu: ? CHR (49) 1 ? CHR (65) ==’A’ . ASC (expC) – returnează codul numeric al caracterului ASCII expC. ALLTRIM (expC) – elimină blancurile de la începutul şi sfârşitul şirului de caractere expC. subşirul extras se întinde până la sfârşitul şirului din care se extrage. expN) şi RIGHT (expC. 2. Exemplu: ? ‘A’ == CHR (ASC (‘A’)) . Exemplu: ? ASC (‘A’) 65 ? ASC (‘a’) =ASC (’alfa’) . au loc echivalenţele de funcţii: LEFT (expC.T. 3) AB AB AB ? REPLICATE (‘ ’.

.. până se obţine o lungime a şirului de expN caractere.. indică a câta apariţie a subşirului căutat încheie acţiunea de căutare....... 40. funcţia face distincţie între majuscule şi minuscule. căutarea are loc de la stânga la dreapta. expC) – adaugă la dreapta... începând de la ultimul caracter. ATLINE – caută subşirul de caractere expC1 în şirul expC2 (şir care se întinde pe mai multe linii).. funcţia returnează poziţia subşirului găsit în cadrul şirului.. începând cu primul caracter şi continuând cu următoarele........AT (expC1. 40. expC) – adaugă la ambele capete.6 sub Windows – Intrarea şi ieşirea din FoxProW.. dacă subşirul este găsit. RAT (expC1.. ‘-’) . dacă subşirul este găsit..... începând cu primul caracter şi continuând cu următoarele. expC2 [.....FoxPro 2. la expresia expr. expN... până se obţine o lungime a şirului de expN caractere. Funcţii ce returnează informaţii despre şirurile de caractere LEN (expC) – returnează lungimea şirului de caractere expC. parametrul expN. şirul de caractere expC... opţional...... Exemplu: ? ALLTRIM (‘_ _ _AB ’) == ‘AB ’ ..expN]) – caută în şirul de caractere expC2. şirul de caractere expC.. expN.-Pagina 1 ? PADR (‘Pagina 1. deci de la dreapta spre stânga. ? ‘Ma numesc_’ + RTRIM (‘Ionescu_ _ _ ’) + ‘_’ + LTRIM (‘_ _ _ _ Ion’) Ma numesc Ionescu Ion PADC (expr. ACTLINE (expC1.. parametrul expN. subşirul expC2... PADL (expr. expC2) – returnează numărul de apariţii ale subşirului expC1 în şirul expC2.. parametrul expN.. până se obţine o lungime a şirului de expN caractere.. subşirul expC2.. funcţia face distincţie între caractere majuscule şi minuscule.. 36 . altfel returnează 0...... expC2) – caută subşirul de caractere expC1 în şirul expC2 (şir care se întinde pe mai multe linii).. la expresia expr.Pagina 1 .. funcţia returnează poziţia subşirului găsit în cadrul şirului. şirul de caractere expC.... la expresia expr... returnează 0 dacă subşirul nu a fost găsit...expN]) – caută în şirul de caractere expC2. căutarea are loc de la stânga la dreapta.. căutarea are loc de la dreapta la stânga.. ‘-’) . continuând spre începutul şirului. sau numărul liniei în care a fost găsit.. opţional. 40..... expN.... altfel returnează 0... funcţia nu face distincţie între caractere majuscule şi minuscule.. OCCURS (expC1.. altfel returnează 0. indică a câta apariţie a subşirului căutat încheie acţiunea de căutare.. expC2 [....expN]) – caută în şirul de caractere expC2. funcţia returnează poziţia subşirului găsit în cadrul şirului.. ATC (expC1. funcţia nu face distincţie între caractere majuscule şi minuscule. dacă subşirul este găsit.T.. sau numărul liniei în care a fost găsit. expC2 [. funcţia face distincţie între majuscule şi minuscule..? PADC (‘Pagina 1. ‘-’) Pagina 1.. returnează 0 dacă subşirul nu a fost găsit. RATLINE – caută subşirul de caractere expC1 în şirul expC2 (şir care se întinde pe mai multe linii). indică a câta apariţie a subşirului căutat încheie acţiunea de căutare. expC) – adaugă la stânga. opţional... sau numărul liniei în care a fost găsit. Exemplu: ? PADL (‘Pagina 1.. subşirul expC2. PADR (expr. Elemente de interfaţă dreapta lui. returnează 0 dacă subşirul nu a fost găsit..

FoxPro 2. în această comparare se pot folosi metacaracterele: • “*” – înlocuieşte orice grup de caractere. ISDIGIT (expC) – returnează adevărat dacă şirul expC începe cu o cifră şi fals în caz contrar. indiferent de natura acestuia. • “?” – înlocuieşte un singur caracter. Exemplu: a=’MIHAI’ b=’mihai’ ? UPPER (a) == UPPER (b) . ‘COMPUTER’) . ? PROPER (‘PoPEscu vaLenTIn’) Popescu Valentin Funcţii speciale asupra şirurilor de caractere LIKE (expC1. expC2) – compară două expresii de tip şir de caractere astfel: una dintre expresii reprezintă modelul în care trebuie să se încadreze cea de-a doua. ISUPPER (expC) – returnează adevărat dacă şirul expC începe cu omajusculă şi fals în caz contrar. UPPER (expC) – transformă toate literele mici din şirul expC în litere mici. PROPER (expC) – transformă primul caracter al unui cuvânt din şirul expC în majusculă (dacă este alfabetic). independent de tipul caracterelor alfabetice care îl compun. Dacă SET COMPATIBLE este ON. restul caracterelor rămânând neschimbate. ? LIKE (‘?OTOR’. cât şi majuscule. Căutarea lui expC2 în expC1 este influenţată de starea lui SET COMPATIBLE. Elemente de interfaţă Exemplu: ? LEN (‘Salutari !‘) 10 ? LEN (‘Curs de ‘ + ‘FoxProW’) 15 ISALPHA (expC) – returnează adevărat dacă şirul expC începe cu un caracter alfabetic şi fals în caz contrar. ? LOWER (a) == LOWER ( b) . acestea devenind semnificative în această operaţie.T. restul caracterelor rămânând neschimbate. iar următoarele în litere mici. ISLOWER (expC) – returnează adevărat dacă şirul expC începe cu o literă mică şi fals în caz contrar. returnând adevărat în caz de potrivire şi fals în caz de nepotrivire. ‘TRACTOR’) 37 .T. Exemplu: ? LIKE (‘*TER’. expC1 reprezintă modelul în care se încearcă găsirea lui expC2. ‘ROTOR’) . Căutarea este sensibilă la majuscule.6 sub Windows – Intrarea şi ieşirea din FoxProW. indiferent de număr şi natură. Pentru SET COMPATIBLE OFF blancurile de început din cele două şiruri nu se mai înlătură înainte de căutare.T. Aceste funcţii sunt foarte utile la compararea a două şiruri de caractere. dar “*” şi “?” pot înlocui atât litere mici.T. ? LIKE (‘?OTOR’. înainte de căutare se înlătură toate blancurile de început din cele două şiruri. Funcţii privind transformări ale şirurilor de caractere LOWER (expC) – transformă toate majusculele din şirul expC în litere mici.

dar ele pot fi schimbate. Elemente de interfaţă . Exemplu: ? SOUNDEX (‘Toni’) == SOUNDEX (‘Tony’) . sunt implicite. Exemplu: ? {02/330/99} = {_} . Exemplu: data_v = {_/_/_} ? data_v = {_} .F. ci avansarea datei cu o zi în ordine calendaristică.6 sub Windows – Intrarea şi ieşirea din FoxProW. FoxProW oferind o mulţime de funcţii pentru manipularea acestora. Exemplu: STORE {02/23/01} TO data_c ? data_c 02/23/01 Data calendaristică vidă se specifică prin blancuri în poziţia zilei. separate prin caracterul “/” şi încadrate între paranteze acolade. calendaristic.FoxPro 2.4 Tipul dată calendaristică În cazul unei descrieri dinamice a unor obiecte. primeşte ca parametru şirul de caractere expC şi returnează tot un şir de caractere de lungime 4 reprezentând codificarea fonetică a şirului transmis. ziua şi anul corespunzător. celei de-a doua. Operatorii relaţionali se pot aplica şi asupra datelor calendaristice.T. Expresiile de tip dată calendaristică pot conţine: • câmpuri de acest tip ale unei baze de date. ? SOUNDEX (‘Alfabet’) A411 3. • variabile de tip dată calendaristică. deci se poate scădea sau aduna o constantă de tip dată calendaristică la o dată fixată. separatorul “/”. sau printr-un singur blanc încadrat între acolade. De exemplu. O constantă de tip dată calendaristică se specifică prin luna. precum şi faptul că anul se specifică prin două cifre.T.T. această funcţie se foloseşte pentru a afla dacă două şiruri de caractere “sună la fel”. Pentru memorarea şi prelucrarea datelor calendaristice s-a introdus acest tip de date. funcţia nu este sensibilă la majuscule. o dată calendaristică este mai mare decât o alta atunci când prima îi urmează.1 12/31/91 Observăm că adunerea unei zile la o dată calendaristică nu are ca efect creşterea cu 1 a numărului de zile. • funcţii ce returnează valori de tip dată calendaristică. Constantele de acest tip sunt reprezentate în calculator prin numere reprezentând zile. 38 . Exemplu: ? {02/29/92} + 1 03/01/92 ? {01/01/92} . Această ordine. SOUNDEX (expC) – returnează o reprezentare fonetică a unui şir de caractere. lunii şi anului. • constante de tip dată calendaristică. datele referitoare la acestea privesc evoluţia lor în timp. deci factorul temporal are o importanţă deasebită în acest caz. FoxProW tratează datele invalide (care nu există) ca date calendaristice vide.

1999 Având o expresie de tip dată calendaristică. reprezentând numele zilei în engleză pentru CDOW. Această dată este controşată de sistemul de operare. FoxProW neavând funcţii sau comenzi care să o modifice direct. putem afla în ce zi a săptămânii cade această dată. Data curentă a sistemului se obţine folosind funcţia DATE ( ). Exemplu: ? DATE ( ) 03/07/99 SET CENTURY ON SET MARK TO ‘. rezultatul fiind de tip numeric. astfel: . Exemplu: ? CDOW (DATE ( )) Saturday ? DOW ((10/02/1864 )) 1 Ziua în cadrul lunii este returnată de funcţia DAY (expD).ll. În specificarea anului se pot folosi două sau patru cifre. delimitatorii care separă ziua. Rezultatul funcţiei este de tip dată calendaristică. Funcţia returnează ziua din cadrul săptămânii în care cade această dată.07.zz BRITISH zz/ll/aa FRENCH zz/ll/aa GERMAN zz.6 sub Windows – Intrarea şi ieşirea din FoxProW. Exemplu: ? DAY ((03/14/1990) ) 14 Luna corespunzătoare unei expresii de tip dată calendaristică este returnată de 39 . reprezentând a câta zi din săptămână pentru DOW. iar OFF stabileşte patru cifre pentru an. Alegerea între aceste două variante se face cu comanda SET CENTURY ON /OFF. până la execuţia unei comenzi SET MARK este caracterul “/”. Separatorul implicit.ll. Acest lucru se realizează cu funcţiile DOW (expD) şi CDOW (expD). . unde expC reprezintă un singur caracter care va deveni delimitatorul în reprezentarea externă a datelor calendaristice. luna şi anul din expresia unei constante de tip dată calendaristică se pot modifica prin comanda SET MARK TO expC.ca şir de caractere.ca număr. De asemenea.FoxPro 2.aa ITALIAN zz-ll-aa JAPAN aa/ll/zz USA ll-zz-aa MDY ll/zz/aa DMY zz/ll/aa YMD aa/ll/zz Formatul implicit pentru data calendaristică este cel american.’ ? DATE ( ) 03. unde ON indică două cifre pentru an. unde expD este o expresie de tip dată calendaristică. Elemente de interfaţă Formatul de specificare a datelor calendaristice este controlat de comanda: SET DATE [TO] AMERICAN / ANSI / BRITISH / FRENCH / GERMAN / ITALIAN / JAPAN / USA / MDY / DMY /YMD Formatul pentru fiecare dintre opţiuni este: Tipul datei Formatul AMERICAN ll/zz/aa ANSI aa.

iar expN precizează numărul de luni cu care se avansează.6 sub Windows – Intrarea şi ieşirea din FoxProW. SET CLOCK TO [linie. putându-se reveni la aceasta prin comanda SET CLOCK TO (fără parametri). unde expD reprezintă data calendaristică faţă de care se calculează saltul.FoxPro 2. 3) 05/08/91 ? GOMONTH ((01/31/90). valoarea returnată fiind un şir de caractere de lungime 8. coloană] – specifică poziţia pe ecran unde va apărea ora (poziţia implicită este 0. Dacă în apelul funcţiei se specifică şi parametrul expN.80 Ora exactă dată de sistem poate fi menţinută tot timpul pe ecran folosind comenzile SET CLOCK ON /OFF – ON face ca ceasul să rămână pe ecran. sau cu care se întoarce în timp. 1) 02/28/90 Dintr-o expresie de tip dată calendaristică putem izola anul. 10 SET CLOCK OFF SET CLOCK TO SET CLOCK ON SET CLOCK OFF Formatul de afişare a ceasului este HH:MM:SS_xx unde xx poate fi “am” sau “pm”. valoarea returnată va include şi sutimile de secundă Exemplu: ? TIME ( ) 02:39:49 ? TIME (0) 02:40:01. minute. în formatul: HH:MM:SS (oră. expN). 60. ca valoare numerică folosind funcţia YEAR (expD). ca valoare numerică folosind fun02/28/90 Dintr-o expresie de tip dată calendaristică putem izola anul. Exemplu: ? GOMONTH ((02/08/91). Elemente de interfaţă funcţiile: MONTH (expD) – care returnează un număr reprezentând a câta lună a anului) şi CMONTH (expD) – care returnează denumirea lunii corespunzătoare în limba engleză. adică în colţul din dreapta-sus). Exemplu: CLEAR SET CLOCK TO 10. secunde). Exemplu: ? YEAR (DATE ( ) + 365) 2001 Controlul timpului în FoxProW Ora exactă a sistemului se obţine cu funcţia TIME ( [expN] ). Exemplu: ? MONTH (DATE ( )) 3 ? CMONTH ((03/25/1999)) March Pentru a avansa sau a ne înapoia cu un număr de luni se utilizează funcţia: GOMONTH (expD. Acest format se poate schimba folosind comanda SET HOURS TO [12 / 24] unde parametrul 24 va implica formatul orei de la 0 la 23. Rezultatul este de tip dată calendaristică. iar parametrul 12 va implica afişarea orei de la 0 la 11 cu “am” sau “pm”. în cazul unei valori negative. încazul unei valori pozitiva. 40 .

Elemente de interfaţă 3. nuluri. rezultatul returnat de funcţie în urma evaluării va fi de tip şir de caractere. adevărat dacă expresia este vidă şi fals în caz contrar. a acesteia. ? EVALUATE (‘6*3/2’) 9 ? EVALUATE (REPLICATE (‘1’. adică dacă aceasta este vidă sau nu. rezultatul fiind de tip logic. tab-uri. memo fără conţinut general fără conţinut Funcţia care testează acest lucru este EMPTY (expr). 4) + ‘/11’) 101 ? DATE ( ) 03/09/99 ? EVALUATE (‘DATE ( ) + 1’) 03/10/99 Un alt tip de testare a unei expresii este cel referitor la valoarea vidă. 41 . boolean M memo G general U nedefinit Exemplu: ? TYPE (‘DATE ( )’) D ? TYPE (‘1=3’) L ? 1=3 .F.FoxPro 2.5 Funcţii referitoare la toate tipurile de date TYPE (expC) – returnează tipul expresiei expC.6 sub Windows – Intrarea şi ieşirea din FoxProW. numeric. ? TYPE (‘ALFA’) U ? TYPE (‘ “ALFA” ’) C ? TYPE (‘1456’) N O funcţie similară cu funcţia TYPE este funcţia: EVALUATE (expC) – în funcţie de conţinutul şirului de caractere expC trimis ca parametru.F. dată calendaristică. Caracterul Tipul expresiei returnat C şir de caractere N numeric D dată calendaristică L logic. sfârşit de linie numeric este 0 dată calendaristică data vidă ( { / / sau { } ) logic este fals . logic. semnificaţia termenului “vidă” diferind de la un tip de date la altul: Tipul datei Semnificaţia termenului “vidă” şir de caractere conţine numai spaţii. nulă. Exemplu. memo sau general. unde expC reprezintă un şir de caractere.

alfa = ‘a1’ ? BETWEEN (alfa. ‘ABC’.…]) – returnează valoarea adevărat dacă expr1 este găsită printre expresiile din lista expr2. expr2 [. rezultatul fiind de tip logic. ‘vineri’. expr3) – testează dacă expr1 se află între expr2 şi expr3.T. Exemplu. 7*9) 56 ? MAX ( {03/08/93}. ? INLIST (7. DATE ( ) ) = DATE ( ) NOTE testeaza daca am depasit data de 08. ‘miercuri’. MAN (expr1.1993 . …] – returnează valoarea minimă obţinută după evaluarea expresiilor din listă. 6. 42 . 10) . Apartenenţa la o mulţime este testată prin funcţia: INLIST (expr1. 8. ‘123’) 123 O altă funcţie FoxProW care are ca scop compararea unor expresii este funcţia : BETWEEN (expr1. Elemente de interfaţă Funcţiile: MIN (expr1.F.F. ‘duminica’) . 7*8. ? MIN (64. 100. ‘luni’.03.T. ‘joi’.6 sub Windows – Intrarea şi ieşirea din FoxProW.expr3. ? BETWEEN (144. ? MIN (‘abc’. ‘marti’. ‘sambata’. expr2. 0.expr3.T.FoxPro 2. …] – returnează valoarea maximă obţinută după evaluarea expresiilor din listă. Exemplu. ‘az’) . 4. expr2 [. 200) . 2. zi = ‘miercuri’ ? INLIST (zi.… şi fals în caz contrar. expr2 [. ‘aa’. expr3. Exemplu.expr3.

acest tip determină de asemenea şi comenzile şi funcţiile ce se pot aplica variabilei respective. înţelegând prin aceasta că ea poate memora un număr. • tipul variabilei este dat de tipul valorii expresiei. în timpul unui program.) se foloseşte variabila de memorie. adică stabilirea conţinutului iniţial al variabilei. obţinându-se o valoare de un anumit tip. cu valoarea initiala 2 a=”buna” && vechea variabila “a” este inlocuita cu. sau simplu variabila. şir de caractere etc. Deci o variabilă are trei elemente specifice şi anume: ♦ numele variabilei. dacă se găseşte. conţinutul unei variabile se poate modifica. Exemplu: a=2 && se creeaza variabila numerica “a”. cu următoarea sintaxă: < variabilă > = < expr > Funcţionarea unei asemenea comenzi sre loc astfel: • se evaluează expresia “expr”. Variabila alfa este de tip numeric. Crearea unei variabile sau modificarea valorii acesteia se realizează prin operatorul de atribuire. aceasta presupunând: ♦ atribuirea unui nume variabilei respective (numele este furnizat de program. o valoare de tip numeric. la conceperea programului). Aceasta reprezintă o zonă de memorie. reprezentând tipul datei ce se poate memora în zona de memorie a variabilei. indiferent de tipul anterior al variabilei. folosit pentru identificarea variabilei respective printre celelalte variabile existente la un moment dat în memorie. Exemplu: nume conţinut + tip Variabilă alfa 432 Referirea la o variabilă se face prin numele său. Pentru folosirea unei variabile într-un program FoxProW.6 sub Windows – Intrarea şi ieşirea din FoxProW. logic. ea trebuie mai întâi creată. ♦ stabilirea tipului şi rezervarea zonei de memorie care este atribuită variabilei. căreia i se atribuie un nume şi în care se poate memora o valoare de un anumit tip. • se caută în memorie variabila cu numele “variabilă” şi.1 Variabile Prelucrarea datelor cu ajutorul calculatorului presupune mai întâi depozitarea acestora într-o memorie internă sau externă a calculatorului.FoxPro 2. reprezentând data ce este memorată în zona de memorie a variabilei. ♦ tipul variabilei. Pentru depozitarea în memoria internă a calculatorului a unei anumite date (de tip numeric. Astfel: ? alfa 432 se traduce prin “afişează (?) conţinutul variabilei alfa (432)”. 43 . VARIABILE ŞI MASIVE 4. se înlocuieşte vechiul conţinut al acesteia cu valoarea expresiei. ♦ atribuirea unei valori iniţiale pentru aceasta. Elemente de interfaţă 4. atribuit de programator sau predefinit de FoxProW. ♦ conţinutul sau valoarea variabilei. în cazul când aceasta exista şi înaintea executării comenzii.

elimină din memorie şi toate variabilele existente la momentul execuţiei respectivei comenzi. se va putea reveni la 44 . separate prin virgulă. care incep cu litera a RELEASE ALL EXCEPT b? NOTE se vor elimina toate variabilele cu exceptia. fără alţi parametri. din care primul este b De asemenea. Pentru a elimina din memorie numai o parte a variabilelor. cu valoarea initiala {12\01\70} O comandă echivalentă cu operatorul de atribuire este comanda STORE: STORE < expr > TO < listă variabile > Comanda constă în evaluarea expresiei “expr” şi depunerea valorii rezultate în toate variabilele din “listă variabile”. RELEASE ALL EXCEPT < machetă > . Apare deseori situaţia în care se doreşte memorarea unor variabile (denumire şi conţinut) pe un dispozitiv de memorare extern. variabilele vor fi înlăturate din memorie şi la execuţia uneia dintre comenzile CLEAR ALL sau CLEAR MEMORY. Cele care nu există vor fi create odată cu execuţia comenzii.FoxPro 2. După ce modificările executate nu mai sunt necesare. b. Elemente de interfaţă una noua.va înlătura din memorie toate variabilele care se potrivesc cu “machetă”. c. de tip data. astfel: RELEASE ALL LIKE < machetă > . Exemplu: STORE 0 TO a. de tip data calendaristica. de tip sir de caractere.6 sub Windows – Intrarea şi ieşirea din FoxProW. calendaristica si se initializeaza aceasta. Ambele comenzi. Dacă nu mai sunt necesare după ce au fost folosite. memoria ocupată de ele poate fi eliberată folosind comanda RELEASE: RELEASE < listă variabile > sau RELEASE ALL [ LIKE < machetă > / EXCEPT < machetă >] În prima variantă se vor înlătura din memorie toate variabilele din “listă variabile”. cu excepţia celor care se potrivesc cu “machetă”. va contine sirul “buna” data={12\01\70} && se creeaza variabila “data”. pe lângă alte efecte. sunt initializate cu valoarea 0 STORE {01\11\93} TO data NOTE se creeaza variabila data. ce. caractere..va înlătura din memorie toate variabilele.. în vederea modificării acestora în memoria internă. • ? – orice caracter. care. cu valoarea {01\11\93} Comanda STORE şi operatorul de atribuire creează şi modifică variabile care sunt folosite în cadrul unui program. beta NOTE se elimină din memorie variabilele alfa si beta RELEASE ALL LIKE a* NOTE se inlatura din memorie toate variabilele. b. aceasta fiind alcătuită din numele variabilelor. putem folosi clauzele LIKE şi EXCEPT. Comanda RELEASE ALL. În alcătuirea machetei pot intra şi metacaracterele * şi ? cu semnificaţiile: • * – orice combinaţie de caractere. c NOTE se creeaza trei variabile numerice a. elimină din memorie toate variabilele şi toate masivele. celor al caror nume este format din doua. Exemplu: RELEASE alfa.

suma 1+2=3 O tehnică specială de lucru cu variabile o reprezintă macrosubstituţia. Macrosubstituţia funcţionează ca şi cum în locul variabilei respective ar fi pus şirul de caractere conţinut de aceasta. în fişierul “fişier” sau în câmpul memo “câmp memo”. în comandă se va introduce clauza ADDITIVE. b. b. în vederea unei refaceri ulterioare. ‘+’.mem a=5 b=3 suma=a+b ? a. b. adică restaurarea în memoria internă a unui grup de variabile salvate anterior într-un fişier pe disc. în clauzele ALL LIKE sau ALL EXCEPT (prezentate anterior). într-un fişier. Refacerea tuturor variabilelor prin comanda RESTORE FROM va avea ca efect înlăturarea tuturor variabilelor de memorie care existau înainte de execuţia comenzii. suma 5+3=8 RESTORE FROM f_var ? a. Exemplu: CLEAR ALL CLEAR a=1 b=2 suma=a+b ? a. ‘+’.6 sub Windows – Intrarea şi ieşirea din FoxProW. ‘=’. ‘=’. acestea se vor specifica prin “machetă”. Salvarea unui grup de variabile pe disc. Pentru a evita acest lucru. se realizează prin intermediul comenzii SAVE TO. in fisierul f_var. ‘=’. fără apostrofurile delimitatoare. si suma. denumire de fişier). dacă în comandă nu se specifică o altă extensie. este posibilă folosind comanda RESTORE FROM: SAVE TO < fişier > / TO MEMO < câmp memo > [ALL LIKE / EXCEPT < machetă >] RESTORE FROM < fişier > / FROM MEMO < câmp memo > [ADDITIVE] Comanda SAVE TO depozitează variabilele existente în memorie. Dacă se doreşte salvarea numai a unora dintre variabilele de memorie existente. Sintaxa macrosubstituţiei este: & < var > [. < expC > ] în care “var” desemnează variabila de tip şir de caractere care va fi substituită de conţinutul său. prin care conţinutul unei variabile de tip şir de caractere este tratat ca numele unei alte variabile sau alt câmp al FoxProW-ului (câmp al unei baze de date. când se foloseşte clauza TO MEMO.FoxPro 2. Fişierul creat cu comanda SAVE TO şi utilizat de RESTORE FROM va avea extensia implicită . când numele acestora diferă). b. care va determina adăugarea noilor variabile la cele anterioare (evident. suma 1+2=3 SAVE TO f_var NOTE se salveaza variabilele a. Exemplu: a=’alfa’ alfa=’Salut !’ ? &a Salut ! ? alfa &&echivalenta cu comanda anterioara 45 . ‘+’. Elemente de interfaţă vechea situaţie prin refacerea variabilelor depozitate anterior. iar operaţia inversă.MEM.

La conţinutul variabilei macrosubstituţiei se poate adăuga un şir de caractere “expC”. dată etc. la care se adaugă şirul de caractere ce urmează punctului. de masiv etc.6 sub Windows – Intrarea şi ieşirea din FoxProW. după care se va aplica macrosubstituţia.. pentru că macrosubstituţia este mai lentă. Astfel. instrucţiunile următoare nu vor funcţiona: a=’&a’ ? &a O altă metodă de referire indirectă la o variabilă. “1”. Exemplu: a=’nume’ b=’ propriu’ ? (a+b) && nu va fi tratata ca o expresie nume nume propriu … REPLACE (a) WITH ’Popescu’ NOTE in acest caz (a) este o expresie nume Ori de câte ori este posibilă folosirea expresiilor nume.FoxPro 2. Elemente de interfaţă Salut ! Ultimele două comenzi sunt echivalente. Se va obţine comanda ? ’alfa1’ din care se vor elimina apostrofurile delimitatoare. de câmp al unei baze de date. ajungându-se în final la comanda ? alfa1 care este identică cu cea din linia care urmează. se recomandă această metodă. Rezultatul acestei operaţii este asemănător cu cel al macrosubstituţiei. aceasta se încadrează între paranteze rotunde.). Pentru afişarea conţinutului variabilelor de memorie existente la un moment dat se poate folosi una dintre comenzile LIST MEMORY sau DISPLAY MEMORY: DISPLAY MEMORY [LIKE < machetă >] [TO PRINTER / TO FILE < fişier >] [NO CONSOLE] LIST MEMORY [LIKE < machetă >] [TO PRINTER / TO FILE < fişier >] [NO CONSOLE] 46 . Construcţia este tratată ca o expresie de tip nume numai acolo unde nu există posibilitatea confundării parantezelor rotunde cu cele care grupează operaţiile din expresiile FoxProW.’1’. rezultând comanda ? alfa. Pentru ca o expresie să fie tratată ca o expresie de tip nume. este reprezentată de expresiile nume. “alfa”. pe lângă macrosubstituţie.’1’ va fi tratată astfel: se preia conţinutul variabilei a. care va fi executată. Astfel. după care se elimină apostrofurile delimitatoare. Acesta se va concatena la sfârşitul şirului de caractere conţinut în variabilă. comanda ? &a va fi tratată astfel: se preia conţinutul variabilei a şi se introduce în locul construcţiei &a obţinându-se comanda ? ’alfa’. obţinându-se şirul “alfa1” care se introduce în instrucţiune în locul construcţiei &a. Variabila macrosubstituţiei nu trebuie să conţină un şir mai lung de 255 caractere. Nu se permite însă referirea recursivă a unei variabile într-o macrosubstituţie. Acestea determină tratarea valorii unei expresii ca un nume (de variabilă.’1’ Salut ! ? alfa1 Salut ! Comanda ? &a. Expresia de tip şir de caractere “expC” poate fi la rândul ei o macrosubstituţie. Exemplu: a=’alfa’ alfa1=’Salut !’ ? &a.

în paralel cu afişarea pe ecran. este dată de valorile expresiilor dintre paranteze (“expN1” şi “expN2” pentru primul tablou. prin introducerea de comenzi. valorile respective putând fi tratate atât ca un tot unitar.FoxPro 2. memoria folosită şi cea disponibilă. ♦ atribuirea unui nume prin care masivul va fi identificat. “expN3” şi “expN4” pentru cel de-al doilea ş. 4) NOTE va declara matricea alfa cu 2 linii si 4 coloane DECLARE vector (3).. adică numărul de elemente ale acestuia. fără a afecta comanda respectivă. în funcţie de numărul de elemente ale acestuia. adică dacă acesta este vector sau matrice. ale căror nume vor fi “masiv1”. de la 1 la 10 DIMENSION alfa (2. mat (5. predefinite. la imprimantă. Masivele sunt organizate sub forma unui tablou de valori. Elementele masivului sunt identificate prin poziţia acestora în cadrul tabloului. < expN2 >]) [. cât şi independent. ca variabile simple. putându-se astfel obţine doar tipărirea variabilelor sau afişarea lor într-un fişier. Declararea unui masiv se realizează prin una dintre comenzile DIMENSION sau DECLARE. < expN4 >] ) ] … DECLARE < masiv1 > ( <expN1 >) [. … Tipul tabloului. sau bidimensional când între parantezele rotunde se află două expresii.6 sub Windows – Intrarea şi ieşirea din FoxProW. astfel: 47 . cum ar fi: formatul afişării datelor pe ecran. Dacă se doreşte inhibarea afişării pe ecran se va folosi clauza NO CONSOLE. numerotate. menţinute automat în memorie. va fi dat de numărul de expresii numerice care urmează numelui: unidimensional când este prezentă o singură expresie. prin program sau în mod direct. Elemente de interfaţă Ambele comenzi afişează numele.2 Masive O metodă pentru memorarea mai multor valori în memoria internă a calculatorului este oferită de masive – structuri de date care permit memorarea mai multor valori într-o zonă de memorie continuă căreia i se atribuie un nume. < masiv2 > ( <expN3 >) [. Pentru selectarea spre afişare doar a unora dintre variabilele definite se foloseşte clauza LIKE. si matricea mat cu 5 linii si 10 coloane.m. tipul şi conţinutul tuturor variabilelor definite la un moment dat. “masiv2”. funcţionarea mouse-ului etc. Acestea se numesc variabile sistem. În comenzile DIMENSION şi DECLARE se pot înlocui parantezele rotunde cu cele pătrate. < expN2 >]) [. < masiv2 > ( <expN3 >) [. deci sub formă de vectori sau de matrice. unidimensional (vector) sau bidimensional (matrice). < expN4 >] ) ] … Cu aceste comenzi se pot declara unul sau mai multe tablouri. fie în fişierul “fişier” (TO FILE). FoxProW mai foloseşte un set de variabile.d. 10) NOTE se definesc vectorul vector cu 3 elemente. 4.a. numărul variabilelor create de utilizator. Dimensiunea tabloului. ♦ rezervarea zonei de memorie necesară depozitării valorilor care vor fi memorate în masiv. în vederea controlului diferitelor operaţii. care sunt identice ca funcţionare şi sintaxă: DIMENSION < masiv1 > ( <expN1 >) [. Afişarea se poate face fie la imprimantă (TO PRINTER).) Exemplu: DIMENSION a(10) NOTE defineste vectorul a cu 10 elemente. prin “machetă” desemnându-se variabilele ce vor fi afişate. Alături de variabilele pe care utilizatorul le defineşte. unidimensional sau bidimensional. Declararea unui masiv presupune următoarele operaţii: ♦ stabilirea tipului masivului.

are mai multe elemente decât vechiul masiv bidimensional. sir de caractere si toate elementele. a(3) a(3)=0 a=’ ‘ NOTE tipul tuturor elementelor masivului a va fi . de asemenea identificate printr-un singur indice. Transformarea unui masiv bidimensional într-unul unidimensional se face copiind elementele vechiului masiv. După declararea unui masiv. unidimensional. linie cu linie. Atât tipul. • la micşorarea dimensiunii masivului. indicând poziţia elementului în cadrul vectorului. în cadrul fiecărei linii copierea făcându-se până la ultimul element al acesteia. toate elementele masivului vor căpăta valoarea expresisi din instrucţiune. iar celelalte vor rămâne neschimbate.F. cât şi prin alfa(7).FoxPro 2. prin două numere. Elementele unei matrice pot fi. având iniţial valoarea .3). care va indica poziţia în matrice a elementului respectiv. Elemente de interfaţă • • printr-un singur număr.F. iar noile elemente vor fi de tip logic.F. indicând linia şi coloana în cadrul matricei. Exemplu: DIMENSION a(10) STORE 0 TO a NOTE toate elementele masivului vor fi de tip numeric. Trecerea inversă se face în mod analog: completarea masivului bidimensional se face pe linii. Se pot realiza astfel: • mărirea sau micşorarea dimensiunii unui tablou unidimensional. pentru redefinirea acestuia. Spre deosebire de alte limbaje de programare. vor fi iniţializate cu valoarea logică . în FoxProW elementele unui masiv nu trebuie neapărat să fie de acelaşi tip.. caz în care restul elementelor masivului unidimensional pentru care nu au mai fost elemente de copiat din primul masiv. elementele care sunt în plus vor fi eliminate din memorie.6 sub Windows – Intrarea şi ieşirea din FoxProW. avand initial valoarea 0 ? ‘a(3) =’. O modalitatea specială de iniţializare a elementelor unui masiv este dată de folosirea unei instrucţiuni de atribuire în care. 48 . astfel: mai întâi se numără elementele unei linii. cât şi valoarea unui element al masivului pot fi schimbate printr-o instrucţiune de atribuire (operatorul de atribuire “=” sau comanda STORE). acestuia vor avea valoarea ‘ ‘ Mărimea şi dimensiunile unui tablou creat anterior se pot schimba printr-o nouă comandă DIMENSION sau DECLARE. este introdus numele masivului. Pentru masive unidimensionale: • la mărirea numărului de elemente ale acestuia. după care se trece la următoarea. • transformarea unui tablou unidimensional într-unul bidimensional şi invers. având iniţial valoarea . toate elementele acestuia vor fi de tip logic. vechile elemente vor rămâne neschimbate. • redimensionarea unui tablou bidimansional. în locul variabilei de atribuit.. • noul masiv creat. Exemplu: alfa (1) alfa (2) alfa (3) alfa (4) alfa (5) alfa (6) alfa (7) alfa (8) Elementul din linia 2 şi coloana 3 poate fi identificat atât prin alfa(2. începând cu prima linie a masivului şi terminând cu ultima. Astfel. În această situaţie apar două cazuri: • masivul bidimensional avea mai multe elemente decât noul masiv unidimensional: în acest caz restul elementelor care nu au încăput se pierd.

<expN>] ) – returnează numărul elementelor.F.F. funcţia returnează numărul de linii ale masivului (numărul de elemente pentru masivele unidimensionale).F.F. Redimensionarea unui masiv bidimensional se realizează prin alocarea memoriei necesare noului masiv bidimensional.6 sub Windows – Intrarea şi ieşirea din FoxProW. 4) FOR I=1 TO 3 ? FOR J=1 TO 4 ?? a(I.F. iar elementele masivului bidimensional pentru care nu au corespondent în masivul unidimensional vor fi de tip logic. Exemplu: DIMENSION a(2. cu valoarea iniţială . “masiv” desemnează masivul asupra căruia ne informăm.FoxPro 2. elementele care nu încap în noul masiv bidimensional se pierd. 3 6 3 . 4 . acestea vor fi iniţializate la valoarea logică .5) ? ‘Tabloul alfa are ‘. după care urmează copierea elementelor vechiului masiv în cel nou. funcţia returnează numărul de elemente ale masivului. • dacă expN = 2. ‘elemente’ Tabloul alfa are 15 elemente 49 . ALEN(alfa). Funcţii referitoare la prelucrarea masivelor ALEN ( <masiv> [. • dacă expN = 1. . numărul liniilor sau numărul coloanelor unui masiv. iar “expN” este o expresie numerică care determină informaţia returnată. 2 5 2 6 . Exemplu: DIMENSION alfa(3.F. . Elemente de interfaţă Şi în acest caz. J) ENDFOR ENDFOR ? DIMENSION a(3. iar dacă există elemente ale noului masiv care nu au corespondent în vechiul masiv. în ordinea numerotării acestora.F. Elementele vechiului masiv bidimensional care nu încap în cel nou se vor pierde. J) ENDFOR ENDFOR Vom obţine pe ecran următoarele rezultate: 1 4 1 5 . astfel: • dacă expN = 0. funcţia returnează numărul de coloane ale masivului (0 pentru masivele unidimensionale).F. Valoarea returnată de funcţie este de tip numeric.3) FOR I=1 TO 6 a( I ) = I ENDFOR FOR I=1 TO 2 ? FOR J=1 TO 3 ?? a(I.

în vederea umplerii golului format. <expN> [. sau va insera o coloană.2]) – inserează un element. iar pe ultima poziţie. se va introduce valoarea logică fals.T. sau linia sau coloana <expN> dacă acesta este bidimensional.2). Exemplu: DIMENSION a(5) FOR I=1 TO 5 a(I)=I ENDFOR ? FOR i=1 TO5 ?? a(I) ENDFOR AINS(a.0) .. şterge un elementul <expN> î]n cazul în care acesta este unidimensional.F. ‘linii si ‘. • pentru masive bidimensionale funcţia va insera o linie.6 sub Windows – Intrarea şi ieşirea din FoxProW.FoxPro 2. ci pierderea elementelor care nu mai încap în masiv. a unei linii sau a unei coloane într-un masiv. Inserarea unui element. ca şi la funcţia anterioară.3) FOR i=1 TO 5 ?? a(I) ENDFOR În exemplul anterior. AINS (<masiv>. ‘coloane’ Acest tablou are 3 linii si 5 coloane Absenţa expresiei numerice “expN” este echivalentă cu valoarea 0 a acesteia. ultimul element.2]) – funcţie opusă lui AINS. o linie sau o coloană într-un masiv astfel: • pentru masive unidimensionale funcţia va insera un nou element în poziţia “expN” a masivului “masiv”. Exemplu: DIMENSION a(5) FOR I=1 TO 5 a(I)=I 50 . ALEN(alfa. calelalte elemente sunt translatate. ultima linie sau ultima coloană. face distincţie între ştergerea unei linii (absenţa acestui parametru) şi ştergerea unei coloane (prezenţa parametrului). Elemente de interfaţă ? ‘Acest tablou are ‘. inserarea elementului nou pe poziţia a 3-a a masivului unidimensional a va avea loc astfel: a(1) 1 1 a(2) 2 2 a(3) 3 . a “expN”-a coloană atunci când parametrul 2 este prezent. parametrul 2. Exemplu: DIMENSION alfa(10) ? ALEN(a) = ALEN(a. a “expN”-a linie a masivului “masiv” atunci când lipseşte parametrul 2. după ce inserarea a avut loc. după ştergere. <expN> [. nu va determina modificarea dimensiunii acestuia. eliberată prin translatare. a(4) 4 3 a(5) 5 4 5 Elementul nou apare aici Acest element se pierde ADEL (<masiv>. ALEN(alfa.1).

când se cunoaşte linia şi coloana pe care se află acesta se foloseşte funcţia: AELEMENT (<masiv>.<expN3>]]]) – unde “expN2” reprezintă numărul de elemente ale masivului “masiv1”. <expN1>. începând de la poziţia “expN3”.2. “expN2” este o expresie numerică ce determină tipul informaţiei returnate de funcţie şi anume: linia elementului când “expN2” are valoarea 1.FoxPro 2.3) FOR i=1 TO 5 ?? a(I) ENDFOR Dispare acest element a(1) 1 1 a(2) 2 2 a(3) 3 4 a(4) 4 5 a(5) 5 . 51 . [. pentru aflarea acestuia folosindu-se funcţia prezentată anterior. coloana elementului în cazul valorii 2 a lui “expN2”. Pentru a afla poziţia unui element al unui masiv. Unele funcţii FoxProW referitoare la masive manipulează elementele tablourilor bidimensionale printr-un singur indice. funcţia returnând valoarea “expN1”. dacă “expN2” lipseşte.2)) Copierea elementelor unui masiv în elementele altui masiv se face prin intermediul funcţiei: ACOPY (<masiv1>. când masivul “masiv2” nu există. pentru a copia toate elementele masivului “masiv1”.9. expN2” reprezintă linia şi coloana elementului referit. se ia implicit valoarea 1 a acestei expresii. iar “expN1” reprezintă poziţia elementului în tablou (specificată printr-un singur indice). în masivul “masiv2”. dacă “expN1” lipseşte. care se copiază în masivul “masiv2”. deci de la un singur indice la doi este: ASUBSCRIPT (<masiv>. după care s etrece la cea de-a doua şi aşa mai departe. iar “expN1”.<expN2> [. Elemente de interfaţă ENDFOR ? FOR i=1 TO5 ?? a(I) ENDFOR ADEL(a. se observă că referirea la elementele masivului se face printr-un singur indice. <masiv2>. cu aceeaşi dimensiune. în care se copiază conţinutul masivului “masiv1”. acesta reprezentând poziţia elementului în masiv. ASUBSCRIPT(a. numeroterea elementelor făcându-se astfel: mai întâi se numără elementele primei linii. începând de la poziţia “expN1” şi până la sfârşit. tabloul la care se referă funcţia.F. începând de la al “expN1”lea inclusiv.9.6 sub Windows – Intrarea şi ieşirea din FoxProW. Exemplu: având un masiv bidimensional definit cu: DIMENSION a(4. Funcţia care realizează transformarea inversă. sau printr-un singur indice.3)) a( ASUBSCRIPT(a. se va folosi valoarea –1 pentru expresia “expN2”.<expN1> [.<expN2>]) – unde “masiv” desemnează masivul.6) următoarele referiri sunt echivalente: a(2. Referirea la elementele unui masiv bidimensional se poate face în două moduri: prin doi indici reprezentând linia şi coloana elementului respectiv în cadrul masivului.3) a(9) a( AELEMENT(a. <expN2>) – unde “masiv” desemnează tabloul la care se referă funcţia. <expN1> [. rezultatul funcţiei este de tip numeric.1). masivul este unidimensional. se creează unul nou.

<expC2>]]) – determină încărcare în masivul “masiv” a informaţiilor despre fişierele din directorul curent. inclusiv cele ascunse ADIR (masiv. ‘H’) NOTE se incarca toate programele *. 52 .DBF’) NOTE se incarca toate bazele de date ADIR (masiv. acesta se va crea la executarea funcţiei. dacă masivul nu există. iar dacă acesta există. ‘*. Elemente de interfaţă ADIR (<masiv> [. data şi tipul actualizării. în “expC2” se poate folosi codul V care determină încărcarea în masiv doar a etichetei de volum a discului curent. ‘D’) NOTE se incarca toate subdirectoarele directorului curent AFIELDS (<masiv>) – încarcă în masiv structura bazei de date curente. ADIR (masiv. ele vor fi ajustate după necesităţi. mărimea. iar dacă dimensiunile acestuia nu corespund. se vor încărca în masiv doar subdirectoarele. coloanele masivului vor avea următorul conţinut: Coloană Conţinut Tipul 1 numele fişierului şir de caractere 2 mărimea numeric 3 data ultimei actualizări dată calendaristică 4 tipul ultimei actualizări şir de caractere 5 atributele fişierului şir de caractere Atributele fişierelor vor fi codificate prin caractere satfel: A arhivă (citire şi scriere) (Archieve) H ascuns (Hidden) R numai citire (Read only) S sistem (Sistem) D director (Directory) În şirul “expC1” se poate include o cale completă pentru căutarea fişierelor în alt director şi/sau alt disc. fişierele vor fi selectate incluzând masca “expC1”. M.6 sub Windows – Intrarea şi ieşirea din FoxProW. în funcţie de conţinutul lui “expC2”. atributele fişierelor respective. ‘D’) NOTE se incarca toate subdirectoarele radacinii.<expC1> [. masivului masiv eticheta de volum a discului C Dacă “expC1” este şirul nul. care poate conţine metacaracterele “*” (desemnând orice combinaţie de caractere) şi “?” (desemnând orice caracter). adică numele. G. fişierele ascunse sau fişierele sistem. atunci se va crea unul cu acest nume. ‘ ‘. D. decât cel curent. N sau F) şir de caractere 3 lungime câmp numeric 4 număr zecimale numeric Dacă masivul nu există. ‘*. L. discului C ADIR (masiv.PRG’. masivul având următoarea structură: Coloană Conţinut Tipul 1 nume câmp şir de caractere 2 tip câmp (C. ‘C: ‘. ‘V’) NOTE se incarca in primul element (singurul) al.PRG .FoxPro 2. fişierelor ascunse şi a fişierelor sistem care se potrivesc măştii date prin “expC1”. ‘C:\*’. “expC2” este un şir de caractere care poate conţine unul din codurile speciale de mai sus pentru selectarea subdirectoarelor. masivul fiind trunchiat după primul element Exemplu: ADIR (masiv. dimensiunile sale vor fi potrivite pentru memorarea tuturor informaţiilor despre fişierele găsite.

3) şi a(3. iar “expN1” este 7.4) a(2. avem situaţia: a(1. Exemplu: DIMENSION a(4. linii facandu-se prin elementele coloanei 2 53 .1) NOTE se sorteaza descrescator masivul a pe linii. incepand de la linia 2. în funcţie de rezultatul comparării a două elemente ale unor linii distincte.<expN2>]]) – caută în masivul “masiv” expresia “expr”.3) a(1.<expN1> [. criteriul de sortare fiind dat de..3) a(2. respectiv ultima linie). iar la căutare vor fi testate “expN2” elemente (dacă lipseşte. deci se vor sorta liniile 2 şi 3 ale masivului. 2.2.<expN1> [.1) a(1. pentru a se putea compara între ele. sau numărul liniilor de sortat. compararea intre. ASORT (<masiv> [.3. dupa coloana a 3-a ASORT (a.6 sub Windows – Intrarea şi ieşirea din FoxProW. “expN2” specifică numărul elementelor sortate în cazul unui masiv unidimensional. “expN3” determină ordinea sortării şi anume: crescătoare dacă “expN3” lipseşte sau are valoarea 0 şi descrescătoare pentru o valoare diferită de 0. <expr> [.. pentru un masiv bidimensional. dacă “expN2” este –1 sau dacă această expresie lipseşte.4) NOTE se vor sorta crescator liniile 1. ale masivului a. Exemplu: dacă avem masivul a(3. dacă masivul este unidimensional “exp1” va desemna elementul de unde se începe sortarea. prima linie care va intra la sortare va fi cea pe care se află elementul al “expN1”-lea al masivului.5) ASORT (a) NOTE se sorteaza crescator masivul a pe linii. începând cu al “expN1”-lea element (implicit ia valosrea 1). pentru a stabili ordinea liniilor.2) a(3. pentru masivele unidimensionale se vor sorta elementele acestuia.<expN3>]]]) – sortează elementele masivului “masiv” în ordine crescătoare sau descrescătoare.4) Elementul al 7-lea este a(2.7.2) a(2. Elemente de interfaţă ASCAN (<masiv>.3) a(3. se vor sorta elementele. se poate limita căutarea la o anumită porţiune. rezultatul funcţiei este de tip numeric. 3 si 4.3). se va căuta până la sfârşitul masivului.4) a(3.4). în sensul că.2) a(1. compararea elementelor de pe coloana 1 ASORT (a.1) a(2. de asemenea “expN1” determină şi coloana de pe care se iau elementele de comparat. în cazul când avem un masiv bidimensional. iar pentru cele bidimensionale se vor sorta liniile masivului respectiv. fiecare element rămânând pe coloana pa care a fost şi înainte.1) a(3. se vor schimba sau nu între ele toate elementele acestor linii. toate elementele sortate trebuie să fie de acelaşi tip. compararea acestora făcându-se prin a(2. liniile până la sfârşitul masivului (ultimul element.FoxPro 2.3) (deci elementele de pe coloana a treia).<expN2> [.

cu o anumită organizare.). Asocierea bazelor de date zonelor de lucru este controlată de programator. cât şi caracteristicile acestora (tipul de date ce se memorează în acel câmp. lungimea câmpului etc. în care se deschid bazele de date respective. pe linii şi coloane.6 sub Windows – Intrarea şi ieşirea din FoxProW.FoxPro 2. • coloanele vor fi numite câmpuri. După deschiderea unei baze de date (într-o zonă de lucru) se poate trece la lucrul cu aceasta. • liniile se vor numi înregistrări. având următoarele corespondenţe: • capului de tabel îi corespunde “structura bazei de date”.decurentă … a lungul bazei de date. acest lucru înregistrări fiind echivalent cu deplasarea săgeţii Nr. Accesul la datele din bazele de date se face la nivel de înregistrare. înregistrare indicatorului de înregistrări în sus şi în jos. Pentru a folosi o bază de date. adică: • preluarea de date din baza de date. Pentru a specifica univoc structura unei baze de date. ce permite accesul direct şi complet la datele stocate în acesta. După terminarea lucrului cu baza de date urmează închiderea acesteia. trebuie indicate câmpurile care o compun (printr-un nume asociat fiecărui câmp). numărul acesteia fiind dat de indicatorul de înregistrări.). care reprezintă o zonă de memorie ce conţine numărul înregistrării curente. deci acesta dispune de mai multe zone de lucru. Acesta poate fi considerat ca o variabilă de memorie asociată bazei de date şi care există atâta timp cât este deschisă baza de date. FoxProW poate manipula mai multe baze de date simultan. aceasta … trebuie mai întâi deschisă (se presupune că ************** Înregistrări aceasta a fost creată anterior). La un moment dat putem avea acces la o singură înregistrare a unei baze de date. Elemente de interfaţă 5. La crearea unei baze de date trebuie specificată structura acesteia. O bază de date are o organizare tabelară. O imagine intuitivă a indicatorului de înregistrări este dată de următoarea figură: Indicatorul de înregistrări poate fi Indicatorul de Baza de date modificat prin comenzi FoxProW. care se numeşte “înregistrare curentă”. Deschiderea … bazei de date presupune rezervarea în memoria internă a calculatorului a unei zone … de memorie în care FowProW va depozita toate informaţiile necesare utilizării acestei baze (cum ar fi structura. operaţie ce constă în: 54 . Aceasta este localizată prin “indicatorul de înregistrări”. La un moment dat o singură înregistrare a bazei de date este cea curentă. • ştergerea de date din baza de date etc.1 Generalităţi După cum se ştie. • modificarea datelor deja existente. pe discuri informaţiile sunt organizate în fişiere. acesta având la dispoziţiecomenzi şi funcţii specializate în acest scop. LIMBAJ DE PROGRAMARE 5. • adăugarea de noi date. 225 la număr. Această zonă de memorie poartă numele de “zonă de lucru” (în engleză “work area”). Obază de date reprezintă tocmai un astfel de fişier. numărul de înregistrări etc.

închiderea fişierului bazei de date. pentru selectarea acestei zone putem folosi comenzile: SELECT 2 SELECT B SELECT debite SELECT ‘debite’ acestea fiind echivalente. aceasta returnând numărul zonei de lucru curente sau numărul ultimei zone de lucru nefolosite. din cele 225 zone de lucru ale FoxProW-ului.incluzând 0 ca parametru. Aceasta se poate schimba folosind comanda SELECT: SELECT <expN> | <expC> În această comandă. . memorând modificările efectuate de la deschidere până în acest moment. zona de lucru se poate specifica şi prin <expC>. în care acesta depune informaţiile necesare efectuării operaţiilor cu bazele de date respective. La deschiderea unei baze de date într-o zonă de lucru. <expN> reprezintă numărul zonei de lucru ce va fi activată.6 sub Windows – Intrarea şi ieşirea din FoxProW. 225 la număr. Pentru identificarea zonelor de lucru respective se folosesc două metode: primele 10 zone de lucru se identifică prin litere de la A la Z. Sintaxa comenzii este: SELECT ( [ 0 | 1 ] ) în care observăm că putem transmite funcţiei unul din doi parametri. una singură este curentă. Comenzile SELECT ( ) şi SELECT (0) sunt echivalente. pentru toate celelalte zone de lucru putem folosi pentru identificare numerele de la 1 la 225. Deci baza de date deschisă în zona de lucru va putea fi identificată şi prin aliasul respectiv. acesteia i se atribuie un nume pe care îl vom numi “alias” (pseudonim). sau 1. eliberarea memoriei alocate la deschidere (eliberarea zonei de lucru). în interiorul căreia nu s-a specificat explicit baza de date la care se referă. Pentru a afla care este zona curentă se foloseşte funcţia SELECT ( ).FoxPro 2. La un moment dat. Elemente de interfaţă • • • desfacerea legăturii dintre zona de lucru şi baza de date.2 Zone de lucru Pentru manipularea bazelor de date FoxProW foloseşte zonele de lucru. Dacă <expN> este 0 se va selecta prima zonă de lucru neocupată (în care nu s-a deschidă nici o bază de date). adică va deveni zona de lucru curentă.1 face ca funcţia să returneze numărul ultimei zone de lucru nefolosite. funcţia returnează numărul zonei de lucru curente. 5. 0 sau 1. Aceasta înseamnă că o anumită comandă. La pornirea FoxProW-ului zona de lucru curentă va fi zona A. adică primele 10 litere din alfabet. expresie de tip şir de caractere ce reprezintă aliasul bazei de date deschise în acea zonă de lucru. va acţiona asupra bazei de date deschisă în zona curentă. De asemenea. Exemplu: SELECT 1 && zona curentă va fi zona 1 SELECT A && echivalenta cu prima comanda Presupunem că în zona de lucru 2 avem deschisă baza de date DEBITE. ? SELECT ( ) && afiseaza zona de lucru curenta 1 ? SELECT (1) && afiseaza ultima zona de lucru nefolosita 225 SELECT SELECT ( ) + 1 NOTE se selecteaza prima zona de lucru dupa cea curenta ? SELECT (0) 2 55 . cu următoarea semnificaţie: .

prin intermediul meniurilor şi direct.. punerii în funcţiune se realizează cu comanda: CREATE TABLE mfixe. o singură literă. memorând starea mijloacelor fixe ale unei unităţi economice. ca în tabelul următor. <precizia> şi <scala> pentru fiecare câmp. ce conţine <numele>. <scală> reprezintă numărul de zecimale în cazul câmpurilor de tip “numeric” şi “float”. <nume_câmp2>…]]) FROM ARRAY <masiv> în care: <nume_dbf> reprezintă numele bazei de date de creat (eventual incluzând şi calea. Masivul din care se copiază structura bazei de date poate fi format folosind funcţia AFIELDS ( ). de lungime n. Exemplu: crearea bazei de date MFIXE. <nume_câmp2>. <scală> ] ) [. <tip>.T. Elemente de interfaţă 5. prin meniuri şi prin instrucţiuni în fereastra de comenzi. Dacă pentru acest fişier nu se specifică nici o extensie. Cea de-a doua metodă de creare a unei baze de date este reprezentată de comanda CREATE TABLE: CREATE TABLE | DBF <nume_dbf> (<nume_câmp1> <tip> [ (<precizie> [. cu sintaxa: CREATE [ <fişier> | ? ] determină deschiderea unor ferestre în care utilizatorul specifică în mod interactiv caracteristicile noii baze de date ce se va crea (metodă prezentată în capitolul “Baze de date – Meniuri”). nefolosit . Structura bazei de date Corespunzător celor două metode de transmitere a comenzilor utilizatorului către FoxProW. de lungime n. lăţimea câmpului este specificată prin <precizie>. … reprezintă numele câmpurilor structurii bazei de date. cu structura: COD Character 10 codul mijlocului fix DENUMIRE Character 30 denumirea VALOARE Numeric 10 valoarea AMORTIZARE Numeric 10 valoarea amortizată LOC_FOLOS Memo 10 locul de folosinţă STARE Logical 1 starea (în folosinţă . <nume_câmp1>. <tip> <precizie> <scală> Descriere n şir de caractere de lungime n C D dată calendaristică F n d real. Comanda CREATE. lista tipurilor fiind dată în tabelul următor. pe ecran apare o fereastră. cu d zecimale L logic M memo N n d numeric. cu d zecimale G general P imagine Clauza FROM ARRAY se introduce pentru ca structura bazei de date să fie preluată din masivul <masiv>.FoxPro 2.DBF. sau se specifică parametrul ?. există două metode de creare a unei baze de date: în mod interactiv. numai când aceasta este dată de utilizator. 56 .F. <fişier> reprezintă numele fişierului bazei de date ce va fi creat. printr-o comandă complexă introdusă în fereastra de comenzi. reprezintă tipul câmpului. în care se va introduce numele noii baze de date. <tipul>. FoxProW asociază automat extensia .DBF. Dacă nu se specifică numele fişierului. pot fi expresii nume.6 sub Windows – Intrarea şi ieşirea din FoxProW.3 Crearea unei baze de date. poate fi o expresie nume.) DATA_INST Date 8 data instalării.

Dacă. atunci comanda are ca efect închiderea bazei de date din zona de lucru curentă. chiar daca zona de lucru curenta a fost si va.. dacă nu i se specifică nici o extensie.FoxPro 2.6 sub Windows – Intrarea şi ieşirea din FoxProW. data_inst D) 5. 57 . USE in 2 && se inchide baza de date din 2 În FoxProW există posibilitatea deschiderii unei baze de date în mai multe zone de lucru. în locul unui fişier se specifică ? fişierul bazei de date ce va fi deschisă va fi selectat interactiv. amortizare N(10). aceasta zona USE mfixe IN 2 AGAIN NOTE se deschide baza de date mfixe si in zona de lucru 2. stare L.. denumire C(30)..4 Deschiderea şi închiderea unei baze de date Să presupunem că am creat anterior una sau mai multe baze de date (de exemplu MFIXE). Dacă nu se specifică nici <fişier>. Implicit. căruia. i se va atribui implicit extensia . închiderea unei baze de date se referă tot la zona de lucru curentă. Acest lucru se realizează folosind comanda USE: USE [ <fişier> | ?] [ IN <zonă de lucru> ] [ AGAIN ] [ INDEX <lista fişiere index> | ? [ ORDER [<expN> | <fişier index. De asemenea. Exemplu: SELECT ( ) && se selecteaza zona de lucru 1 USE mfixe && se deschide baza de date mfixe in.idx> | [ TAG ] <nume etichetă> OF <fişier index. Această clauză trebuie introdusă în comandă când se deschide o bază de date care a mai fost deschisă anterior şi în altă zonă de lucru. nici ?. Pentru lucrul cu acestea este necesară mai întâi deschiderea lor în zone de lucru ale FoxProW-ului. Elemente de interfaţă (cod C(10).cdx> ] [ ASCENDING | DESCENDING ] ] ] ] [ ALIAS <alias> ] [ EXCLUSIVE ] [ SHARE ] [ NOUPDATE ] <fişier> reprezintă fişierul bazei de date ce va fi deschisă. Exemplu: ? SELECT ( ) && afiseaza zona de lucru curenta 1 USE mfixe NOTE s-a deschis baza de date mfixe in zona de lucru 1 USE && s-a inchis baza de date USE mfixe IN 2 NOTE s-a deschis baza de date in zona de lucru 2. valoare N(10). Pentru a ne referi la altă zonă de lucru decât cea curentă se foloseşte clauza IN. specificând prin <zonă de lucru> această zonă.DBF. baza de date va fi deschisă în zona de lucru curentă. într-o fereastră de dialog. cea veche este închisă automat înainte de deschiderea celei noi. În acest scop se foloseşte clauza AGAIN (tradus prin “din nou”). ramane 1. * se inchid bazele de date USE in 2 USE Observaţie: dacă la deschiderea unei baze de date în zona de lucru există deschisă anterior o altă bază de date. loc_folos M.

T.T. ne informează dacă o zonă de lucru este liberă sau ocupată de o bază de date şi are următoarea sintaxă: USED ( [<expN> | <expC>] ) în care <expN> sau <expC specifică zona despre care dorim informaţii (prin numărul sau prin aliasul corespunzător). Comanda CLOSE DATABASE. Închiderea bazelor de date se poate realiza şi cu comenzile CLOSE ALL şi CLOSE DATABASE. dacă zona de lucru respectivă este liberă. Funcţia USED ( ). funcţia returnează o valoare logică astfel: . USED ( ) şi DBF ( ). de exemplu). USE USE IN 1 58 . ? USED (2 ) && se testeaza folosirea zonei de lucru 2 . Baza de date poate fi totuşi vizualizată (atât conţinutul cât şi structura) fără a i se aduce schimbări. . funcţia returnează adevărat. având sintaxa: CLOSE DATABASE închide toate bazele de date şi selectează zona de lucru 1. dacă o bază de date cu acest alias este deschisă întruna din zonele de lucru ale FoxProW-ului.T. Pentru a obţine informaţii despre zonele de lucru ale FoxProW-ului şi bazele de date deschise în acestea. Elemente de interfaţă Clauza NOUPDATE se introduce pentru a proteja baza de date la scriere. ‘agenda’ deschisa intr-o zona de lucru . Exemplu: SELECT a USE mfixe NOUPDATE NOTE se deschide baza de date mfixe in zona a doar.F. . dar acestea. CLOSE ALL închide închide şi unele ferestre (vezi capitolul “Ferestre şi meniuri”). cu sintaxa: CLOSE ALL închide toate fişierele deschise. închid şi alte fişiere. (adevărat). adică pentru a nu permite modificarea acesteia (nici conţinutul şi nici structura nu se poate modifica). deci şi bazele de date din toate zonele de lucru şi selectează zona de lucru 1. dacă în zona de lucru respectivă este deschisă o bază de date.INDEX – se referă la “indexarea bazei de date”. pe lângă bazele de date. ? USED (‘agenda’) NOTE testează daca exista baza de date cu aliasul. deci trebuie utilizate cu atenţie. pentru citire USE && se inchide baza de date În sintaxa comenzii mai există patru clauze: . . şi alte fişiere (cum ar fi fişierele index. Exemplu: SELECT a USE mfixe IN 1 USE mfixe AGAIN ? USED ( ) && se testeaza folosirea zonei de lucru 1 . se vor folosi două funcţii. Dacă nu se specifică o zonă de lucru.ALIAS – se referă la aliasul atribuit de utilizator bazei de date. Dacă se specifică un alias. De asemenea.FoxPro 2. funcţia se referă la zona de lucru curentă.F. Comanda CLOSE ALL. pe lângă bazele de date.6 sub Windows – Intrarea şi ieşirea din FoxProW. (fals). ferestre. Şi această comandă închide.SHARE şi EXCLUSIVE – folosite la lucrul în reţea cu baza de date.

. atribuindu-i aliasul ‘tabel’ SELECT tabel NOTE se selecteaza zona de lucru 2 prin aliasul tabel. Dacă nu este deschisă nici o bază de date în zona de lucru specificată va fi returnat şirul vid. fie de FoxProW. după anumite reguli.DBF ? DBF (‘a’) C:\FOXPROW\MFIXE. b..5 Aliasul unei baze de date Identificarea unei baze de date se face fie fie prin intermediul zonei de lucru în care aceasta a fost deschisă.. Utilizatorul poate atribui un alias unei baze de date specificând în comanda USE clauza ALIAS. prin care se identifică în comenzile şi funcţiile folosite în continuare. Atribuirea unui alias unei baze de date se face fie de programator.T. USE 5. în care “alias” reprezintă aliasul ce se atribuie bazei de date. astfel: • aliasul implicit pe care FoxProW îl atribuie automat unei baze de date.FoxPro 2. pentru acest nume folosind denumirea de “alias”. Elemente de interfaţă Pentru a afla ce bază de date este deschisă într-o anumită zonă de lucru se foloseşte funcţia DBF ( ): DBF ( [<expC> | <expN>] ) Aceasta returnează un şir de caractere ce conţine numele bazei de date deschisă într-o zonă de lucru sau care are un anumit alias. al bazei de date din aceasta zona de lucru ? SELECT ( ) 2 USE IN b Dacă programatorul nu specifică explicit un alias în comanda USE.DBF ? DBF (2) == ‘ ‘ . [ALIAS <alias>] .. la deschiderea sa. fie prin aliasul bazei de date respective.6 sub Windows – Intrarea şi ieşirea din FoxProW. în cazul în care programatorul nu a făcut acest lucru. iar <expN> reprezintă numărul zonei de lucru la care se referă funcţia. este numele fişierului bazei de date. În cazul când nu există nici o bază de date cu aliasul specificat se va afişa mesajul “Alias not found” (Alias negăsit). Exemplu: SELECT mfixe IN b ALIAS tabel NOTE se deschide baza de date mfixe in zona de lucru.DBF ? DBF (1) C:\FOXPROW\MFIXE. fără extensie. <expC> reprezintă aliasul de testat. Exemplu: SELECT a USE mfixe ? DBF (‘mfixe’) C:\FOXPROW\MFIXE. atunci FoxProW preia această sarcină atribuind automat bazei de date un alias. Exemplu: SELECT a USE mfixe IN b && aliasul atribuit este mfixe 59 . cu sintaxa: USE . La deschiderea unei baze de date acesteia i se atribuie un nume.

operaţie transparentă pentru utilizator. deci nu putem obţine direct această clasificare. • de asemenea.în zonele de lucru de la 11 la 225 se atribuie aliasul W11 – W225. de exemplu). Pentru a o obţine totuşi. FoxProW atribuie bazei de date un alias astfel: . folosind aliasul mfixe ? SELECT ( ) 2 USE IN b • când baza de date a mai fost deschisă anterior într-o zonă de lucru (când se foloseşte comanda USE cu clauza AGAIN).în primele zece zone de lucru. După efectuarea modificărilor. Vizualizarea structurii unei baze de date se face cu comenzile DISPLAY STRUCTURE sau LIST STRUCTURE. aliasul w11 atribuit bazei de date deschisa. clădiri etc. de unde se va selecta baza de date a cărei structură se va modifica. în funcţie de zona de lucru. Comanda MODIFY STRUCTURE. cu structura dată la începutul capitolului. FoxProW copiază conţinutul bazei de date vechi în baza nouă de date. În caz contrar apare o fereastră de dialog. pentru fiecare mijloc fix. să se specifice şi tipul acestuia într-un nou câmp (de tip şir de caractere. unde se vor realiza modificările dorite. aceeaşi ca la crearea bazei de date. cu sintaxa: DISPLAY STRUCTURE [ IN <expN> | <expC>] [ TO PRINTER [ PROMPT ] | TO FILE <fişier> ] 60 . fără nici un parametru. adică adăugarea unor câmpuri. prin clauza ALIAS a comenzii USE. Dacă în zona de lucru curentă avem deschisă o bază de date. La crearea bazei de date nu am inclus acest tip de informaţie în structură. deci este necesară modificarea structurii bazei de date. dacă programatorul nu specifică un alias.FoxPro 2. . bazei de date i se atribuie un alias diferit de numele fişierului acestuia. Exemplu: să presupunem că avem baza de date MFIXE creată anterior. atunci comanda se referă la aceasta. modificarea caracteristicilor bazei de date. FoxProW atribuie un alias unei baze de date şi în cazul atribuirii aceluiaşi alias la două baze de date distincte. aparatură electronică. in aceasta zona de lucru ? SELECT ( ) 11 SELECT 1 USE IN 1 && se inchid bazele de date USE IN 11 5. prin specificarea structurii acesteia.6 Manipularea structurii unei baze de date La începutul acestui capitol am văzut cum se creează o bază de date. Deseori în lucrul cu bazele de date apare necesitatea modificării structurii unei baze de date. ştergerea altora. Elemente de interfaţă SELECT mfixe && se selecteaza zona de lucru 2.). pentru bazele de date se atribuie ca alias literele de la A la J. Exemplu: SELECT a USE mfixe USE mfixe IN 11 AGAIN SELECT w11 NOTE referirea la zona de lucru 11 se face prin.6 sub Windows – Intrarea şi ieşirea din FoxProW. realizează modificarea structurii bazei de date active prin deschiderea unei ferestre de dialog. şi că dorim o clasificare a mijloacelor fixe din baza de date în funcţie de tipul acestora (maşină. trebuie ca. cu modificările respective. folosind comanda CREATE.

În paralele cu afişarea pe ecran. cu unitate de disc şi cale. zecimale. Exemplu: SELECT a USE mfixe LIST STRUCTURE Structure for database : C:\ FOXPROW \ MFIXE. • pe următoarele linii se afişează câmpurile ce alcătuiesc structura bazei de date. cu caracteristicile lor (număr câmp. în cazul utilizării clauzei TO FILE. adică suma câmpurilor.6 sub Windows – Intrarea şi ieşirea din FoxProW. cu aceeaşi structură (sau asemănătoare) cu a celei deschise în zona de lucru curentă. plus 1. pe ecran derulându-se continuu toate informaţiile. Sintaxa comenzii este: COPY STRUCTURE TO <fişier> [ FIELDS <listă câmpuri> ] [ [ WITH ] CDX | [ WITH ] PRODUCTION ] 61 . lăţime. se pot trimite informaţii şi la imprimantă în cazul folosirii clauzei TO PRINTER. pe următoarea linie se afişează numărul de înregistrări din baza de date. iar pe cea de-a treia linie se afişează data calendaristică la care s-a scris ultima oară în baza de date. TO PRINTER şi TO FILE se exclud reciproc. afişarea pe ecran este inhibată. • ultima linie conţine lungimea unei înregistrări. În mod implicit afişarea se face pe ecran. <expN> sau <expC> specifică zona de lucru. pe când cea de-a doua nu face această pauză. Cele două clauze. nume. tip.FoxPro 2. respectiv baza de date. În varianta sub Windows a FoxPro-ului se poate folosi clauza PROMPT care determină deschiderea ferestrei Print în care se pot stabili opţiuni de imprimare. singura deosebire fiind aceea că prima face pauză după umplerea unui ecran cu informaţii.DBF Number of data records : 0 Date of last update : 08/04/01 Memo file block size : 64 Field Field Name Type Width Dec Index 1 COD Character 10 2DENUMIRE Character 30 3VALOARE Numeric 10 0 4AMORTIZARE Numeric 10 0 5LOC_FOLOS Memo 10 6STARE Logical 1 7DATA_INST Date 8 8 TIP Character 1 ** Total ** 81 USE Un alt mod de a crea o bază de date îl reprezintă comanda COPY STRUCTURE care crează o bază de date nouă. Dacă se specifică opţiunea NONCONSOLE. sau în fişierul “fişier”. la care se referă comanda. Elemente de interfaţă [ NONCONSOLE ] LIST STRUCTURE [ IN <expN> | <expC>] [ TO PRINTER [ PROMPT ] | TO FILE <fişier> ] [ NONCONSOLE ] Comenzile sunt asemănătoare. reprezentând numărul de caractere pe care îl ocupă o înregistrare în baza de date. • linia a patra conţine dimensiunea unui bloc al fişierului memo asociat bazei de date (când este cazul). Informaţia afişată are următorul conţinut: • pe prima linie se afişează baza de date la care se referă comanda. până la sfârşit. dacă aceasta nu este inhibată. indecşi).

0) Loc_folos (M) Stare (L) Data_inst (D) Tip (C 1) 62 .DBF Number of data records : 0 Date of last update : 08/04/01 Memo file block size : 64 Field Field Name Type Width Dec Index 1 COD Character 10 2DENUMIRE Character 30 3VALOARE Numeric 10 0 ** Total ** 51 USE Comanda COPY STRUCTURE realizează copierea structurii unei baze de date în structura altei baze de date. <fişier>. P-imagine).FoxPro 2.dbf. • FIELD_LEN (lungime câmp). în care se depozitează numele câmpului structurii. şi anume printr-o bază de date intermediară. • FIELD_TYPE (tip câmp). în care se încarcă structura de copiat. cu următoarea sintaxă: COPY STRUCTUREEXTENDED TO <fişier> [ FIELDS <listă câmpuri> ] Structura bazei de date se copiază în înregistrările unei noi baze de date. în care vom copia doar câmpurile COD. de lungime 1. în care se depozitează un caracter ce corespunde tipului câmpului structurii (C-şir de caractere. Ultima linie se referă la “fişiere index” care vor fi tratate în paragraful referitor la indexarea bazelor de date. Elemente de interfaţă unde <fişier> reprezintă fişierul noii baze de date. Exemplificăm această copiere în următoarea schemă. D-dată calendaristică. Exemplu: din baza de date MFIXE creăm o nouă bază de date. în care se depozitează numărul de poziţii zecimale. de tip şir de caractere. • FIELD_DEC (poziţii zecimale câmp). F-real. FIELDS cod.6 sub Windows – Intrarea şi ieşirea din FoxProW. G-general. Clauza FIELDS are ca efect copierea în baza de date nouă doar a câmpurilor specificate în lista de câmpuri care urmează clauzei. de tip numeric. Mai există o modalitate de transmitere a unei structuri a bazei de date. tot de tip şir de caractere. formată din patru câmpuri: • FIELD_NAME (nume câmp). unde s-a luat ca exemplu baza de date MFIXE: Cod (C 10) Denumire (C 30) Valoare (N 10. L-logic. care are o structură fixă. N-numeric. când este cazul. Comanda folosită este COPY STRUCTURE EXTENDED.0) Amortizare (N 10. de tip numeric. M-memo. în care se depozitează lungimea fiecărui câmp al structurii. DENUMIRE şi VALOARE: SELECT a USE mfixe COPY STRUCTURE TO mfixe_n. deci copierea se face structură la structură. MFIXE_N. valoare USE mfixe_n LIST STRUCTURE Structure for database : C:\ FOXPROW \ MFIXE_N. denumire.

se vor deschide ferestre de dialog prin care FoxProW interoghează utilizatorul asupra fişierelor ce se vor folosi.dbf care va contine. <fişier1> este baza de date ce se va crea şi va avea structura codificată în <fişier2>. Trecerea inversă. Noua bază de date va deveni activă. fie manual. Exemplu: USE mfixe COPY STRUCTURE EXTENDED TO interm NOTE se creaza baza de date interm.FoxPro 2. corespunzatoare campurilor denumire. Acest fişier s-a creat anterior. denumire. Dacă în comandă nu se specifică unul dintre fişiere sau amândouă. codificata in baza de date interm LIST STRUCTURE FIELDS cod. valoare USE mfixe_n LIST STRUCTURE Structure for database : C:\ FOXPROW \ MFIXE_N.DBF Number of data records : 0 Date of last update : 09/04/01 63 . Când se foloseşte clauza FIELDS. fie cu o comandă COPY STRUCTURE EXTENDED. Conţinutul acestor înregistrări se poate modifica. si 6. numai câmpurile din <lista câmpuri> vor genera înregistrări în baza de date nou creată. se face cu comanda CREATE FROM: CREATE [ <fişier1> ] FROM [ <fişier2> ] <fişier2> este o bază de date ce memorează în înregistrările sale o structură. modificându-se astfel structura codificată în această bază de date. structura bazei de date mfixe USE interm NOTE din aceasta se sterg inregistrarile 2. în modul descris la comanda anterioară. se pot şterge sau adăuga înregistrări. 3. din înregistrările bazei de date în structura unei noi baze de date. valoare si stare DELETE RECORD 2 && se marcheaza pentru stergere DELETE RECORD 3 && respectivele inregistrari DELETE RECORD 6 && PACK && se sterg fizic inregistrarile marcate anterior CREATE mfixe_n FROM interm NOTE se creeaza baza de date mfixe_n cu noua structura. Elemente de interfaţă 1 2 3 4 5 6 7 8 (nume câmp) Cod Denumire Valoare Amortizare Loc_folos Stare Data_inst Tip FIELD_ NAME (tip câmp) C C N N M L D C FIELD_ TYPE (lăţime câmp) 10 30 10 10 10 1 8 1 FIELD_L FIELD_ EN DEC (zecimale câmp) 0 0 - deci câmpurile structurii devin înregistrări în noua bază de date.6 sub Windows – Intrarea şi ieşirea din FoxProW.

iar prin <expC> aliasul bazei de date respective.T. ? FCOUNT (SELECT ( )) = FCOUNT ( ) . Exemplu: pentru a se permite accesul doar la câmpurile COD şi VALOARE din baza de date MFIXE. chiar dacă starea lui SET FIELDS este ON. Dacă în zona de lucru specificată nu este deschisă nici o bază de date. ? FCOUNT (2) 0 64 . ? FCOUNT (1) = FCOUNT (‘Mfixe’) . Comanda se referă la baza de date activă. Starea implicită este OFF. se va introduce următoarea secvenţă de instrucţiuni: SET FIELDS ON SET FIELDS TO cod. Dacă SET FIELDS este OFF se permite accesul la toate câmpurile bazei de date. din zona de lucru curenta (1) ? FCOUNT ( ) = FCOUNT (1) . pot fi accesate doar câmpurile care sunt prezente în lista de câmpuri a comenzii SET FIELDS TO. nici baza de date. deci nici un câmp nu va putea fi accesat în cazul SET FIELDS ON. <câmp1> <câmp2> … reprezintă lista câmpurilor care pot fi accesate în cazul SET FIELDS ON. se consideră că funcţia se referă la baza de date deschisă în zona de lucru curentă.T. ‘campuri’ Baza de date MFIXE are 6 campuri NOTE afiseaza cate campuri are baza de date (mfixe).6 sub Windows – Intrarea şi ieşirea din FoxProW.FoxPro 2. funcţia va returna valoarea 0. FCOUNT ( ). valoare iar pentru a se reveni la normal. se introduce fie: SET FIELDS TO ALL fie: SET FIELDS OFF Numărul câmpurilor dintr-o bază de date este returnat de funcţia FCOUNT( ): FCOUNT ( [<expN> | <expC> ] ) În această sintaxă.7 Manipularea câmpurilor unei baze de date Accesul la câmpurile unei baze de date este controlat de comanda SET FIELDS SET FIELDS ON | OFF SET FIELDS TO [ [ <câmp1> [<câmp2> …]] | ALL] Dacă SET FIELDS este ON.T. Dacă nu se specifică nici zona de lucru. SET FIELDS TO face ca lista câmpurilor să fie vidă. Elemente de interfaţă Field 1 COD Character 2AMORTIZARE 3LOC_FOLOS 4DATA_INST 5 TIP Character ** Total ** USE Field Name 10 Numeric Memo Date 1 Type Index 10 10 8 40 Width 0 Dec 5. SET FIELDS TO ALL permite accesul la toate câmpurile. prin <expN> am desemnat zona de lucru în care este deschisă baza de date la care se referă funcţia. Exemplu: CLOSE ALL USE mfixe ? ‘Baza de date MFIXE are ‘.

m. Exemplu: CLOSE ALL USE mfixe ? FSIZE (‘denumire’) NOTE afiseaza marimea celui de-al doilea camp. scris cu majuscule. funcţia va returna şirul de caractere vid. Dacă acestea lipsesc se consideră implicit zona de lucru curentă. al bazei de date 30 USE 5. 2) NOTE ca efect este echivalenta cu functia FIELD ( ).d. Funcţia are următoarea sintaxă: FIELD ( <expN1> [. prin zona de lucru (în cazul specificării lui <expN2>) sau prin aliasul bazei de date (când se specifică <expC>). funcţia se referă la zona de lucru curentă. deschisa in zona de lucru curenta COD USE mfixe IN 2 AGAIN ? FIELD (1.FoxPro 2. nici <expC>. <expC1> este un şir de caractere ce reprezintă numele câmpului bazei de date. iar <expN2> sau <expC> identifică baza de date la care se referă funcţia. iar prin <expN> sau <expC2> se specifică zone de lucru. câmp identificat prin numărul său în cadrul structurii bazei de date. Funcţia returnează un şir de caractere conţinând numele câmpului specificat. anterioara COD ? FIELD (9) == ‘ ‘ && avem numai 8 campuri in baza de date TIP ? FIELD (FCOUNT ( )) && afiseaza numele ultimului camp TIP CLOSE ALL Funcţia FSIZE ( ) returnează mărimea unui câmp al bazei de date. specificat prin numele său.a. Dacă nu se specifică nici <expN2>. Exemplu: CLOSE ALL USE mfixe ? FIELD (1) NOTE afiseaza numele primului camp al bazei de date.8 Domeniul înregistrărilor Există comenzi FoxProW care acţionează asupra mai multor înregistrări ale unei baze de 65 .<expN> | <expC2>] ) rezultatul fiind de tip numeric.6 sub Windows – Intrarea şi ieşirea din FoxProW.). În cazul în care în zona de lucru specificată nu este deschisă nici o bază de date sau în cazul când numărul de ordine al câmpului specificat este mai mare decât numărul total de câmpuri ale bazei de date.<expN2> | <expC>] ) în care <expN1> specifică numărul de ordine al câmpului (primul câmp are numărul de ordine 1. al doilea 2 ş. Elemente de interfaţă USE Funcţia FIELD ( ) returnează numele unui câmp dintr-o bază de date. FSIZE ( <expC1> [. respectiv baza de date la care se referă funcţia.

. • introducerea de înregistrări noi în interiorul bazei de date. pentru orice înregistrare. Observăm în acest ultim exemplu că în condiţia logică a clauzei FOR intervine funcţia RECNO ( ) (care reprezintă numărul înregistrării) care este dependentă de înregistrarea de testat. cu sintaxa: FOR <expL> se foloseşte pentru selectarea înregistrărilor în funcţie de o condiţie logică. 66 . Aceasta trebuie să depindă fie de numărul înregistrării. incluse opţional în comanda respectivă. ALL FOR i = 2 . Selectarea acestora se face specificând în comandă condiţia de selecţie. în funcţie de poziţia pe care o va ocupa noua înregistrare în baza de date: • adăugarea de înregistrări noi la sfârşitul bazei de date. continuă testarea celorlalte. Se selectează acele înregistrări pentru care <expL> este adevărată. începând de la înregistrarea curentă. FOR şi WHILE.FoxPro 2. ele diferind prin sursa datelor care se introduc în baza de date şi anume: • la comanda APPEND datele sunt furnizate de utilizator. Aceste trei comenzi se utilizează cu acelaşi scop. având sintaxa: WHILE <expL> este asemănătoare clauzei FOR. 5. Prima metodă se realizează cu comenzile APPEND. • REST selectează înregistrările începând de la cea curentă. . după găsirea unei înregistrări ce nu respectă condiţia <expL>. Clauza FOR. . • RECORD <expN> acţionează numai asupra înregistrării cu numărul <expN>. selectarea înregistrărilor făcându-se în funcţie de expresia logică <expL> (pentru valoarea adevărat a acesteia). i este diferit de 2.6 sub Windows – Intrarea şi ieşirea din FoxProW. exclusiv. Construcţia: ALL FOR RECNO ( ) > 3 are ca efect selectarea tuturor înregistrărilor începând de la înregistrarea 3. deci expresia logică va fi falsă. fie de conţinutul acesteia. şi până la sfărşitul bazei de date. • NEXT <expN> se referă la următoarele <expN> înregistrări. din mulţimea totală a înregistrărilor se aleg doar acelea care respectă condiţia respectivă. Spre deosebire de clauza FOR care. Elemente de interfaţă date. Clauza WHILE. Mulţimea înregistrărilor selectate formează “domeniul înregistrărilor” la care se referă comanda. inclusiv.9 Adăugarea de înregistrări la o bază de date Adăugarea de înregistrări se poate face în două moduri. deoarece. Exemplu: un domeniu de forma: i=4 . în mod interactiv (excepţie făcând clauza BLANK). inclusiv. este egal cu 0 înregistrări. APPEND FROM şi APPEND FROM ARRAY. clauza WHILE întrerupe testarea înregistrărilor când găseşte o înregistrare ce nu respectă condiţia dată. în funcţie de înregistrare. . Observaţie: în expresia logică din clauzele FOR şi WHILE trebuie să intre o mărime ce variază. Domeniul înregistrărilor se specifică prin clauzele <domeniu>. <expL>. în funcţie de necesităţi: • ALL selectează toate înregistrările bazei de date. Domeniul: ALL WHILE 1+1 = 2 reprezintă toate înregistrările din baza de date (1+1 este egal cu 2 pentru toate înregistrările). Clauza <domeniu> se va înlocui cu una dintre următoarele construcţii. cu ajutorul căreia.

Se foloseşte clauza TYPE pentru a specifica tipul acestui fişier. urmând ca informaţia utilă să se încarce mai târziu. întregul <fişier> va fi adăugat la sfârşitul bazei de date. datele înregistrării ce se va adăuga. se apasă combinaţia de taste Ctrl+PageDown. când conţinutul înregistrărilor este preluat dintr-un fişier.6 sub Windows – Intrarea şi ieşirea din FoxProW. FOR stare = .t. Ieşirea cu salvare din această fereastră se face cu combinaţia de taste Ctrl+Enter. Exemplu: din baza de date MFIXE vom copia în baza de date MFIXE_N cu aceeaşi structură mijloacele fixe care sunt în stare de folosinţă: CLOSE ALL USE mfixe_n && se deschide baza de date mfixe_n APPEND FROM mfixe. se va include clauza FIELDS. După introducerea ultimului câmp se sare la următoarea înregistrare care se va adăuga. separate prin virgulă. Pentru a prelua din fişier doar anumite înregistrări. Comanda APPEND BLANK are ca efect adăugarea unei înregistrări “blank” la sfârşitul bazei de date. care au stare=. Dacă se doreşte ca din baza de date <fişier> să se preia doar anumite câmpuri. Saltul la câmpul următor se realizează fie la apăsarea tastei Enter. denumire si valoare LIST && se afiseaza continutul bazei de date USE Preluarea înregistrărilor dintr-un masiv şi adăugarea lor la sfârşitul bazei de date se face cu ajutorul comenzii APPEND FROM ARRAY care va fi tratată în paragraful “Import / 67 . se realizează cu comanda APPEND FROM: APPEND FROM <fişier> [ FIELDS <listă câmpuri > ] [ FOR <expL> ] [ [ TYPE ] [ DELIMITED [ WITH TAB | WITH <delimitator> | WITH BLANK ] [ DIF | FW2 | MOD | PDOK | RPD | SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | XLS ] ] <fişier> reprezintă numele fişierului din care se preiau înregistrările ce se vor adăuga la baza de date. deosebită de cea prezentată anterior. fereastra de editare închizându-se după aceasta. Terminarea introducerii tuturor înregistrărilor se realizează acţionând Ctrl+End. Comanda APPEND adaugă înregistrări la sfârşitul bazei de date deschisă în zona de lucru curentă şi are următoarea sintaxă: APPEND [ BLANK ] Fără clauza BLANK comanda determină deschiderea unei ferestre de editare în care utilizatorul poate introduce. fie când câmpul se completează în întregime. Elemente de interfaţă • la comanda APPEND FROM datele sunt preluate dintr-o altă bază de date sau un alt fişier. preluandu-se doar campurile. se va specifica domeniul acestora. când cursorul se află în câmpul respectiv. după care se intră întro fereastră de editare a câmpului memo. denumire. • comanda APPEND FROM ARRAY preia datele dintr-un masiv şi le introduce în baza de date. . în care <listă câmpuri > reprezintă lista câmpurilor ce se vor copia. câmp cu câmp. se obţine folosind clauza BLANK. trebuie specificată clauza ?. prin clauza FOR. Dacă nu se specifică altfel. FIELDS cod. utilizatorului oferindu-i-se astfel posibilitatea selectării fişierului într-o fereastră de dialog.FoxPro 2. cod. O formă a comenzii APPEND. valoare. NOTE se adauga din baza de date mfixe_n inregistrari. prin alte comenzi FoxProW.t. Înregistrarea “blank” este înregistrarea în care toate câmpurile conţin valori vide. Dacă nu se specifică numele fişierului. Pentru a edita un câmp de tip memo. Adăugarea de înregistrări la sfârşitul unei baze de date.

inregistrari pe inregistrarea 2 INSERT BEFORE && se insereaza o noua inregistrare. Dacă se psecifică clauza BLANK se adaugă o înregistrare blank. in pozitia 2 LIST USE 5. ele diferind faţă de comanda BROWSE doar prin modul de organizare pe ecran a ferestrei corespunzătoare. Elemente de interfaţă Export dintr-o bază de date”. folosind comanda INSERT: INSERT [ BEFORE ] [ BLANK ]. BROWSE şi REPLACE. Primele trei comenzi nu modifică propriu-zis conţinutul bazei de date. Cea de-a doua metodă de adăugare a unei noi înregistrări la o bază de date o reprezintă inserarea înregistrării în interiorul bazei de date. la comenzile CHANGE şi EDIT câmpurile din cadrul unei înregistrări sunt aşezate unele sub altele. Comanda are ca efect inserarea unei noi înregistrări. Comenzile CHANGE şi EDIT sunt identice. La toate trei comanzile. Astfel. EDIT. Sintaxa comenzii este: CHANGE | EDIT [ FIELDS <listă câmpuri> ] [ <domeniu> ] [ FOR <expL1> ] [ WHILE <expL2> ] [ FONT <expC1> [.10 Modificarea conţinutului unei baze de date Modificarea datelor stocate într-o bază de date se realizează cu comenzile CHANGE. pe când la comanda BROWSE acestea se află unele lângă altele. altfel se deschide o fereastră de editare pentru introducerea interactivă a conţinutului noii înregistrări.FoxPro 2. <expN1> ] ] [ STYLE <expC2> ] [ FREZEE <câmp> ] [ KEY <expr1> [. în ferestrele corespunzătoare. după înregistrarea curentă. astfel: INSERT BEFORE Înregistrare nouă INSERT Exemplu: USE mfixe_n GOTO 2 && se pozitioneaza indicatorul de . Clauza BEFORE determină adăugarea unei înregistrări noi înaintea înregistrării curente. înregistrările sunt aşezate unele sub altele. <expr2> ] ] [ LAST ] [ LEDIT ] [ REDIT ] [ LPARTITION ] [ NOAPPEND ] [ NOCLEAR ] [ NODELETE ] [ NOEDIT | NOMODIFY ] [ NOLINK ] [ NOMENU ] [ NOOPTIMIZE ] [ NORMAL ] [ NOWAIT ] [ PARTITION <expN2> ] [ PREFERENCE <expC3> ] [ REST ] [ SAVE ] [ TIMEOUT <expN3> ] [ TITLE <expC4> ] [ VALID [ :F ] <expL3> [ ERROR <expC5> ] ] [ WHEN <expL4> ] 68 Înregistrare curentă .6 sub Windows – Intrarea şi ieşirea din FoxProW. Comanda CHANGE (sau EDIT) permite editarea conţinutului unei baze de date într-o fereastră de editare. ci deschid o fereastră în care utilizatorul va modifica datele din baza de date în mod interactiv.

Dacă valoarea obţinută este .FoxPro 2. modifica doar campul stare. data se consideră incorectă. Sintaxa de definiţie a unui câmp calculat este: <nume câmp calculat> = <expr> Exemplu: având baza de date MFIXE. STARE. având următoarea sintaxă: <câmp1> [ :R ] [ :V=<expr1> [ :F ] [ :E=<expC1> ] ] [ :P=<expC2> ] [ :B=<expr2>.<câmp2> [ :R ] .T. Clauza FIELDS are ca efect afişarea spre editare doar a câmpurilor specificate în <listă câmpuri>. nu şi modifica. Elemente de interfaţă [ WIDTH <expN4> ] [ [ WINDOW ] <nume fereastră 1> ] [ IN [ WINDOW ] <nume fereastră 2> | IN SCREEN ] ] [ COLOR SCHEME <expN5> | COLOR <listă perechi de culori> ] Ieşirea din fereastra de editare Change şi salvarea modificărilor se face folosind combinaţia CTRL+End. . CLOSE ALL USE mfixe CHANGE FIELDS cod. ale unei baze de date sau calculate. : F – se foloseşte pentru a forţa evaluarea expresiei <expr1>. data introdusă în câmp se consideră incorectă. dar nu se pot modifica. Primul şi ultimul sunt câmpuri simple ale bazei de date.6 sub Windows – Intrarea şi ieşirea din FoxProW. VECHIME. iar dacă este evaluată la . afişându-se mesajul de eroare. . Dacă această clauză lipseşte. sunt afişate spre editare toate cămpurile bazei de date. <expr3> [ :F ] ] [ :H=<expC3> ] [ :W=<expL1> ] [ . separate prin virgulă. VECHIME fiind un câmp calculat în funcţie de data instalării (câmpul DATA_INST din baza de date) şi data curentă. Aceste câmpuri se pot doar vizualiza. Câmpurile calculate reprezintă câmpuri din fereastra de editare. stare USE Opţiunile ataşate fiecărui câmp au următoarele semnificaţii: :R – câmpul se poate vizualiza. stare NOTE se afiseaza campurile cod si stare. iar valoarea ei este 0. USE : V=<expr1> . vechime= (DATE ( ) – data_inst) / 365. Această listă reprezintă o înşiruire de câmpuri. chiar şi atunci când se trece cu cursorul prin câmp fără modificarea conţinutului acestuia. vom deschide o fereastră de editare în care vom afişa doar câmpurile COD. 69 . ] În lista de câmpuri pot fi incluse şi câmpuri ale unei baze de date deschisă într-o altă zonă de lucru decât cea curentă. se evaluează <expr1>. create prin evaluarea unei expresii şi afişate în fereastra respectivă ca un câmp de sine stătător. dar se poate. afişându-se un mesaj de eroare. După ce valoarea memorată în câmp s-a modificat şi se iese din editare. data introdusă în câmp este corectă. În cazul când expresia este de tip numeric. în ordinea apariţiei lor în listă.F. şi deci validarea. Exemplu: USE mfixe CHANGE FIELDS cod : R.permite validarea câmpului introdus.

FOR. Exemplu: vom realiza acelaşi lucru ca şi în exemplul precedent. 9999999999 USE : P=<expC2> . care va fi prezentat la comanda GET. restul fiind afişate în fereastra de editare fără a se permite editarea lor. <domeniu>. : F : E = ‘Valoare prea mica’ NOTE se citeste campul valoare permitandu-se doar. ce are antetul ‘Val. În cazul când valoarea câmpului nu se încadrează între cele două expresii.fix’.se foloseşte pentru a se specifica intervalul în care trebuie să se afle valoarea din câmp după editare.fix’ si doar a acelor. in caz de eroare. : W = valoare = 0 NOTE se permite citirea doar a campului valoare.6 sub Windows – Intrarea şi ieşirea din FoxProW.. iar stilul de afişare prin clauza Style. valoare : H = ‘Val. şi anume <expC1>. WHILE specifică domeniul înregistrărilor ce vor fi accesibile spre editare. Exemplu: USE mfixe CHANGE FIELDS cod : R.T. Elemente de interfaţă : E=<expC1> .mijl. iar . USE mfixe CHANGE FREEZE denumire NOTE se editeaza doar denumire al bazei de date mfixe USE Clauza KEY se foloseşte pe baze de date indexate pentru limitarea mulţimii înregistrărilor afişate în fereastra Change la cele pentru care valoarea cheii de indexare se 70 . <expr3> .. se afişează un mesaj de eroare. Aceste două valori trebuie să fie de acelaşi tip cu câmpul editat. valori mai mari decat 100000. valoare : V = valoare >= 100000. Clauza Freeze se foloseşte pentru a selecta spre modificare un singur câmp şi anume <câmp>.se poate specifica un cod PICTURE.numele câmpului care se afişează la partea superioară a ferestrei de editare. : W=<expL1> . inregistrari care au valoare=0 USE Fontul folosit pentru textul afişat în fereastra Change se poate specifica prin clauza Font.mijl. Exemplu: USE mfixe CHANGE FIELDS cod : R. folosind această opţiune: USE mfixe CHANGE FIELDS cod : R. va fi înlocuit cu <expC3>. afisandu-se mesajul ‘Valoare prea mica’ USE : B=<expr2>.FoxPro 2. <expr2> reprezintă limita inferioară.se foloseşte pentru ca mesajul afişat în caz de eroare să fie altul decât cel implicit. în capitolul “INTRARE / IEŞIRE”. valoare : B = 100000. : H=<expC3> .se permite intrarea în editarea câmpului doar dacă expresia logică <expL1> este evaluată la valoarea . <expr3> reprezintă limita superioară.

Împărţirea în cele două partiţii se face folosind clauza PARTITION. care conţine comenzi specifice ferestrei de editare Change. Dacă se specifică LEDIT în comanda CHANGE. După aceasta ştergerea ecranului se poate face cu CLEAR. Elemente de interfaţă află în intervalul (<expr1>. la meniul sistem este ataşat un nou submeniu. Dacă după <expN3> secunde nu este apăsată nici o tastă. Atenţie! Ieşirea din fereastra de editare cu combinaţia de taste Ctrl + End salvează configuraţia ferestrei. Folosind clauza TIMEOUT. Când FoxProW întâlneşte o comandă CHANGE într-un program. Caracteristicile ferestrei sunt salvate în fişierul de resurse FoxProW (FOXUSER. Pentru ca deplasarea pe înregistrările bazei de date să se facă independent în cele două partiţii. numite partiţii. numărul de secunde cât FoxProW va aştepta pentru introducerea datelor în fereastra de editare. independent una de alta. Următoarele apariţii ale acestei clauze (bineînţeles inclusă în comanda CHANGE). cursorul va fi poziţionat în primul câmp din poziţia dreaptă. partiţia dreaptă se va afişa în modul Browse. iar dacă în comandă se include REDIT. aceasta se închide. FoxProW continuând execuţia programului. ci vor permite doar vizualizarea acestora. Comanda CHANGE poate conţine ambele clauze simultan. Pentru a nu permite ştergerea înregistrărilor din baza de date se include în comandă clauza NODELETE. <expr2>). din fereastra de editare. fereastra de editare Change va căpăta aceleaşi caracteristici cu cele pe care le avea la ultima sa folosire (când acestea au fost salvate). se foloseşte clauza NOCLEAR. Pentru ca imaginea ferestrei să rămână pe ecran şi după ieşirea din editare. Clauza PREFERENCE determină salvarea atributelor ferestrei de editare Change în fişierul de resurse FoxProW sub numele dat prin şirul de caractere <expC3>.6 sub Windows – Intrarea şi ieşirea din FoxProW. NOEDIT şi NOMODIFY sunt două clauze care se exclud şi care nu permit modificarea înregistrărilor din baza de date. pentru aceasta folosindu-se clauza NODELETE. Dacă se doreşte ca acest submeniu să nu apară. Dacă includem clauza LPARTITION. La deschiderea ferestrei de editare. au ca efect refacerea atributelor salvate anterior. ci continuă execuţia programului cu instrucţiunea imediat următoare lui CHANGE. ca urmare a execuţiei comenzii CHANGE. opreşte utilizatorul de a adăuga înregistrări noi la baza de date. 71 .DBF). Şi această clauză este disponibilă numai într-un program FoxProW. după ieşirea din fereastra de editare. prezentă în comanda CHANGE. În cazul în care comanda CHANGE conţine clauza NOWAIT. având ataşat acelaşi nume. Odată cu apariţia pe ecran a ferestrei de editare. adică nu se poate introduce când comanda este dată în mod interpretativ în fereastra de comenzi. acesta opreşte execuţia programului dându-i posibilitatea utilizatorului de a modifica datele din baza de date în fereastra de editare. Fereastra de editare Change poate fi împărţită în două părţi. are ca efect deplasarea pe aceeaşi înregistrare în cealaltă partiţie. Clauza NOAPPEND. În mod normal. Incluzând în comandă clauza LAST. în cadrul unei partiţii. prin expresia numerică ce urmează clauzei. iar ieşirea cu combinaţia Ctrl + Q nu realizează această salvare. Edit sau Browse. În mod normal. deplasarea de la o înregistrare la alta. Clauza NOWAIT este disponibilă numai în interiorul unui program. numit Browse. fiecare dintre acestea putând fi văzută în forma Change (câmpurile aranjate vertical). Aceste clauze nu presupun protejarea la ştergere a înregistrărilor din baza de date. caz în care ambele partiţii sunt afişate în modul Browse. programatorul specifică. în comandă se include clauza NOMENU. sau sub forma Browse (câmpurile aranjate orizontal). unde expresia numerică ce o urmează reprezintă coloana unde se vor separa cele două partiţii. FoxProW nu mai face pauză la întâlnirea comenzii. partiţia stângă va fi văzută în modul Browse. se foloseşte clauza NOLINK.FoxPro 2. cursorul va fi poziţionat iniţial în primul cămp al partiţiei din partea stângă. fereastra de editare se închide automat.

acesta apărând în partea superioară a chenarului ferestrei. care se referă la un câmp dintro înregistrare a bazei de date. WINDOW. Construcţia VALID :F <expL3> ERROR <expC5> este echivalentă cu lista de opţiuni :V = <expL3> >F >E ) <expC5>. cu comenzile CHANGE şi EDIT. Pentru ca indicatorul de înregistrări să nu fie afectat la deplasarea cursorului pe baza de date. având aceeaşi funcţionare. O organizare diferită a ferestrei de editare deschisă pentru modificarea conţinutului unei baze de date. Pentru a fi afişat un alt titlu pentru această fereastră se foloseşte clauza TITLE. Pe când opţiunea :W se referă la un câmp dintr-o înregistrare. Această comandă este asemănătoare. dar la nivel de înregistrare. în fereastra de editare. Elemente de interfaţă La folosirea unei comenzi CHANGE indicatorul de înregistrări va indica spre prima înregistrare a bazei de date. unde câmpurile sunt afişate unul sub altul în cadrul aceleiaşi înregistări. Clauza WIDTH este folosită pentru a limita numărul de caractere afişate pentru un câmp. Clauza SAVE este folosită pentru a păstra fereastra de editare pe ecran şi după ieşirea din comanda CHANGE.FoxPro 2. neputându-se introduce în fereastra de comenzi. <expr2> ] ] [ LAST ] [ LEDIT ] [ REDIT ] [ LOCK <expN2> ] [ LPARTITION ] [ NOAPPEND ] [ NOCLEAR ] [ NODELETE ] [ NOEDIT | NOMODIFY ] [ NOLGRID ] [ NORGRID ] [ NOLINK ] [ NOMENU ] [ NOOPTIMIZE ] [ NOREFRESH ] [ NORMAL ] [ NOWAIT ] [ PARTITION <expN3> ] 72 . în fereastra de editare BROWSE câmpurile sunt aşezate pe orizontală. Nu este afectată mărimea câmpului în baza de date. în fereastra de editare. VALID :F <expL3> ERROR <expC5> Această clauză este echivalentă cu opţiunea :V din clauza FIELDS a aceleiaşi comenzi. se obţine folosind comanda BROWSE.6 sub Windows – Intrarea şi ieşirea din FoxProW. iar clauzele COLOR SCHEME şi COLOR la controlul culorilor. <expN1> ] ] [ STYLE <expC2> ] [ FOR <expL1> ] [ FORMAT ] [ FREEZE <câmp> ] [ KEY <expr1> [. clauza VALID se referă la întreaga înregistrare. Această clauză este. Acelaşi tip de asemănare există şi între clauza WHEN şi opţiunea :W a clauzei FIELDS. atât ca scop. de asemenea. dar la nivel de înregistrare. unul lângă altul. dar spre deosebire de opţiunea clauzei FIELDS. se include clauza REST în alcătuirea comenzii CHANGE. principala diferenţă dintre acestea fiind dată de modul de aranjare a câmpurilor în cadrul unei înregistrări. Clauzele NORMAL. cât şi ca utilizare. în care şirul de caractere <expC4> reprezintă noul titlu al acesteia. Spre deosebire de fereastra de editare CHANGE. Sintaxa comenzii BROWSE este următoarea: BROWSE [ FIELDS <listă câmpuri> ] [FONT <expC1> [. Deci construcţia WHEN <expL4> este echivalentă cu opţiunea clauzei FIELDS :W = <expL4>. IN SCREEN se referă la lucrul cu ferestre. Fereastra de editare Change are ca titlu numele bazei de date al cărui conţinut se modifică. disponibilă doar în programele FoxProW. clauza WHEN se referă la întreaga înregistrare.

iar prezenţa clauzei REDIT are acelaşi efect asupra partiţiei drepte. Modificarea conţinutului unei baze de date se poate face şi cu comanda REPLACE care. respectiv NORGRID. Clauza LEDIT prezentă în comanda BROWSE face ca partiţia stângă să fie afişată în format Change. respectiv dreaptă a ferestrei. acesta va fi umplut cu asteriscuri. domeniul implicit fiind înregistrarea curentă. cu câteva diferenţe. vechea valoare din câmpul <câmp2> cu valoarea expresiei <expr2> ş. În fereastra BbrowseB câmpurile sunt separate prin linii verticale.FoxPro 2. acestea referindu-se la partiţia stângă. . . <domeniu>. specificând clauza ADDITIVE. Restul clauzelor sunt aceleaşi cu cele de la comanda CHANGE (sau EDIT). ci se va realiza adăugarea noului conţinut la sfârşitul celui vechi. Sintaxa comenzii este următoarea: REPLACE <câmp1> WITH <expr1> [ ADDITIVE ] [.. <câmp2> WITH <expr2> [ ADDITIVE ] . spre deosebire de cele trei anterioare.m. În cazul câmpurilor memo.. nu deschide o fereastră în care utilizatorul introduce noile valori ale câmpurilor bazei de date. dacă nu se reuşeşte încadrarea valorii expresiei în câmpul respectiv. Pentru câmpuri numerice. albastra secvenţa de comenzi care realizează acest lucru fiind: USE mfixe APPEND BLANK REPLACE cod WITH ‘vopsea’. Clauza LOCK este urmată de o expresie numerică ce reprezintă numărul de câmpuri ce vor fi plasate în partiţia stângă a ferestrei de editare Browse (se referă la primele <expN2> câmpuri. cu următorul conţinut: COD : vopsea DENUMIRE : vopsea in ulei. Elemente de interfaţă [ PREFERENCE <expC3> ] [ REST ] [ SAVE] [ TIMEOUT <expN4> ] [ TITLE <expC4> ] [ VALID [ :F ] <expL2> [ ERROR <expC5> ] ] [ WHEN <expL3> ] [ WIDTH <expN5> ] [ [ WINDOW ] <nume fereastră 1> ] [ IN WINDOW < nume fereastră 2> | IN SCREEN ] ] [ COLOR <listă perechi culori> | COLOR SCHEME <expN6> ] Marea majoritate a clauzelor sunt asemănătoare cu cele de la comanda CHANGE. 73 . Clauza FORMAT se referă la preluarea formatului de afişare a câmpurilor din fereastra Browse dintr-un fişier de format. ci realizează propriu-zis actualizarea bazei de date cu datele precizate în comandă. vechea valoare nu este înlocuită cu cea nouă. Clauza REFRESH se referă la reîmprospătarea ferestrei de editare Browse fiind necesară la lucrul în reţea cu baza de date. Pentru a le elimina se folosesc clauzele NOLGRID. . FOR şi WHILE specifică domeniul înregistrărilor la care se referă comanda REPLACE. ] [ <domeniu> ] [ FOR <expL1> ] [ WHILE <expL2> ] [ NOOPTIMIZE ] Comanda înlocuieşte vechea valoare din câmpul <câmp1> cu valoarea rezultată în urma evaluării expresiei <expr1>. albastra’. denumire WITH ‘vopsea in ulei. Exemplu: la baza de date MFIXE se va adăuga o nouă înregistrare.a.6 sub Windows – Intrarea şi ieşirea din FoxProW.d.

Elemente de interfaţă LIST USE 74 .6 sub Windows – Intrarea şi ieşirea din FoxProW.FoxPro 2.

Sign up to vote on this title
UsefulNot useful