UNIVERSITATEA ŞTEFAN CEL MARE SUCEAVA

Size: px
Start display at page:

Download "UNIVERSITATEA ŞTEFAN CEL MARE SUCEAVA"

Transcription

1 UNIVERSITATEA ŞTEFAN CEL MARE SUCEAVA Facultatea de Ştiinţe Economice şi Administraţie Publică Nicolae Morariu BAZE DE DATE Îndrumar de laborator

2 Referenţi ştiinţifici: Prof.univ.dr.ing. Alexandru Valachi Universitatea Tehnică Gh. Asachi Iaşi Prof.univ.dr.ing. Ştefan-Gheorghe Pentiuc Universitatea Ştefan cel Mare Suceava Descrierea CIP a Bibliotecii Naţionale a României MORARIU, NICOLAE Baze de date; Îndrumar de laborator/ Nicolae Morariu. Suceava: Editura Universităţii din Suceava, 2005 Bibliogr. ISBN (075.8) Copyright Toate drepturile asupra acestei ediţii sunt rezervate autorului 2

3 CUPRINS Introducere...4 Lucrare de laborator nr Baze de date ACCESS. Crearea unei baze de date...5 Lucrare de laborator nr Baze de date ACCESS. Crearea şi utilizarea tabelelor...9 Lucrare de laborator nr Baze de date ACCESS. Crearea câmpurilor de tip Lookup Wizard...14 Lucrare de laborator nr Baze de date ACCESS. Crearea tabelelor bazei de date FurnizoriClienti...21 Lucrare de laborator nr Baze de date ACCESS. Interogări...24 Lucrare de laborator nr Baze de date ACCESS. Formulare...30 Lucrare de laborator nr Baze de date ACCESS. Rapoarte...34 Lucrare de laborator nr Baze de date FoxPro. Creare tabele, introducere şi editare date în tabele...43 Lucrare de laborator nr Baze de date FoxPro. Elementele limbajului FoxPro...49 Lucrare de laborator nr Baze de date FoxPro. Clase de instrucţiuni ale limbajului FoxPro...59 Lucrare de laborator nr Baze de date FoxPro. Programarea în Visual FoxPro...67 Lucrare de laborator nr Limbajul SQL. Crearea bazei de date...75 Lucrare de laborator nr Limbajul SQL. Interogarea bazelor de date...82 Bibliografie

4 Introducere Aplicaţiile practice prezentate în îndrumarul de laborator au la bază lucrarea Baze de date elaborată de autor şi publicată de Editura Universităţii Ştefan cel Mare Suceava, ISBN , Informatica de gestiune a impus dezvoltarea şi diversificarea rapidă a Sistemelor de Gestiune a Bazelor de Date (S.G.B.D.) şi a condus la realizarea unui număr impresionant de aplicaţii informatice cu baze de date. Sistemele şi aplicaţiile informatice cu baze de date sunt utilizate azi în aproape toate domeniile de activitate din care un loc aparte îl ocupă utilizarea lor în cadrul agenţilor economici. Scopul lucrării este de a familiariza studenţii economişti cu utilizarea unor produse pentru crearea şi gestionarea bazelor de date. Lucrările practice de laborator sunt realizate în cadrul produselor FoxPro, Access şi a limbajului SQL utilizat în cadrul sistemului Oracle. Pentru a asigura parcurgerea şi însuşirea problematicii propuse, lucrarea de faţă cuprinde trei părţi şi anume: I Baze de date Access, II Baze de date FoxPro, III Limbajul SQL. Partea I-a prezintă un mediu de lucru performant cu baze de date. Sunt definite componentele unei baze de date Access, fazele şi procedurile de urmat pentru crearea şi exploatarea bazei de date. Această problematică este tratată pe parcursul a şapte lucrări de laborator, în fiecare lucrare fiind prezentate sumar facilităţi ale produsului Access, modalităţi de soluţionare a unor probleme practice şi formulate probleme propuse spre rezolvare. În partea a II-a sunt prezentate căi practice de organizare şi exploatare a bazelor de date relaţionale cu ajutorul sistemului FoxPro. Sunt prezentate elementele limbajului FoxPro şi evidenţiate facilităţile oferite de mediul de programare Visual FoxPro. Problemele avute în vedere privind crearea şi utizarea unei baze de date FoxPro sunt enunţate şi soluţionate în cadrul a patru lucrări de laborator având în vedere problema enunţată şi rezolvată folosind produsul Access. În partea a III-a este prezentat limbajul SQL pentru crearea, administrarea şi interogarea bazelor de date relaţionale. Implementat în majoritatea produselor software moderne de baze de date, limbajul SQL este larg utilizat în arhitecturi cu baze de date client / server, sisteme de baze de date distribuite, pentru accesarea bazelor de date în reţele de calculatoare, cât şi pentru interogarea bazelor de date pe un singur calculator personal. Sunt illustrate exemple de utilizare a limbajului SQL în cadrul produsului Oracle pentru crearea, actualizarea şi interogarea bazei de date, definirea utilizatorilor şi acordarea drepturilor de acces, asigurarea securităţii bazei de date la nivel de sistem şi la nivel de relaţie. Exemplele prezentate pecum şi problemele formulate spre rezolvare pleacă de la problema enunţată şi soluţionată în primele două părţi ale lucrării. Prezentarea modalităţilor de soluţionare a aceleiaşi probleme în cadrul a trei produse pentru crearea şi interogarea bazelor de date relaţionale oferă posibilitatea efectuării unei analize comparative privind facilităţile oferite de fiecare din cele trei produse utilizate. 4

5 Lucrare de laborator nr. 1 Tema: Baze de date ACCESS. Crearea unei baze de date. Microsoft Access este un sistem pentru crearea şi utilizarea bazelor de date de complexitate medie pentru calculatoare personale, putând lucra performant cu sute de mii de înregistrări pe un calculator personal sau în cadrul unei reţele de până la 20 utilizatori care lucrează simultan cu baza de date. Programul Access stochează toate componentele unei baze de date într-un singur fişier pe disc cu extensia.mdb. Componentele unei baze de date ACCESS O bază de date Access poate conţine următoarele componente: - Tabele stochează datele bazei de date. Fiecare coloană a tabelei este numită câmp şi fiecare rând al tabelei este numit înregistrare. - Interogări realizează extragerea unor date din una sau mai multe tabele conform unor criterii precizate de utilizator în vederea vizualizării şi actualizării datelor din baza de date sau pentru a crea alte tabele în vederea păstrării unui instantaneu al informaţiilor. O interogare nu are date proprii şi operează cu date din tabelele bazei de date. - Formulare un formular este o fereastră pentru introducerea sau afişarea şi editarea datelor. Un formular poate conţine subformulare pentru a afişa date asociate unor date din formular şi butoane sau alte obiecte grafice pentru realizarea anumitor acţiuni. - Rapoarte sunt utilizate pentru operaţii de ieşire în vederea obţinerii unor situaţii rezultate din prelucrarea unor date din baza de date. Pentru includerea selectivă a unor date într-un raport sau pentru realizarea unui raport care foloseşte date din mai multe tabele va trebui creată mai întâi o interogare şi apoi raportul să fie fundamentat pe rezultatele interogării. - Comenzi macro permit realizarea unei secvenţe de acţiuni care poate fi ataşată unui buton. - Module stochează proceduri şi funcţii scrise în limbajul Visual Basic pentru tratarea evenimentelor. Crearea unei baze de date Microsoft Access furnizează două metode de creare a unei baze de date. 1. se poate crea o bază de date goală şi apoi se adaugă tabelele, interogările, formularele, rapoartele şi alte obiecte necesare. 2. se poate crea o bază de date folosind Database Wizard. Indiferent de metoda prin care se creează baza de date, ea poate fi oricând modificată. Crearea unei baze de date goale Pentru a crea o bază de date goală se vor executa următoarele operaţii: 1. Atunci când se deschide o sesiune Microsoft Access, pe ecran se afişează caseta de dialog Microsoft Access ce conţine opţiuni care permit crearea unei baze de date noi sau deschiderea uneia existente (vezi figura 1). Pentru a crea o bază de date goală (fără a folosi un Wizard), se execută clic pe opţiunea Blank Database şi apoi se execută clic pe butonul OK. Dacă baza de date este deschisă deja sau caseta de dialog Microsoft Access este închisă, atunci se va executa clic pe butonul New Database din bara instrumentelor Database. Pe ecran se afişează caseta de dialog New (vezi figura 2). Se execută dublu-clic pe pictograma Blank Database din eticheta General 5

6 Figura1 Caseta de dialog Microsoft Access Blank Database permite crearea unei baze de date goale Database Wizard permite crearea unei noi baze de date folosind un wizard Open an Existing Database permite deschiderea unei baze de date existente. Figura 2 Caseta de dialog New 6

7 2. În caseta de dialog File New Database care apare pe ecran (figura 2.1), se va specifica numele bazei de date în controlul File name şi se alege un dosar pentru baza de date în controlul Save in, apoi execută clic pe butonul Create. Pe ecran se va deschide fereastra Database (vezi figura 4). Figura 2.1 Caseta de dialog File New Database După crearea unei baze de date goale se vor defini obiectele (tabelele, formularele, interogările, rapoartele etc.) care vor forma baza de date. Crearea bazei de date folosind Database Wizard Pentru a crea o nouă bază de date folosind un Wizard se vor executa următoarele operaţii: Atunci când se deschide o sesiune de lucru Access, pe ecran se afişează caseta de dialog Microsoft Access ce conţine opţiuni care permit crearea unei baze de date noi sau deschiderea uneia deja existente (vezi figura 1). Pentru a crea o bază de date folosind un Wizard, se va executa clic pe opţiunea Database Wizard şi apoi se execută clic pe butonul OK. Dacă este deja deschisă o bază de date sau caseta de dialog Microsoft Access este închisă, atunci se execută clic pe butonul New Database din bara instrumentelor Standard. Pe ecran se afişează caseta de dialog New (vezi figura 2). Se execută apoi clic pe eticheta Databases. În eticheta Databases, se execută dublu-clic pe pictograma tipului de bază de date care se va crea (vezi figura 3). În caseta de dialog File New Database se selectează dosarul în care se va salva baza de date şi se va tasta numele acesteia. Se execută clic pe butonul Create pentru a începe definirea noii baze de date. Se vor urma indicaţiile din casetele de dialog ce apar pe ecran. La terminarea operaţiei de creare a bazei de date pe ecran se afişează fereastra Database conţinând obiectele definite de Wizard (vezi figura 4), pe baza indicaţiilor care au fost date în casetele de dialog. 7

8 Figura 3 Caseta de dialog New având selectatã eticheta Databases Figura 4 Obiectele bazei de date de tip Contact Management Problemă propusă Să se creeze baza de date FurnizoriClienţi prin fiecare din cele două metode prezentate mai sus. 8

9 Lucrare de laborator nr. 2 Tema: Baze de date ACCESS. Crearea şi utilizarea tabelelor Tabela este o colecţie organizată de date despre un anumit subiect, cum ar fi produse, furnizori etc. Folosind o tabelă separată pentru fiecare subiect se elimină duplicarea datelor, asigurându-se astfel utilizarea mai eficientă a spaţiului de stocare şi reducerea erorilor la introducerea datelor. Tabelele sunt organizate în coloane (numite câmpuri) şi linii (numite înregistrări sau articole). Tipuri de date La alegerea tipului de date pentru un câmp se vor avea în vedere următoarele observaţii: Tipul de date admise în camp. Spre exemplu, nu se va putea memora text într-un câmp cu tipul de date Number. Spaţiul alocat pentru memorarea valorilor din câmp Tipurile de operaţii ce se vor execute cu valorile din camp. Spre exemplu, Microsoft Access poate aduna valorile din câmpurile Number sau Currency, dar nu şi valorile din câmpurile Text sau OLE Object. Câmpurile de tip Memo sau OLE Object nu pot fi sortate sau indexate. Câmpurile Memo sau OLE Object nu se pot folosi pentru a grupa articolele în cereri sau rapoarte. Într-un câmp Text, numerele sunt sortate ca şiruri de caractere (1, 10, 100, 2, 20, 200 s.a.m.d.), nu ca valori numerice. Pentru a sorta numerele ca valori numerice se folosesc câmpurile Number sau Currency. De asemenea, multe formate de date calendaristice nu se vor sorta corect dacă se introduc într-un câmp Text. Pentru a fi sortate corect se introduc numai într-un câmp de tip Date/Time. Tipurile de date admise în Microsoft Access, modul lor de folosire şi dimensiunea de memorare sunt prezentate în tabelul T1. T1. Tipuri de date admise într-o bază de date Access Tipul datei Utilizare Text Text sau combinaţie de text şi numere, cum Spaţiul de memorie necesar Până la 255 caractere. ar fi adresele. De asemenea, numere ce nu Microsoft Access memorează necesită calcule, cum ar fi numerele de numai caracterele introduse în telefon, numerele de partidă sau codurile câmp; nu se memorează poştale. caractere spaţiu pentru poziţiile nefolosite. Pentru a controla numărul maxim de caractere ce pot fi introduse se Memo Texte şi numere foarte lungi, cum ar fi notiţe 9 setează proprietatea FieldSize. Până la 64,000 caractere.

10 Number sau descrieri. Date numerice folosite pentru calcule 1, 2, 4 sau 8 bytes (16 bytes matematice, cu excepţia calculelor ce impun numai pentru Replication ID). valori monetare. Pentru a defini un anumit tip Date/Time Currency Number setaţi proprietatea FieldSize. Date calendaristice şi timpi. Valori monetare. Se va folosi tipul de date 8 bytes. 8 bytes. Currency pentru a preveni rotunjirea pe timpul calculelor. Precizia tipului este de 15 cifre la partea întreagă şi 4 cifre la partea AutoNumber zecimală. Numere în secvenţă unică (din 1 în 1) sau 4 bytes (16 bytes numai pentru aleatoare care sunt automat inserate atunci Replication ID). Yes/No când se adaugă un articol. Câmpuri care vor conţine numai una din două 1 bit. OLE Object valori, cum ar fi Yes/No, True/False, On/Off. Obiecte (cum ar fi documente Microsoft Pâna la 1 GB (limitat de spaţiul Word, foi de calcul Microsoft Excel, imagini, disc). sunete sau alte date binare) create în alte programe folosind protocolul OLE, ce pot fi înlănţuite sau încapsulate într-o tabelă Microsoft Access. Trebuie să se folosească un cadru de obiect legat într-o machetă sau Lookup raport pentru a afişa obiectul OLE. Crearea unui câmp care permite alegerea unei Acelaşi spaţiu ca şi câmpul Wizard valori dintr-o altă tabelă sau dintr-o listă de cheii primare folosit pentru a valori folosind o casetă combo. Alegând executa examinarea, în mod această opţiune, se lansează un Wizard care obişnuit 4 bytes. dirijează crearea listei. În tabelul T2 sunt prezentate tipurile şi mărimea valorilor numerice ce pot fi memorate în câmpurile de tip Number. T2. Date de tip Number Valoarea proprietăţii Domeniu FieldSize Byte 0 la 255 Precizie Memorie necesară 1 byte 10

11 Integer Long Integer Single Double -32,768 la 32,767-2,147,483,648 la 2,147,483, E38 la E E308 la bytes 4 bytes 4 bytes 8 bytes E308 Crearea unei tabele În Microsoft Access există două metode de a creare a unei tabele şi anume: - se poate crea o tabelă goală (empty) pentru a introduce datele; - se poate crea o tabelă folosind datele existente într-o altă sursă de date. Crearea unei tabele goale În Microsoft Access există patru procedee pentru crearea unei tabele goale, astfel: Î Database Wizard pentru a crea într-o singură operaţie toate tabelele, formularele şi rapoartele necesare întregii baze de date. Database Wizard creează o nouă bază de date. Acest procedeu nu poate fi folosit pentru a adăuga noi tabele, formulare sau rapoarte într-o bază de date existentă. p Table Wizard pentru a alege câmpurile tabelei dintr-o varietate de tabele predefinite, cum ar fi contacte de afaceri, inventare de casă sau articole medicale. c DataSheet pentru introducerea datelor direct într-o foaie de date (datasheet). La salvarea foii de date Microsoft Access va analiza datele şi automat va atribui tipul de date şi formatul pentru fiecare câmp. f Design pentru a defini toate detaliile tabelei. Indiferent de metoda care se foloseşte pentru crearea unei tabele, se poate utiliza vederea Design pentru a modifica descrierea tabelei, prin adăugarea de noi câmpuri, stabilirea valorilor implicite sau crearea măştilor de introducere. În figura 5 este reprezentată fereastra Design view pentru crearea unei tabele. 11

12 Figura 5 Fereastra Design View a unei tabele Crearea unei tabele folosind vederea Design. Pentru a crea o tabelă folosind vederea Design se execută următoarele operaţii: 1. Se deschide în fereastra Database baza de date în care se creează o nouă tabelă, dacă ea nu este deja deschisă. Se poate folosi tasta funcţională F11 pentru a comuta în fereastra Database din orice altă fereastră. 2. Se activează eticheta Tables şi apoi, fie se selectează opţiunea Create table in Design view (vezi figura 5), fie se execută clic pe butonul New (vezi figura 6) şi în caseta de dialog New Table, ce apare pe ecran (vezi figura 6), se va selecta opţiunea Design View şi apoi se execută clic pe butonul OK. 3. În fereastra Design View care apare pe ecran (vezi figura 5) se va defini fiecare câmp al tabelei. 4. Înainte de a salva tabela, se va defini o cheie primară prin click dreapta pe numele câmpului corespunzător şi selectare opţiune Primary key. Cheia primară poate fi stabilită şi ulterior. 5. După definirea structurii tabelei, se execută clic pe butonul Save din bara butoanelor Standard sau se selectează opţiunea Save din meniul File şi apoi se va tasta un nume pentru tabelă. 12

13 Figura 6 Caseta de dialog New Table având selectată opţiunea Design View Definirea câmpurilor Pentru a defini câmpuri în Design View se vor executa, în general următoarele operaţii: 1. Pentru adăugarea unui câmp în interiorul unei structuri deja definite, se selectează linia sub care se va adăuga noul câmp şi apoi se execută clic pe butonul Insert Rows din bara instrumentelor Standard sau se selectează comanda Rows din meniul Insert. Pentru a adăuga câmpul la sfârşitul structurii se execută clic în coloana Field Name a primei linii goale. 2. În coloana Field Name se tastează numele câmpului, respectând regulile Microsoft Access pentru denumirea obiectelor. 3. În coloana Data Type, se execută clic pe săgeată şi se selectează tipul de dată dorit. 4. În coloana Description se poate introduce o descriere a câmpului. 5. În foaia de configurare Field Properties se stabilesc caracteristicile câmpului (dimensiune, mesaj de introducere, valoarea implicită, formate de afişare etc.). Algoritmul prezentat este valabil pentru următoarele tipuri de câmpuri: Text, Memo, Number, Curency, Yes/No, Date/Time, AutoNumber. Reguli de denumirea obiectelor Numele unui obiect poate avea maximum 64 caractere şi poate include orice combinaţie de litere, cifre, spatii şi caractere speciale, exceptând punctul (.), semnul exclamării (!), apostroful (`) 13

14 şi parantezele drepte ([,]). Este indicat să se evite folosirea spatiilor în numele obiectelor şi nume foarte lungi pentru obiecte dacă acestea vor fi referite frecvent în expresii sau cod Visual Basic. Proprietăţile câmpurilor Fiecare câmp are un set de proprietăţi care se pot folosi pentru a personaliza modul în care datele unui câmp sunt stocate, manipulate sau afişate. Spre exemplu, se poate controla numărul maxim de caractere ce se pot introduce într-un câmp Text stabilind proprietatea FieldSize a acestuia. Proprietăţile care există pentru fiecare câmp depind de tipul de date care a fost selectat pentru câmpul respectiv. Pentru a modifica proprietăţile unui câmp se execută următoarele operaţii: 1. Se deschide tabela în vederea Design. 2. În partea superioară a ferestrei Design se selectează câmpul ale cărei proprietăţi urmează a fi modificate. 3. Se selectează proprietatea a cărei valoare vrem s-o modificăm executând clic în linia din dreapta numelui proprietăţii (în fila General de sub descrierea tabelei). 4. Se repetă operaţiile 2 şi 3 pentru toate proprietăţile ale căror valori vrem să le modificăm. 5. După efectuarea tuturor modificărilor se închide fereastra Design. În cazul în care pentru un câmp s-a ales tipul Lookup Wizard, atunci se lansează un Wizard prin intermediul căruia putem realiza o listă de examinare care afişează datele dintr-o tabelă (sau interogare) existentă care conţine deja date, sau dintr-o listă de valori prestabilită după cum este ilustrat în imagiea de ecran din figura 7. Acest tip de câmp permite selectarea valorilor dintr-o tabelă sau listă afişată, în loc ca ele să fie tastate. Figura 7. Casetă de dialog Lookup Wizard pentru crearea unei liste din valorile unei tabele, (interogări), sau liste de valori 14

15 Lucrare de laborator nr. 3 Tema: Baze de date ACCESS. Crearea câmpurilor de tip Lookup Wizard Un câmp de tipul Lookup Wizard, permite realizarea şi utilizarea unei liste de examinare care afişează datele dintr-o tabelă (sau interogare) existentă care conţine deja date, sau dintr-o listă de valori prestabilită după cum este ilustrat în imagiea de ecran din figura 7. Acest tip de câmp permite selectarea valorilor dintr-o tabelă sau listă afişată, în loc ca ele să fie tastate. În cele ce urmează se vor prezenta paşii de parcurs pentru definirea unui astfel de câmp pentru fiecare din cele două situaţii. Crearea unui câmp pentru examinarea şi afişarea valorilor dintr-o tabelă sau interogare Pentru a crea un câmp care să afişeze valorile dintr-o tabelă sau interogare se execută următoarele operaţii: 1. În coloana Data Type a câmpului, se execută clic pe săgeată şi selectează Lookup Wizard din lista afişată. 2. În prima casetă de dialog Lookup Wizard (vezi fihgura 7) se selectează opţiunea I will the lookup column to look up the values în a table or query ( doresc o coloană de examinare pentru a vizualiza valorile dintr-o tabelă sau interogare ) şi apoi se execută clic pe butonul Next pentru a trece la următoarea casetă de dialog. 3. În a doua casetă de dialog Lookup Wizard (vezi figura 8) se selectează tabela (interogarea) care va sta la baza listei de examinare şi care va trebui să existe şi să conţină date în câmpul respectiv. Se execută clic pe butonul Next pentru a trece la următoarea casetă de dialog. 4. În a treia casetă de dialog Lookup Wizard (vezi figura 9) se vor selecta câmpurile din tabela examinată a căror valori se vor afişa în lista de examinare. Lista de examinare va conţine câmpurile ce se găsesc în lista Selected Fields. Pentru a muta un câmp din lista Available Fields în lista Selected Field se va selecta câmpul în lista Available Fields şi apoi se va executa clic pe butonul >. După selectarea câmpurilor pentru lista de examinare se va executa clic pe butonul Next pentru a trece la următoarea casetă de dialog. 5. În a patra casetă de dialog Lookup Wizard (vezi figura 10) se stabileşte aspectul listei de examinare. Se recomandă activarea casetei de validare Hide key column pentru ca lista de examinare să nu afişeze şi coloana care conţine cheia de legătură. Pentru a trece la următoarea casetă de dialog se execută clic pe butonul Next. 6. În a cincea casetă de dialog (vezi figura 11) se selectează coloana pentru preluare. 7. În a şasea casetă de dialog Lookup Wizard (vezi figura 12) se modifică, dacă este necesar, numele câmpului de examinare şi caseta de validare Display Help on customizing the lookup column ( afişarea Help-ului la personalizarea coloanei de examinare ). Se execută clic pe butonul Finish pentru a termina crearea câmpului de examinare. 15

16 Figura 8. A doua casetă de dialog Lookup Wizard (pentru selectare tabelă sau interogare) Figura 10. A patra casetă de dialog Lookup Wizard (pentru aspectul listei de examinare) Figura 9. A treia casetă de dialog Lookup Wizard (pentru selectare câmpuri pentru listă) 16

17 Figura 11. A cincea casetă de dialog Lookup Wizard (pentru selectare coloană pentru preluare) 17

18 Figura 12. A şasea casetă de dialog Lookup Wizard Crearea unui câmp pentru examinarea şi afişarea unei liste de valori Pentru a crea o listă de valori se execută următoarele operaţii: 1. În coloana Data Type a câmpului de examinare, se execută clic pe săgeată şi selectează Lookup Wizard din lista afişată (vezi figura 13). 2. În prima casetă de dialog Lookup Wizard (vezi figura 14) se selectează opţiunea I will type în the values that I want ( voi tasta valorile pe care le doresc ) şi apoi se execută clic pe butonul Next pentru a trece la următoarea casetă de dialog. 3. În a doua casetă de dialog Lookup Wizard (vezi figura 15) se va stabili numărul de coloane al listei şi se vor introduce valorile listei. Se execută clic pe butonul Next pentru a trece la următoarea casetă de dialog. 4. În a treia casetă de dialog Lookup Wizard (vezi figura 16) se modifică, dacă este necesar, numele câmpului de examinare şi caseta de validare Display Help on customizing the lookup column ( afişarea Help-ului la personalizarea coloanei de examinare ). Se execută clic pe butonul Finish pentru a termina crearea câmpului de examinare. 18

19 Figura 13. Selectare tip de câmp Lookup Wizard Figura 14. Casetă de dialog Lookup Wizard pentru crearea unui câmp pentru afişarea unei liste de valori 19

20 Figura 15. A doua casetă de dialog Lookup Wizard pentru crearea unei liste de valori Figura 16. A treia casetă de dialog Lookup Wizard pentru crearea unei liste de valori 20

21 Lucrare de laborator nr. 4 Tema: Baze de date ACCESS. Crearea tabelelor bazei de date FurnizoriClienti. În baza de date FurnizoriClienţi se crează următoarele tabele: PRODUSE (catalog de produse) Câmp Semnificaţie Tip dată Dimensiune Observaţii Codp Cod produs Number, Integer 4 Cheie primară Denp Denumire produs Text 20 Desp Descriere produs Hyperlink Referă document corespunzător STOCURI (stocurile de produse pe depozite) Câmp Semnificaţie Dimensiune Observaţii Cod produs Tip dată Number, Integer Lookup Wizard Codp 4 Lookup Wizard tabela PRODUSE CodDep Cod depozit Text 2 Ump Unitate de măsură Lookup Wizard produs 8 Cant Cantitate Number, Integer 4 Pret Preţ unitar Number, LongInteger 8 Creare şi utilizare listă de valori FURNIZORI (catalog de furnizori) Câmp Semnificaţie Tip dată Dimensiune Observaţii Codf Cod furnizor Number, Integer 4 Cheie primară Denf Denumire furnizor Text 30 Adresaf Adresa furnizor Text 25 CLIENTI (catalog de clienţi) Câmp Semnificaţie Tip dată Dimensiune Observaţii Codc Cod client Number, Integer 4 Cheie primară Denc Denumire client Text 30 Adresac Adresa client Text cu

22 OFERTE (oferte de produse de la furnizori) Câmp Semnificaţie Tip dată Dimensiune Observaţii Codf Cod furnizor Number, Integer Lookup Wizard Codp Cod produs Number, Integer Lookup Wizard Ump Unitate de măsură produs 4 Lookup Wizard cu tabela FURNIZORI 4 Lookup Wizard cu tabela PRODUSE Lookup Wizard 8 Creare şi utilizare listă de valori Pret Preţ unitar Number, LongInteger 8 Datao Data ofertei Date 8 Oferta Oferta furnizor Hyperlink Referă document corespunzător VANZARI (vânzările de produse pe clienţi) Câmp Semnificaţie Tip dată Dimensiune Observaţii Codc Cod furnizor Number, Integer Lookup Wizard Codp Cod produs Number, Integer Lookup Wizard Ump Unitate de măsură produs Cant Cantitate Number, Integer 4 4 Lookup Wizard cu tabela CLIENTI 4 Lookup Wizard cu tabela PRODUSE Lookup Wizard 8 Creare şi utilizare listă de valori Pret Preţ unitar Number, LongInteger 8 Datav Data vânzării Date 8 În imaginea de ecran din figura 17 sunt evidenţiate tabelele bazei de date FurnizoriClienti şi este reprezentată descrierea tabelei Produse. În mod asemănător şi conform precizărilor din tabelele de mai sus, se vor defini şi celelalte tabele în baza de date şi se vor încărca date pentru diverse produse, preţuri, furnizori, clienţi. Pentru modificarea structurii unei tabele se va deschide tabela în modul Design. Pentru preleare sau actualizare date într-o tabelă se va deschide tabela în modul Open. 22

23 23

24 Lucrare de laborator nr. 5 Tema: Baze de date ACCESS. Interogări. Crearea şi utilizarea interogărilor Interogările se folosesc pentru a vizualiza, modifica şi analiza datele în diverse moduri. De asemenea, ele pot fi utilizate ca sursă de articole pentru formulare şi rapoarte. Pentru a crea un raport în care sunt utilizate anumite date dintr-o tabelă sau date din mai multe tabele se va crea mai întâi interogarea corespunzătoare şi apoi se va defini raportul utilizând acea interogare. Există mai multe tipuri de interogări, dar cel mai utilizat tip este interogarea de selecţie. Interogarea poate fi creată folosind un Wizard sau prin proiectare în vederea Design a interogării. În vederea Design, se specifică datele cu care se va lucra prin adăugarea tabelelor sau interogărilor ce conţin acele date şi se completează celulele din reţeaua de proiectare. În Microsoft Access există următoarele tipuri de interogări: - Interogare de selecţie regăseşte datele din una sau mai multe tabele şi afişează rezultatele într-o foaie de date, unde se pot modifica articolele (cu anumite restricţii). De asemenea, se poate folosi o interogare de selecţie pentru a grupa articolele şi a efectua însumări, contorizări, medii aritmetice şi alte tipuri de totalizări. - Interogare cu parametru Este o interogare care la execuţie afişează propria sa casetă de dialog prin care se solicită introducerea unor informaţii suplimentare, cum ar fi criteriul pentru regăsirea articolelor sau valoarea care se inserează într-un câmp. Se poate proiecta interogarea pentru a solicita mai mult de o singură componentă a informaţiei; spre exemplu, se poate proiecta interogarea pentru a solicita două date. Apoi, Microsoft Access poate regăsi toate datele cuprinse între cele două valori. De asemenea, interogările cu parametru sunt utile şi atunci când sunt folosite ca bază pentru formulare şi rapoarte. Spre exemplu, se poate crea un raport de vânzări lunare bazat pe o interogare cu parametru (luna). Atunci când se va tipări raportul, Microsoft Access va afişa, mai întâi, o casetă de dialog în care se solicită luna pentru care se doreşte raportul. De asemenea, se poate crea un formular personalizat sau o casetă de dialog pentru parametrii interogării în loc să se folosească casetele de dialog ale interogării cu parametru. - Interogare de tip crosstab Interogarea de tip crosstab afişează valori rezumative (totaluri, contorizări şi medii aritmetice) din unul din câmpurile tabelei şi le grupează după un set de factori listaţi în jos pe latura din stânga foii de calcul şi după un alt set de factori listaţi de-a lungul părţii superioare a foii de date. - Interogare de acţiune Este o interogare care permite modificarea mai multor articole într-o singură operaţie. Există patru tipuri de interogări de acţiune: 1. Interogare de ştergere Permite ştergerea unui grup de articole din una sau mai multe tabele. Spre exemplu, se poate folosi o astfel de interogare pentru a elimina toate produsele cu stoc 0 sau acelea care nu sunt comandate. Utilizarea acestui tip de interogări, elimină întotdeauna articolele întregi, nu doar câmpurile selectate din articole. 2. Interogare de actualizare Asigură modificarea globală a unui grup de articole din una sau mai multe tabele. Spre exemplu, se pot mări preţurile de vânzare cu 10% pentru toate produsele dintr-o anumită categorie. 3. Interogare de adăugare Adaugă un grup de articole din una sau mai multe tabele la sfârşitul uneia sau a mai multor tabele. Spre exemplu, să presupunem s-au identificat câţiva noi clienţi şi baza de date cu informaţii despre aceşti clienţi. Pentru a evita tastarea tuturor informaţiilor, 24

25 acestea se pot adăuga la sfârşitul tabelei Clienţi. De asemenea, interogările de adăugare sunt utile pentru: - Adăugarea câmpurilor pe baza unui criteriu. Spre exemplu, este posibil ca la comenzile nerezolvate să se adauge numai numele şi adresa clienţilor. - Adăugarea articolelor atunci când unele câmpuri dintr-o tabelă nu există într-o altă tabelă. O interogare de actualizare va adăuga date numai în câmpurile identice şi le va ignora pe celelalte. 4. Interogare pentru creare tabele Creează o nouă tabelă din toate datele sau numai dintr-o parte a datelor, din una sau mai multe tabele. Interogările pentru crearea tabelelor se pot utiliza pentru: - Crearea unei tabele pentru a o exporta într-o altă bază de date Microsoft Access. Spre exemplu, este posibil să fie creată o tabelă ce conţine mai multe câmpuri din tabela Angajaţi şi apoi aceasta să fie exportată într-o bază de date folosită de departamentul personal. - Crearea de rapoarte care să afişeze datele începând cu o dată specificată. Spre exemplu, sa presupunem că se doreşte tipărirea unui raport pe 15 Mai 2002 care să afişeze totalul vânzărilor din primul trimestru, bazat pe datele care au fost în tabele de bază până la , 9.00 A.M. Un raport bazat pe o interogare sau instrucţiune SQL extrage cele mai recente date din tabele (până la 15 Mai 2002), în loc să extragă toate articolele având data şi timpul specificat. Pentru ca datele să fie exact cum au fost ele la 1 Aprilie 2002, 9.00 A.M., este necesar să se creeze o interogare care să regăsească articolele respective şi să le stocheze într-o nouă tabelă. Apoi această tabelă se foloseşte, în locul unei interogări, ca bază a rapoartelor. - Crearea copiei de siguranţă a unei tabele. Se poate crea o tabelă istoric care să conţină toate articolele. Spre exemplu, se poate crea o tabelă care să conţină toate vânzările efectuate, înainte de a le şterge din tabela curentă. - Creşterea performanţei formularelor şi rapoartelor bazate pe interogări cu tabele multiple sau instrucţiuni SQL. Spre exemplu, să presupunem că dorim tipărirea mai multor rapoarte ce sunt bazate pe interogări cu cinci tabele ce includ totaluri. Se poate mări viteza de execuţie dacă mai întâi se realizează o interogare care să regăsească articolele necesare şi să le memoreze într-o tabelă. Apoi, se vor baza rapoartele pe această tabelă sau se va specifica tabela într-o instrucţiune SQL ca sursă de articole pentru un formular sau raport, astfel încât să nu se reia interogarea pentru fiecare raport. Datele din tabelă vor fi blocate în timp ce se rulează interogarea de creare a tabelei. Interogare SQL este o interogare ce se creează pe baza unei instrucţiuni SQL. Există următoarele tipuri specifice de interogări SQL: 1. Interogare reuniune (union query) Acest tip de interogare combină câmpurile (coloanele) din una sau mai multe tabele sau interogări într-un singur câmp sau coloană din rezultatele interogării. Spre exemplu, dacă există şase vânzători care transmit listele de vânzarere pe luni, se pot combina aceste câmpuri într-un singur set folosind o interogare reuniune şi apoi se poate crea o interogare de creare tabelă bazată pe interogarea reuniune pentru a obţine o nouă tabelă. Interogarea de acest tip constă din instrucţiuni SQL SELECT. 2. Interogare intersecţie (pass-through query) Acest tip de interogări transmite comenzile direct la bazele de date ODBC, cum ar fi Microsoft SQL Server, folosind comenzile care sunt acceptate de către server. Spre exemplu, se poate folosi o interogare intersecţie pentru a regăsi articole şi a modifica datele. 3. Interogare de definire date (data-definition query) Acest tip de interogare creează sau alterează obiectele bazei de date, cum ar fi tabelele Microsoft Access sau Microsoft SQL Server. 25

26 4. Subinterogare (subquery) Acest tip de interogări constau dintr-o instrucţiune SQL SELECT în interiorul unei interogări de selecţie sau de acţiune. Se pot introduce aceste instrucţiuni în linia Field a reţelei de proiectare a interogării pentru a defini un nou câmp sau în linia Criteria pentru a defini criteriul pentru un câmp. Subinterogările se pot utiliza pentru: - A testa existenţa unui anumit rezultat din subinterogare (folosind cuvintele rezervate EXISTS sau NOT EXISTS). - Găsirea tuturor valorilor care sunt egale cu, mai mari ca sau mai mici decât valorile returnate de către subinterogare (folosind cuvintele rezervate ANY, ÎN sau ALL). - Crearea de subinterogări în subinterogări (subinterogări imbricate). În cele ce urmează este ilustrat modul de definire a unei interogări de selecţie pentru situaţia stocurilor de produse utilizând tabelele Produse, Stocuri. Se selectează Qeries şi apoi New, iar din caseta New Query se selectează modul Design View (vezi figura 18) şi se apasă butonul OK. Va apare ecranul din figura 19. Din caseta Show Table se selectează tabela Produse şi se apasă butonul Add, apoi se selectează tabela Stocuri şi se apasă butonul Add şi apoi se apasă butonul Close. Va apare ecranul din figura 20 pentru definirea câmpurilor interogării ilustrate în imaginea de ecran din figura 21. Pentru salvare interogare se închide fereastra Query şi se tastează numele interogării Situatia Stocurilor. Pentru vizualizarea datelor corespunzătoare interogării, se selectează interogarea şi se deschide în modul Open (rezultatul este ilustrat în figura 22. Figura 18. Creare interogare în modul Design View. 26

27 Figura 19. Selectare tabele pentru creare interogare. Figura 20. Caseta Query pentru definirea câmpurilor interogării. 27

28 Figura 21. Definirea interogării Situatia Stocurilor. Figura 22. Vizualizarea datelor corespunzătoare interogării Situatia Stocurilor 28

29 Probleme propuse Să se creeze interogările corespunzătoare situaţiei ofertelor de produse şi situaţiei vânzărilor de produse conform specificaţiilor de mai jos. Situaţia ofertelor Câmp Tabela Codf Furnizori Denf Furnizori Adresaf Furnizori Codp Produse Denp Produse Ump Oferte Pret Oferte Datao Oferte Situaţia vânzărilor Câmp Tabel a Codc Clienti Denc Clienti Adresac Clienti Codp Produse Denp Produse Ump Vanzari Cant Vanzari Pret Vanzari Se vor crea şi interogări cu parametru în care parametrul va fi, pe rând: - furnizorul; - produsul pentru situaţia ofertelor şi: - clientul; - produsul; - perioada pentru situaţia vânzărilor. 29 Valoare Cant*Pre t Datav Vanzari

30 Lucrare de laborator nr. 6. Tema: Baze de date ACCESS. Formulare. Crearea şi utilizarea formularelor. În Microsoft Access formularele se pot folosi pentru a crea: - un ecran pentru introducerea datelor în una sau mai multe tabele; - un ecran tip panou de comutatoare pentru a deschide alte formulare sau rapoarte; - o casetă de dialog care să solicite de la utilizator informaţii suplimentare necesare executării unei acţiuni. Majoritatea informaţiilor dintr-un formular provin dintr-o sursă de informaţii, dar există şi informaţii care se introduc la proiectarea machetei. Legătura dintre formular şi sursa de date se realizează prin intermediul unor obiecte grafice, numite controale. Cele mai utilizate controale sunt casetele de text, cu ajutorul cărora se pot afişa fie informaţiile dintr-o sursă de date, fie rezultatele evaluării unei expresii. Un formular poate fi creat în două moduri şi anume: - în modul Design view; - utilizând un wizard. Un wizard poate fi utilizat în modurile (figura 23, caseta New Form care apare la apăsarea butonului New din fereastra Database): Form Wizard, AutoForm: Columnar, AutoForm: Tabular, Chart Wizard, Pivot Table Wizard. Odată creat, un formular poate fi modificat şi în acest sens se deschide formularul în modul Design pentru a-l modifica aşa cum se doreşte. Pentru crearea unui singur formular simplu, pe o singură coloană, se poate utiliza opţiunea AutoForm. Pentru ca formularul să poată afişa câmpurile tabelei (interogării) selectate, trebuie adăugate controale (casete de text, casete combinate, liste etc.) în macheta acestuia. Pentru a putea adăuga controale este necesar ca pe ecran să existe caseta cu instrumente Toolbox şi fereastra List Field. Dacă aceste obiecte nu sunt afişate pe ecran, atunci va trebui ca din meniul View să se selecteze opţiunile Toolbox, pentru a afişa caseta instrumentelor Toolbox, respectiv Field List pentru a afişa lista câmpurilor. După adăugarea controalelor şi stabilirea proprietăţilor formularului, se închide formularul şi i se dă un nume. Subformulare Subformularul este un formular în interiorul altui formular. Formularul primar este denumit formular principal (main form), iar formularul din interiorul formularului este numit subformular. Combinaţia formular/subformular este referită adeseori ca formular ierarhic, formular principal/detaliu sau formular părinte/copil. Subformularele sunt eficiente în special pentru prezentarea datelor din tabele sau interogări cu relaţii 1 m (one-to-many). Spre exemplu, se poate crea un formular cu un subformular pentru a prezenta datele din tabelele Produse şi Stocuri. Datele din tabela Produse reprezintă partea 1 din relaţie, iar datele din tabela Stocuri reprezintă partea m din relaţie fiecare produs putând avea mai multe înregistrări în tabela Stocuri. Formularul principal şi subformularul din acest tip de formulare sunt înlănţuite, astfel încât subformularul afişează numai înregistrările care sunt corelate cu înregistrarea curentă din 30

31 formularul principal. Spre exemplu, atunci când formularul principal afişează produsul Tastatură, subformularul afişează numai stocurile pentru acest produs. Atunci când se foloseşte un formular cu un subformular pentru a introduce noi înregistrări, Microsoft Access salvează înregistrarea curentă din formularul principal când se intră în subformular. Aceasta asigură ca înregistrările din tabela m (mai mulţi) să aibă o înregistrare în tabela 1 (unul) cu care să se coreleze. De asemenea, acesta salvează automat fiecare înregistrare adăugată în subformular. Subformularul poate fi afişat ca o foaie de date, sau ca un formular singular sau continuu. Formularul principal poate fi afişat numai ca un formular singular. Formularul principal poate avea oricâte subformulare, dacă se plasează fiecare subformular pe formularul principal. De asemenea, se pot realiza cel mult două nivele de subformulare. Aceasta înseamnă că poate exista un subformular într-un formular principal şi un alt subformular în interiorul subformularului, de nivel 1. Spre exemplu, poate exista un formular principal care afişează clienţii, un subformular care prezintă produsele şi un alt subformular care afişează vânzările pentru acele produse şi clienţi. Una din metodele utilizate pentru crearea unui subformular în cadrul unui formular constă în efectuarea următoarelor operaţii: - se crează un formular principal şi un subformular şi se salvează fiecare separat; - se deschide formularul principal în modul Design; - se trage cu mouse-ul subformularul din fereastra Database peste formularul principal. În figurile 24,,29 sunt ilustraţi paşii parcurşi pentru crearea formularului principal Produse utilizând modul Form Wizard. Analog se procedează pentru crearea subformularului Stocuri. În figura 30 este ilustrat rezultatul tragerii subformularului Stocuri peste formularul Produse. Deschiderea formularului Produse în modul Open permite vizualizarea şi actualizarea atât a datelor din tabela Produse cât şi a datelor corespunzătoare din tabela Stocuri aşa cum este ilustrat în imaginea de ecran din figura 31. Figura 23. Fereastra Database. Modalităţi de creare a unui formular (Caseta New Form). 31

32 Figura 24. Creare formular Produse (pasul 1) Figura 25. Creare formular Produse (pasul 2) 32

33 Figura 26. Creare formular Produse (pasul 3) Figura 27. Creare formular Produse (pasul 4) 33

34 Figura 28. Creare formular Produse (pasul 5) Figura 29. Vizualizare formular Produse. 34

35 Figura 30. Depunere subformular Stocuri în formular Produse. Figura 31. Utilizare formular Produse pentru vizualizare şi actualizare date în tabelele Produse şi Stocuri. Probleme propuse Utilizând metoda prezentată mai sus, să se creeze următoarele formulare: - formularul Furnizori cu subformularul Oferte; - formularul Clienţi cu subformularul Vânzări; - formularul ProduseSOV cu subformularele Stocuri, Oferte, Vânzări. 35

36 Lucrare de laborator nr. 7 Tema: Baze de date ACCESS. Rapoarte. Crearea şi vizualizarea rapoartelor Rapoartele au în vedere prelucrarea unor date din baza de date pentru obţinerea unor situaţii ce urmează a fi tipărite sau afişate pe ecran la cererea utilizatorului. Spre deosebire de formulare care pe lângă vizualizarea datelor permite şi actualizarea acestora, rapoartele realizează interogarea şi prelucrarea datelor din baza de date nefiind posibilă modificarea datelor. Există două modalităţi de creare a rapoartelor şi anume (figura 32): - creare raport în modul Design view; - creare raport utilizând un wizard. Un wizard poate fi utilizat în modurile (figura 32, caseta New Report care apare la apăsarea butonului New din fereastra Database): - Report Wizard; - AutoReport: Columnar: - AutoReport: Tabular; - Chart Wizard; - Label Wizard. Figura 32. Fereastra Database. Modalităţi de creare a unui raport (Caseta New Report). În cele ce urmează se vor prezenta paşii de parcurs pentru realizarea unui raport în modul Report Wizard. 36

37 1. În caseta de dialog Choose the table or query se selectează tabela sau interogarea pe care se va fundamenta raportul şi se apasă butonul OK (figura 33, Situaţia Stocurilor). 2. Selectare câmpuri pentru raport din lista Available Fields în lista Selected Fields folosind butoanele > sau >>, după care se apasă butonul Next (figura 34). 3. Selectare mod (tabelă) pentru vizualizare date, după care se apasă butonul Next (figura 35). 4. Selectare nivele de grupare date în raport, după care se apasă butonul Grouping Options pentru a preciza modul de grupare, apoi se apasă butonul Next (figura 36). 5. Precizare criterii de ordonare date în raport, după care se apasă butonul Sumary Options pentru precizarea operaţiilor de efectuat asupra grupurilor de înregistrări (figura 37). 6. Precizare operaţii de efectuat asupra grupurilor de înregistrări, după care se apasă butonul OK (figura 38) şi apoi butonul Next. 7. În casetele Layout, Orientation, se selectează forma de realizare a raportului (figura 39) şi apoi se apasă butonul Next. 8. Se selectează stilul de realizare a raportului, apoi se apasă butonul Next (figura 40). 9. Precizare titlu raport, după care se apasă butonul Finish (figura 41). În figura 42 este vizualizat raportul obţinut. Pentru modificarea raportului, acesta trebuie deschis în modul Design şi apoi se execută modificările dorite. Probleme propuse După exemplul prezentat, să se creeze următoarele rapoarte utilizând modul Report Wizard: Situaţia ofertelor de produse pe produs Cod produs Denumire produs Cod furnizor Denumire furnizor Adresa furnizor Ump Pret Data ofertei... Situaţia ofertelor de produse pe furnizor Cod furnizor Denumire furnizor Adresa furnizor Cod produs Denumire produs Ump Pret Data ofertei. Situaţia vânzărilor de produse pe produs Cod produs Denumire produs Cod client Denumire client Adresa client Ump Cantitate Pret Valoare Data vânzării. Total produs xxxxxxx xxxxxx Total general xxxxxx Situaţia vânzărilor de produse pe client Cod client Denumire client Adresa client Cod produs Denumire produs Ump Cantitate Pret Valoare Data vânzării Total client xxxxxx.. Total general xxxxxx 37

38 Figura 33. Modul Report Wizard Selectare tabelă sau interogare pentru raport. Figura 34. Modul Report Wizard Selectare câmpuri pentru raport. 38

39 Figura 35. Modul Report Wizard. Selectare mod (tabelă) după care vor fi vizualizate datele. Figura 36. Modul Report Wizard. Selectare nivele de grupare date în raport. 39

40 Figura 37. Modul Report Wizard. Precizare criterii de ordonare date în raport. Figura 38. Modul Report Wizard. Precizare operaţii de efectuat asupra grupurilor de înregistrări. 40

41 Figura 39. Modul Report Wizard. Precizare format de realizare raport. Figura 40. Modul Report Wizard. Selectare stil de realizare raport. 41

42 Figura 41. Modul Report Wizard. Precizare titlu raport. Figura 42. Modul Report Wizard. Vizualizare raport Situaţia stocurilor de produse. 42

43 Lucrare de laborator nr. 8 Tema: Baze de date FoxPro. Creare tabele, introducere şi editare date în tabele. FoxPro este un produs pentru crearea şi gestionarea bazelor de date relaţionale de complexitate medie, elaborat iniţial de firma Fox Software şi preluat ulterior şi dezvoltat de către compania Microsoft începând cu versiunea 2.6 sub Windows ( ) şi cotinuând cu versiuni Visual FoxPro: 3.0, 5.0, 6.0, 7.0, 8.0, 9.0, versiunea 9.0 fiind disponibilă începând din anul Programul Visual FoxPro este un instrument puternic, interactiv, de gestionare a datelor, mediul Visual FoxPro permiţând crearea aplicaţiilor, utilizarea tehnicilor de programare orientată spre obiecte şi condusă de evenimente, facilităţi ce sporesc la maximum productivitatea în programare. Deşi Visual FoxPro este compatibil cu programarea procedurală standard, noile extensii ale limbajului oferă puterea şi flexibilitatea programării orientate spre obiect. Spre deosebire de programarea procedurală în care un program constă dintr-o secvenţă de instrucţiuni, proiectarea şi programarea orientate spre obiect reprezintă o abordare nouă în care efortul de programare constă în proiectarea obiectelor componente de sine stătătoare ale unei aplicaţii. Obiectele în mediul Visual FoxPro sunt formularele şi controalele care pot fi gestionate prin intermediul proprietăţilor, evenimentelor şi metodelor şi care vor fi incluse în aplicaţii. Extensiile orientate spre obiect ale limbajului Visual FoxPro permit crearea şi întreţinerea cu uşurinţă a bibliotecilor de cod reutilizabil. Programarea orientată spre obiect este o modalitate de a împacheta codul astfel încât să poată fi refolosit şi întreţinut mai uşor. Primul nivel de împachetare se numeşte clasă. O aplicaţie este construită din clase şi obiecte. Clasele descriu proprietăţile şi comportamentul obiectelor care se mai numesc şi instanţe ale clasei. Un obiect are anumite proprietăţi, sau atribute. De exemplu, un automobil are o anumită denumire şi o anumită culoare. Aceste proprietăţi pot fi stabilite în faza de proiectare sau de execuţie. O tabelă Visual FoxPro poate exista în una din următoarele două situaţii: ca tabelă liberă (externă), adică sub formă de fişier.dbf neasociat vreunei baze de date, sau ca tabelă dintr-o bază de date, adică sub formă de fişier.dbf asociat unei baze de date. Tabelele asociate unei baze de date au unele proprietăţi specifice, care nu există în cadrul tabelelor externe, cum ar fi regulile la nivel de câmp şi de înregistrare, declanşatoarele şi relaţiile persistente. La crearea bazei de date, se reunesc tabelele într-o singură colecţie (fişier cu extensia.dbc) şi se creează dicţionarul de date. Produsul FoxPro dispune de un limbaj de programare propriu denumit FoxPro care conţine peste 200 comenzi care pot fi executate individual din fereastra de comenzi sau din programe, pentru crearea, întreţinerea şi interogarea bazelor de date, precum şi o multitudine de funcţii matematice, de conversie, de prelucrări statistice, etc., care pot fi apelate în cadrul instrucţiunilor limbajului. În modelarea unei părţi a lumii reale se identifică tipurile de entităţi (mulţimile de obiecte similare având aceleaşi proprietăţi) şi legăturile (relaţiile) între entităţi. Fiecărui tip de entitate îi corespunde un tabel în care fiecare coloană corespunde unei proprietăţi ce defineşte tipul de entitate şi fiecare rând reprezintă o entitate aparţinând tipului respectiv de entitate. Capul de tabel conţine denumirea proprietăţilor ce definesc tipul de entitate. Corespunzător acestui tip de entitate, în FoxPro se va crea o tabelă care va conţine: - o înregistrare antet corespunzătoare capului de tabel (structura tabelei); - câte o înregistrare pentru fiecare rând al tabelului (în FoxPro pentru WINDOWS lungimea maximă a unei înregistrări poate fi de caractere). 43

44 Coloanele tabelei create se vor numi câmpuri, iar rândurile se vor numi înregistrări. Corespunzător tabelei se va crea un fişier care va avea un nume precizat de utilizator (Ex: Produse) şi extensia.dbf. Înregistrarea antet corespunzătoare capului de tabel va conţine denumirea fiecărei coloane (câmp), tipul datelor din coloană, lăţimea în număr de caractere şi eventual numărul de zecimale pentru câmpurile numerice. O bază de date FoxPro este un ansamblu de astfel de tabele prin care se descriu entităţile şi legăturile dintre entităţi ce se definesc pentru rezolvarea unei probleme date. Având în vedere faptul că la deschiderea unei sesiuni de lucru FoxPro directorul curent este directorul în care este instalat produsul FoxPro, prima operaţiune care trebuie efectuată este poziţionarea în directorul de lucru (directorul în care se va crea baza de date), operaţiune care se realizează cu comanda: SET DEFAULT TO <cale> Tipuri de date recunoscute în FoxPro În FoxPro sunt recunoscute următoarele tipuri de date: - tipul caracter (C) = şir format din 0 până la 254 caractere ASCII cu excepţia caracterelor 0 binar (NULL), Ctrl/z (cod 26); - tipul numeric (N) = succesiune de cifre zecimale, eventual precedată de semnul + sau şi putând conţine marca zecimală (caracterul. ); - tipul flotant (F) = date numerice reprezentate în virgulă flotantă, utilizate pentru calcule matematice de precizie; - tipul data calendaristică (D) = date calendaristice reprezentate în memorie ca numere, iar formatul extern implicit este ll/zz/aa (ll=nr.lună, zz=nr.zi din lună, aa=ultimele două cifre ale anului); - tipul logic (L) = date logice reprezentate pe un octet ce pot avea una din valorile: T adevărat (True) sau Y (Yes) sau t sau y, F fals (False) sau N (No) sau f sau n; - tipul memo (M) = poate conţine un şir de octeţi de lungime maximă două miliarde de caractere. Numai câmpurile tabelelor pot fi de tip memo (nu şi variabilele sau constantele) şi astfel de câmpuri conţin doar adresa pe 10 octeţi către un fişier cu extensia.fpt care conţine informaţia propriuzisă pentru fiecare înregistrare din fişierul.dbf pe lungime variabilă (până la max. două miliarde de caractere) - tipul general (G) = utilizat pentru susţinerea tehnologiei OLE (Object Linking and Empeding) legarea şi înglobarea obiectelor (texte, desene, imagini, sunete, foi de calcul tabelar etc.). Stocarea datelor se face tot în fişierul.fpt la fel ca în cazul câmpurilor memo. Pentru a prelua un obiect OLE dintr-o aplicaţie externă în baza de date se foloseşte opţiunea Copy din meniul Edit al programului Windows Explorer pentru a copia obiectul în memoria temporară Clipboard, apoi cu opţiunea Paste sau Paste Special din meniul Edit al programului FoxPro se inserează sau se face referinţa la obiectul din Clipboard în câmpul General din baza de date. 44

45 Crearea unei tabele Pentru crearea unei tabele se va utiliza comanda CREATE <nume tabelă> sau din meniul File se alege opţiunea New şi apoi Table. În ambele situaţii sistemul FoxPro va afişa un ecran pentru definirea structurii tabelei (fereastra Table Designer pentru definirea tabelei ca în figura 43) în care utilizatorul va introduce pentru fiecare câmp numele, tipul, dimensiunea (lăţimea) eventual numărul de zecimale pentru câmpurile numerice. În figura 44 este redată definirea tabelei Produse. Figura 43. Fereastra Table Designer pentru definirea structurii unei tabele. Figura 44. Definirea structurii tabelei Produse. 45

46 După definirea tuturor câmpurilor tabelei se apasă butonul OK, iar la mesajul Input data records now se va apăsa butonul Yes dacă se continuă cu operaţia de inserare date în tabelă, sau butonol No în caz contrar. La apăsarea butonului Yes se va afişa un formular de preluare date în mod coloană (Change, figura 45.1), care poate fi transformat în mod tabel (Browse, figura 45.2) selectând opţiunea Browse din meniul Browse. Figura 44. Definirea structurii tabelei Produse. Figura Formular de preluare date în modul Change în tabela Produse. Figura Formular de preluare date în modul Browse în tabela Produse. Problemă propusă Să se creeze tabelele bazei de date FurnizoriClienţi şi să se preia date în fiecare tabelă conform specificaţiilor prezentate în lucrările de laborator pentru baze de date Access. Inserare, modificare şi ştergere date într-o tabelă Pentru introducerea datelor în tabelă se poate utiliza una din comenzile:append, EDIT, BROWSE. Fiecare înregistrare de date din tabelă, pe lângă datele propriu-zise mai conţine încă un octet numit de invalidare logică care permite marcarea înregistrărilor pentru ştergere (conţine valoarea * pentru înregistrările marcate pentru ştergere). De asemenea fiecare înregistrare primeşte un număr curent numit indicator de înregistrare începând de la 1 în ordinea introducerii înregistrărilor. Fiecare nouă înregistrare este adăugată la sfârşitul fişierului. Ordinea introducerii înregistrărilor în tabelă este numită ordine naturală şi este ordinea implicită în care vor fi parcurse înregistrările tabelei. Pentru modificarea datelor introduse în tabelă pot fi folosite comenzile EDIT, BROWSE. Ştergerea de înregistrări dintr-o tabelă se realizează în două etape: - ştergerea logică = marcarea pentru ştergere (completarea octetului de invalidare logică pentru ştergere) - ştergerea fizică = eliminarea înregistrării şi eliberarea spaţiului ocupat. 46

47 Ştergerea logică se realizează cu comanda DELETE. Dacă SET DELETED este ON atunci înregistrările marcate pentru ştergere nu vor fi văzute de alte comenzi FoxPro (Ex: LIST, DISPLAY, BROWSE etc.). Anularea ştergerii logice se realizează cu comanda RECALL. Ştergerea fizică se realizează cu comanda PACK. Ştergerea fizică realizează rescrierea fişierelor corepunzătoare tabelei mai puţin înregistrările marcate pentru ştergere. Ştergerea fizică a tuturor înregistrărilor se poate realiza fie cu comanda ZAP, fie cu comenzile DELETE ALL, PACK. Structura unei tabele poate fi modificată (modificare câmpuri existente, adăugare de noi câmpuri, ştergere câmpuri existente) utilizând comanda MODIFY STRUCTURE. Structura unei tabele poate fi vizualizată utilizând comanda LIST STRUCTURE sau DISPLAY STRUCTURE. Afişarea înregistrărilor unei tabele poate fi realizată cu una din comenzile LIST, DISPLAY ALL. Oricare din operaţiile de mai sus asupra unei tabele poate fi efectuată numai dacă în prealabil tabela respectivă a fost deschisă. Deschiderea (activarea) unei tabele se realizează cu comanda: USE < nume tabelă > Deschiderea unei tabele presupune utilizarea unei zone de memorie în care sunt memorate informaţii privind tabela respectivă, zonă numită zona de lucru. FoxPro 2.6 sub WINDOWS alocă 225 astfel de zone de lucru numerotate de la 1 la 225 ceea ce înseamnă că pot fi deschise la un moment dat maximum 225 tabele. Precizarea zonei de lucru în care este deschisă o tabelă se poate face : - fie cu comanda USE astfel: USE <nume tabelă> IN <nr.zonă> - fie cu comanda SELECT astfel : SELECT <ne.zonă> <alias> USE <nume tabelă> Zona de lucru implicită este zona 1. Zona de lucru curentă este ultima zonă selectată cu comanda SELECT sau zona 1 în lipsa unei comenzi SELECT <nr.zonă>. Fiecare zonă de lucru utilizată poate primi un alias specificat în comanda USE, iar în lipsa specificării, aliasul zonei este numele tabelei deschise în zona de lucru respectivă. Astfel se pot referi câmpurile unei tabele folosind aliasul zonei de lucru în care a fost deschisă tabela respectivă. Exemplu: m.codp = 0 STORE SPACE(20) TO m.denp USE Produse IN 3 m.codp = Produse.codp m.denp = Produse.denp În secvenţa de instrucţiuni de mai sus Produse.codp, Produse.denp referă câmpurile codp, denp din tabela Produse deschisă în zona de lucru 3 care nu este zona de lucru curentă. După terminarea lucrului cu baza de date aceasta trebuie închisă utilizând una din comenzile USE, CLOSE. Utilizare meniu Help Pentru documentare privind produsul FoxPro se poate utiliza meniul Help ca în exemplul ilustrat în imaginile de ecran din figura 46 pentru versiunea 2.6 sub Windows. 47

48 Figura 46. Utilizare meniu Help. 48

49 Lucrare de laborator nr. 9 Tema: Baze de date FoxPro. Elementele limbajului FoxPro. Produsul FoxPro dispune de un limbaj de programare denumit FoxPro care conţine aproximativ 200 comenzi care pot fi executate individual din fereastra de comenzi sau din programe, pentru crearea, întreţinerea şi interogarea bazelor de date. Elementele limbajului :identificatori, constante, variabile scalare (câmpuri, variabile de memorie), masive, operatori, funcţii, expresii, instrucţiuni, ferestre, meniuri, proceduri, programe. Identificatori - succesiune de caractere (doar primele 10 au semnificaţie) alfabetice, cifre şi liniuţa de subliniere _, care poate începe cu o literă sau _. Identificatorii pot reprezenta: - cuvinte cheie ale limbajului (ex. CREATE, FOR, IF, etc.); - cuvinte definite de utilizator (ex. Produse, Codp, Denp, etc.). Este indicat a se evita utilizarea de cuvinte cheie pentru cuvinte definite de utilizator (pentru a nu crea confuzii şi pentru înţelegerea semnificaţiei cuvintelor utilizate). Cuvintele cheie ale limbajului pot fi trunchiate la minim primele 4 caractere ca de exemplu: CREATE, CREA, CREAT au aceeaşi semnificaţie. Pot fi utilizate litere majuscule, minuscule sau orice combinaţie de majuscule şi minuscule. Constante: - Constanta caracter succesiune de caractere încadrată între sau sau [ ] Exemplu: Limbajul FoxPro la dispoziţia dvs. (caracterul s-a utilizat pentru a indica începutul şi sfârşitul constantei iar caracterele fac parte din constantă). - Constante dată calendaristică o dată calendaristică încadrată între acolade Exemplu: {03/08/02} - Constante logice reprezintă valorile logice adevărat, fals după cum urmează:.t. sau.t. sau.y. sau.y. pentru adevărat (True, true, Yes, yes).f. sau.f. sau.n. sau.n. pentru fals (False, false, No, no) - Constante numerice - succesiuni de cifre zecimale precedate eventual de semnul + sau şi putând conţine marca zecimală.. (exemple: 125, -12.5) Poate fi utilizată şi notaţia ştiinţifică (exemple: 5.878E+12 reprezintă 5,878 înmulţit cu 10 la puterea 12, 1.6E-12 reprezintă 1.6 înmulţit cu 10 la puterea 12). - Variabile - sunt identificatori pentru variabile de memorie sau câmpuri într-o tabelă.dbf. Pentru a preciza că variabila este o variabilă de memorie sau un câmp într-o tabelă se poate folosi operatorul. sau -> şi aliasul astfel: M.Nume sau M->Nume specifică variabila de memorie Nume Persoane.Nume sau Persoane->Nume specifică câmpul Nume din tabela Persoane. Dacă nu se face precizarea ca mai sus şi tabela Persoane este deschisă în zona de lucru curentă atunci Nume referă câmpul Nume şi nu variabila de memorie Nume. O variabilă de memorie poate fi creată prin operaţia de atribuire astfel: m.nume = Ionescu sau folosind comanda STORE astfel STORE Ionescu TO m.nume. Tipul unei variabile de memorie este dat de valoarea memorată în acea variabilă. 49

50 La momente diferite de timp aceeaşi variabilă de memorie poate avea tipuri diferite funcţie de valoarea memorată în variabilă la fiecare moment. O clasă specială de variabile o reprezintă variabilele de sistem care sunt utilizate pentru a păstra anumite informaţii ca de exemplu variabila sistem _PCOPIES păstrează numărul de copii de tipărit pentru următorul raport. Identificatorii acestor variabile încep cu caracterul liniuţa de subliniere _. Masive sunt structuri de date care permit memorarea mai multor valori într-o zonă de memorie căreia i se atribuie un nume, valorile respective putând fi tratate atât ca un tot cât şi ca elemente distincte. Masivele sunt organizate sub forma unui tablou de valori unidimensional sau bidimensional, deci sub formă de vectori sau de matrice. Declararea unui masiv se realizează cu una din comenzile DIMENSION sau DECLARE ca în exemplele de mai jos: DIMENSION Vec(10) declară un vector numit Vec de 10 elemente Vec(1),Vec(2),,Vec(10). DIMENSION alfa(2,4) declară matricea alfa cu 2 linii şi 4 coloane având elementele alfa(1,1) alfa(1,2) alfa(1,3) alfa(1,4) alfa(2,1) alfa(2,2) alfa(2,3) alfa(2,4). DECLARE vector(8),matrice(4,3) declară vectorul vector de 8 elemente şi matricea matrice cu 4 linii şi 3 coloane. Elementele unui masiv pot fi de acelaşi tip sau de tipuri diferite. După declararea unui masiv toate elementele sale vor fi de tip logic având valoarea.f. Ulterior fiecare element al masivului poate primi orice valoare prin instrucţiunea de atribuire =, sau STORE. Operatori precizează acţiunile ce trebuie efectuate asupra datelor (operanzilor). - Operatori aritmetici: - (unar) specifică un număr negativ + (unar) specifică un număr pozitiv, este implicit + adunare - scădere * înmulţire / împărţire ** ridicare la putere % modulo - restul împărţirii a două expresii (ex. 42%10 rezultă 2) ( ) grupare operaţii - Operatori de comparare: = egal == egalitate exactă (numai pentru tipul caracter) > mai mare < mai mic >= mai mare sau egal <= mai mic sau egal <> diferit # diferit!= diferit $ este cuprins (numai pentru tipurile caracter şi memo (ex. Dacă A= Cimp caracter şi memo atunci comanda? caracter $ A dă rezultatul.t. deoarece caracter este conţinut în A). - Operatori logici: OR sau AND şi 50

51 NOT negaţie () grupare operaţii pt. schimbare prioritate - Operatori asupra şirurilor de caractere: + concatenare şiruri (ex. ABC + DE rezultă ABCDE ) concatenare şiruri cu mutarea spaţiilor libere de la sfârşitul primului şir la sfârşitul şirului rezultat (ex. ABC - DE rezultă ABCDE Pentru toate tipurile de operatori ordinea de prioritate (precedenţa) este cea convenţională şi poate fi schimbată folosind parantezele ( ). Funcţii. Sistemul FoxPro dispune de o gamă variată de funcţii (peste 200) reprezentând: - Funcţii matematice (SIN, COS, TAN, ASIN, ACOS, ATAN, SQRT, etc.) - Funcţii de conversie date (conversia unui tip de dată în alt tip de dată (DTOC, DTOS, CTOD, VAL, STR, etc.) - Funcţii pentru şirurile de caractere (LTRIM, RTRIM, ALLTRIM, LOWWER, UPPER, SUBSTR, etc.) - Funcţii pentru date calendaristice (CTOD, DATE, YEAR, etc.) - Funcţii pentru fişiere.dbf (DBF, DELETED, EOF, BOF, RECCOUNT, RECNO, etc.) - Funcţii pentru câmpuri memo (MEMLINES, MLINE, etc.) - Funcţii pentru meniuri (PAD, BAR, PROMPT, etc.) - Funcţii pentru operaţii de intrare/ieşire (LASTKEY, COL, ROW, PRINTSTATUS) - Funcţii de intrare/ieşire de nivel inferior (FCREATE, FOPEN, FCLOSE, FREAD, FWRITE, FGETS, FPUTS, etc.) - Alte funcţii (FILE, SYS, etc.) Expresii sunt construcţii realizate folosind elementele limbajului (constante, identificatori, operatori, variabile, masive, funcţii) şi utilizate în cadrul instrucţiunilor limbajului. O caracteristică importantă a expresiilor este tipul, care este dat de tipul elementelor utilizate în cadrul expresiilor. Astfel tipul unei expresii poate fi: Numeric <expn>; Caracter <expc>; Logic <expl>; Dată calendaristică <expd>. În cadrul unei expresii toate elementele trebuie să fie de acelaşi tip. Pentru realizarea acestei cerinţe se pot folosi funcţiile de conversie de tip. Dacă într-o expresie tipurile operanzilor nu sunt compatibile între ele sau cu operatorii utilizaţi, atunci va apare eroarea: Data type mismatch Instrucţiuni O instrucţiune (comandă) FoxPro este o construcţie care începe cu un verb (cuvânt cheie care precizează o anumită acţiune) şi care mai poate conţine o serie de clauze care specifică condiţiile în care se va executa comanda respectivă. O instrucţiune poate fi scrisă pe una sau mai multe linii, continuarea instrucţiunii pe linia următoare fiind precizată prin caracterul ;. Fac excepţie instrucţiunile pentru controlul execuţiei programului (instrucţiunile de programare structurată) şi anume: IF ELSE ENDIF DO CASE ENDCASE DO WHILE ENDDO FOR ENDFOR care conţin câte un singur cuvânt cheie pe o linie şi nu pot fi executate din fereastra de comenzi FoxPro ci numai din programe. Pe aceeaşi linie nu poate fi scrisă decât o singură comandă FoxPro. 51

52 Liniile care încep cu caracterul * sunt considerate linii de comentarii şi deci nu sunt interpretate de compilator. O linie instrucţiune poate conţine în continuare un comentariu precedat de caracterele &&. Exemple de instrucţiuni: BROWSE FIELDS Codp,Denp (Permite editarea în mod Browse doar a câmpurilor Codp,Denp ale tabelei Produse descrise anterior.) DEFINE WINDOW f1 FROM 1,1 TO 10,50; TITLE Fereastra f1 ; COLOR SCHEME 3 (Defineşte fereastra f1 din linia 1 coloana 1 până în linia 10 coloana 50, având titlul Fereastra f1 şi utilizând schema de culori 3) IF sw = 1 SELECT 1 ELSE SELECT 2 ENDIF (dacă variabila de memorie sw are valoarea 1 selectează zona de lucru 1, altfel selectează zona de lucru 2) Observaţii: - orice cuvânt cheie FoxPro poate fi trunchiat la minim primele 4 caractere ale cuvântului. (Ex. DEFINE este acelaşi lucru cu DEFI, DEFIN, DEFINE, WINDOW este acelaşi lucru cu WIND, WINDO, WINDOW); - orice instrucţiune FoxPro poate fi executată fie din fereastra de comenzi FoxPro, fie dintrun program, cu excepţia instrucţiunilor de control al execuţiei programelor (IF, DO CASE, DO WHILE, FOR) care nu pot fi executate din fereastra de comenzi, ci doar din programe sau proceduri. Proceduri, programe în FoxPro Proceduri O procedură FoxPro este o secvenţă de instrucţiuni care începe cu instrucţiunea PROCEDURE <nume procedură> şi se termină cu instrucţiunea RETURN. Dacă instrucţiunea RETURN lipseşte atunci următorul cuvânt PROCEDURE determină sfârşitul procedurii anterioare. O procedură este lansată în execuţie cu comanda DO <nume procedură>. O procedură poate face parte din fişierul.prg din care este apelată, poate fi ea însăşi un fişier.prg distinct, sau poate face parte dintr-o bibliotecă de proceduri (un fişier.prg care conţine una sau mai multe proceduri) caz în care înainte de apelarea procedurii, biblioteca care o conţine trebuie deschisă cu comanda SET PROCEDURE TO <nume bibliotecă>, unde <nume bibliotecă> este numele fişierului.prg ce reprezintă biblioteca de proceduri. Pot fi utilizate şi proceduri cu parametri, caz în care prima instrucţiune a procedurii este instrucţiunea PARAMETERS <lista parametri formali>, iar apelarea procedurii se realizează cu comanda DO <nume procedură> WITH <lista parametri actuali>. Programe UN program FoxPro este o secvenţă de instrucţiuni conţinută într-un acelaşi fişier cu extensia.prg. Pentru editarea unui program se poate folosi fie un editor extern (care trebuie 52

53 specificat în fişierul CONFIG.FPW), fie editorul produsului FoxPro care se lansează cu comanda MODIFY COMMAND <nume program>. Un program FoxPro poate fi construit ca o ierarhie de proceduri astfel: main P1 P2 P21 Pn P22 P2k P2k1 P2k2 P2kr. Programul FoxPro corespunzător va fi de forma: PROCEDURE < main>... DO P1... DO P2... DO Pn... RETURN PROCEDURE P1... RETURN PROCEDURE P2... DO P21... DO P22... DO P2k... RETURN... PROCEDURE Pn... RETURN PROCEDURE P21 &&(opţional) 53

54 ... RETURN PROCEDURE P22... RETURN... PROCEDURE P2k... DO P2k1... DO P2k2... DO P2kr... RETURN PROCEDURE P2k1... RETURN PROCEDURE P2k2... RETURN... PROCEDURE P2kr... RETURN... Pentru a putea fi executat, un program FoxPro va trebui mai întâi compilat rezultând astfel un fişier cu extensia.fxp. Lansarea în execuţie a unui program se realizează cu comanda DO <nume program> La lansarea în execuţie, dacă în programul sursă au fost efectuate modificări cu editorul MODIFY COMMAND sau cu un editor specificat în fişierul CONFIG.FPW, obţinerea fişierului obiect.fxp se realizează automat şi apoi se execută programul. Ferestre şi meniuri utilizator Ferestre Produsul FoxPro permite lucrul cu ferestre definite de utilizator. O fereastră este o zonă dreptunghiulară de ecran definită fie prin două puncte (colţul din stânga sus şi colţul din dreapta jos), fie printr-un punct (colţul din stânga sus) şi înălţimea (nr. de rânduri) şi lăţimea ferestrei (nr. de coloane). Un punct este definit de coordonatele sale reprezentând numărul de rând şi numărul de coloană. Pentru a putea fi folosită, o fereastră utilizator trebuie mai întâi definită, operaţie care se realizează cu comanda DEFINE WINDOW. O fereastră utilizator poate fi definită în interiorul unei ferestre părinte, care poate fi: fie fereastra principală FoxPro, fie o altă fereastră utilizator. Coordonatele punctelor ce definesc fereastra în cazul definirii prin două puncte (colţul din stânga sus şi colţul din dreapta jos) sunt funcţie de dimensiunea fontului ferestrei părinte. Se pot defini ferestre utilizator care sunt mai mari decât ecranul. Exemple. DEFINE WINDOW f1 FROM 4,4 TO 15,45 54

55 DEFINE WINDOW f1 AT 4,4 SIZE 10,40 Cele două instrucţiuni sunt echivalente şi definesc fereastra f1 începând din colţul din stânga sus precizat de punctul dat de rândul 4 coloana 4 şi având 10 rânduri şi 40 coloane. Dacă presupunem că fontul ferestrei principale FoxPro nu este stilul Roman de 24 puncte atunci comenzile de mai jos definesc ferestre de dimensiuni diferite: DEFINE WINDOW f1 FROM 4,4 TO 15,45 FONT Roman,24 DEFINE WINDOW f1 AT 4,4 SIZE 10,40 FONT Roman,24 Pentru prima comandă coordonatele punctelor ce definesc fereastra se bazează pe fontul ferestrei principale FoxPro, iar în a doua comandă, dimensiunile ferestrei se bazează pe fontul precizat în comandă ( Roman de 24 de puncte). Pentru ferestrele definite pot fi realizate următoarele operaţii: - Activare ferestre cu comanda ACTIVATE WINDOW (după activarea unei ferestre, aceasta rămâne pe ecran până la dezactivarea ei şi toate informaţiile de ieşire pe ecran vor fi dirijate către această fereastră). - Dezactivare ferestre cu comanda DEACTIVATE WINDOW (o fereastră dezactivată este ştearsă de pe ecran, însă rămâne în continuare în memorie). - Ascunde ferestre cu comanda HIDE WINDOW (o fereastră ascunsă este ştearsă de pe ecran, rămânând ân continuare în memorie, însă informaţiile trimise spre ecran sunt afişate în continuare în acea fereastră). - Afişare ferestre cu comanda SHOW WINDOW (fereastra ascunsă cu comanda HIDE va fi afişată pe ecran). - Ştergere ferestre cu comanda RELEASE WINDOW sau CLEAR WINDOW (dezactivează ferestrele precizate şi le elimină din memorie). - Salvare ferestre cu comanda SAVE WINDOW (salvează ferestrele specificate într-un fişier pe disc sau într-un câmp memo) - Recuperare ferestre cu comanda RESTORE WINDOW (ferestrele menţionate sunt aduse în memorie de pe disc sau din câmpul memo). Meniuri Meniurile sunt o categorie importantă de obiecte pentru realizarea interfeţei utilizator în cadrul aplicaţiilor FoxPro. Produsul FoxPro, alături de meniurile sistem, oferă posibilitatea definirii şi folosirii meniurilor utilizator şi anume: meniuri orizontale şi meniuri verticale. Meniuri orizontale (bara de meniuri) conţine un număr de opţiuni numite pad-uri aşezate de regulă pe acelaşi rând. Crearea şi utilizarea unui meniu presupune parcurgerea următoarelor operaţii: - definire meniu cu comanda DEFINE MENU <nume meniu>; - definire opţiuni cu comanda DEFINE PAD; - precizare acţiune de executat la selecţia unei opţiuni cu una din comenzile: ON SELECTION PAD <pad> OF <nume meniu> DO <nume procedură>; ON PAD <pad> OF <nume meniu> ACTIVATE POPUP <p> MENU<m>; - activare meniu cu comanda ACTIVATE MENU; - ascundere meniu cu comanda HIDE MENU; - afişare meniu cu comanda SHOW MENU; - dezactivare meniu cu comanda DEACTIVATE MENU. La dezactivarea unui meniu, controlul programului este dat instrucţiunii care urmează celeia care a activat meniul respectiv. 55

56 Exemplu. Să se definească şi să se utilizeze un meniu orizontal pentru efectuarea operaţiilor de adăugare, ştergere, editare (actualizare) date în tabela Produse astfel: Adaugare Stergere Actualizare Sfirsit CLEAR CLOSE ALL DEFINE MENU Mo1 DEFINE PAD P1 OF Mo1 PROMPT \<Adaugare DEFINE PAD P2 OF Mo1 PROMPT \<Stergere DEFINE PAD P3 OF Mo1 PROMPT Actuali\<Zare DEFINE PAD P4 OF Mo1 PROMPT S\<Firsit ON SELECTION PAD P1 OF Mo1 DO PA ON SELECTION PAD P2 OF Mo1 DO PS ON SELECTION PAD P3 OF Mo1 DO PZ ON SELECTION PAD P4 OF Mo1 DO PF USE Produse ACTIVATE MENU Mo1 PROCEDURE PA APPEND RETURN PROCEDURE PS DELETE ALL FOR <conditie> RETURN PROCEDURE PZ BROWSE NOAPPEND NODELETE RETURN PROCEDURE PF PACK USE DEACTIVATE MENU RETURN Meniuri verticale (obiecte popup) Un meniu vertical sau popup este o casetă dreptunghiulară care conţine un număr de opţiuni (bare de selecţie) care pot fi definite fiecare separat, sau pot reprezenta fişiere din directorul curent, sau valorile unei expresii definite folosind câmpuri ale unei tabele, sau denumirile câmpurilor unei tabele. Crearea şi utilizarea unui meniu popup necesită parcurgerea următoarelor operaţii: - definire meniu cu comanda DEFINE POPUP; - definire opţiuni cu comanda DEFINE BAR în cazul în care opţiunile sunt definite fiecare separate; - precizare acţiune de executat la selecţia unei opţiuni cu una din comenzile: ON SELECTION POPUP <nume popup> DO <nume procedură>; 56

57 ON SELECTION BAR OF <nume popup> DO <nume procedură>; ON BAR <expn> OF <nume popup> ACTIVATE MENU <m> POPUP <P>; - activare meniu cu comanda ACTIVATE POPUP <nume popup>; - ascundere meniu cu comanda HIDE POPUP; - afişare meniu cu comanda SHOW POPUP; - dezactivare meniu cu comanda DEACTIVATE POPUP. La dezactivarea unui meniu, controlul programului este dat instrucţiunii care urmează celeia care a activat meniul respectiv. Exemplul 1 Se defineşte şi utilizează un meniu vertical pentru adăugare, ştergere, actualizare, înregistrări în tabela Produse cu opţiunile: Adaugare, Stergere, Actualizare, Sfirsit: CLEAR CLOSE ALL USE Produse DEFINE POPUP Mv1 FROM 5,3 TITLE Tabela Produse DEFINE BAR 1 OF Mv1 PROMPT \<Adaugare inregistrari DEFINE BAR 2 OF Mv1 PROMPT \<Stergere inregistrari DEFINE BAR 3 OF Mv1 PROMPT Actuali\<Zare inregistrari DEFINE BAR 4 OF Mv1 PROMPT S\<Firsit program ON SELECTION POPUP Mv1 DO Pp ACTIVATE POPUP Mv1 PROCEDURE Pp DO CASE CASE BAR() = 1 DO PA CASE BAR() = 2 DO PS CASE BAR() = 3 DO PZ CASE BAR() = 4 DO PF ENDCASE PROCEDURE PA APPEND RETURN PROCEDURE PS DELETE ALL FOR <conditie> RETURN PROCEDURE PZ BROWSE NOAPPEND NODELETE RETURN PROCEDURE PF PACK USE DEACTIVATE POPUP RETURN 57

58 Exemplul 2 Se defineşte şi utilizează un meniu vertical în care opţiunile sunt valorile câmpurilor Codp, Denp din tabela Produse, iar la selecţia unei opţiuni se afişează înregistrările corespunzătoare din tabela Stocuri. Dezactivarea meniului se va realiza la apăsarea tastei Escape. CLEAR CLOSE ALL DEFINE POPUP Mv2 FROM 5,10 PROMPT FIELD Codp + + Denp; TITLE Lista inregistrarilor din tabela Produse COLOR SCHEME 5 ON SELECTION POPUP Mv2 DO afis_stoc USE Produse In 3 Use Stocuri IN 4 SELECT 3 ACTIVATE POPUP Mv2 CLOSE ALL PROCEDURE afis_stoc SELECT 4 BROWSE FOR Produse.Codp = Stocuri.Codp SELECT 3 RETURN Exemplul 3 Se defineşte şi utilizează un meniu vertical în care opţiunile sunt toate fişierele.dbf din directorul curent. La selecţia unei opţiuni se afişează toate înregistrările din tabela respectivă. CLEAR CLOSE ALL DEFINE POPUP Mv2 FROM 5,10 PROMPT FILES LIKE *.dbf; TITLE Lista Tabele COLOR rb+/bg,gr+/r,gr+/g,w+/n ON selection POPUP Mv2 DO afis_date ACTIVATE POPUP Mv2 USE PROCEDURE afis_date m.fis= m.fis=prompt() USE (m.fis) LIST Wait Apasati o tasta CLEAR DEACTIVATE POPUP RETURN Problemă propusă Exportaţi tabelele bazei de date FurnizoriClienţi din Access în FoxPro. Testaţi programele prezentate în cadrul lucrării de laborator. Similar exemplelor de programe prezentate pentru tabelele Produse, Stocuri, scrieţi şi testaţi programele pentru tabelele Furnizor, Oferte şi Clienţi, Vanzari. 58

59 Lucrare de laborator nr. 10 Tema: Baze de date FoxPro. Clase de instrucţiuni ale limbajului FoxPro. Instrucţiuni de programare structurată Pentru rezolvarea unor probleme de complexitate mare sunt necesare instrucţiuni care să schimbe ordinea de execuţie secvenţială a comenzilor în cadrul unui program. Limbajul FoxPro dispune de instrucţiuni pentru realizarea de ramificaţii (execuţia condiţionată a unor secvenţe de instrucţiuni) şi bucle (iteraţii, cicluri execuţia repetată a unei secvenţe de instrucţiuni) care permit realizarea de programe structurate, fiind din acest motiv numite şi instrucţiuni de programare structurată. Ramificaţiile sunt realizate cu ajutorul instrucţiunilor IF ELSE ENDIF şi DO CASE ENDCASE. Instrucţiunea IF realizează selecţia execuţiei unui grup de instrucţiuni din două posibile astfel: IF <condiţie> <instrucţiuni 1> ELSE <instrucţiuni 2> ENDIF Execuţia acestei instrucţiuni se realizează astfel: Se evaluează expresia logică <condiţie >. Dacă valoarea rezultată în urma evaluării este.t. (adevărat), atunci se execută secvenţa de instrucţiuni <instrucţiuni 1>, altfel se execută secvenţa de instrucţiuni <instrucţiuni 2> şi în ambele cazuri programul continuă cu execuţia instrucţiunii care urmează după clauza ENDIF. Poate fi utilizată şi forma simplificată a instrucţiunii în care lipseşte clauza ELSE : IF <condiţie> <instrucţiuni> ENDIF Secvenţele <instrucţiuni 1>, <instrucţiuni 2> pot conţine la rândul lor instrucţiuni IF, obţinându-se astfel imbricarea instrucţiunilor IF pe un număr oarecare de nivele. Exemplu IF FILE( Produse.dbf ) USE Produse LIST ELSE? Fisier Produse.dbf lipsa in,sys(2003) ENDIF (dacă fişierul Produse.dbf există în directorul curent, deschide fişierul şi afişează înregistrările sale, altfel afişează mesajul Fisier Produse.dbf lipsa in <cale> ). Instrucţiunea DO CASE realizează execuţia unui grup de instrucţiuni din mai multe grupuri posibile astfel: DO CASE CASE <condiţie 1> <instrucţiuni 1> CASE <condiţie 2> <instrucţiuni 2> 59

60 CASE <condiţie n> <instrucţiuni n> [OTHERWISE <instrucţiuni>] ENDCASE Se execută primul grup de instrucţiuni <instrucţiuni k> pentru care rezultatul evaluării expresiei logice <condiţie k> este.t. (adevărat) şi programul continuă cu instrucţiunea care urmează după clauza ENDCASE. Dacă nici una din expresiile logice <condiţie k> nu are valoarea.t. (adevărat) şi dacă clauza OTHERWISE este prezentă, atunci se execută grupul de instrucţiuni <instrucţiuni> precizat în clauza OTHERWISE şi apoi programul continuă cu instrucţiunea care urmează după clauza ENDCASE. Buclele (iteraţiile, ciclurile) sunt realizate cu ajutorul instrucţiunilor DO WHILE ENDDO, FOR ENDFOR, SCAN ENDSCAN. Instrucţiunea DO WHILE ENDDO realizează execuţia repetată a unui grup de instrucţiuni atâta timp cât o condiţie este adevărată astfel: DO WHILE <condiţie> <instrucţiuni 1> [LOOP <instrucţiuni 2>] [EXIT [<instrucţiuni 3>]] ENDDO Se execută repetat grupul de instrucţiuni <instrucţiuni 1> atâta timp cât rezultatul evaluării expresiei logice <condiţie> este.t. (adevărat) şi apoi programul continuă cu instrucţiunea care urmează după clauza ENDDO. Dacă clauza LOOP este prezentă, atunci se reia ciclul cu grupul de instrucţiuni <instrucţiuni 1> fără a se executa grupul de instrucţiuni <instrucţiuni 2>. Dacă clauza EXIT este prezentă, atunci se părăseşte forţat bucla fără a se mai executa grupul de instrucţiuni <instrucţiuni 3> şi programul continuă cu instrucţiunea care urmează după clauza ENDDO. Grupurile de instrucţiuni <instrucţiuni 1>,<instrucţiuni 2>,<instrucţiuni 3> pot conţine ele însele instrucţiuni DO WHILE ENDDO, obţinându-se astfel instrucţiuni DO WHILE imbricate pe un număr oarecare de nivele. Exemplu Calculul sumei primelor n numere naturale m.s=0 m.i=1 INPUT Introduceti numarul <n>: TO m.n DO WHILE m.i <= m.n m.s = m.s + m.i M.i = m.i + 1 ENDDO? Suma primelor,m.n, numere naturale este S =,m.s Instrucţiunea FOR ENDFOR realizează execuţia repetată a unui grup de instrucţiuni plecând de la o valoare iniţială a unei variabile, până la o valoare finală a variabilei, cu un anumit pas astfel: 60

61 FOR <variabila> = <val.iniţială> TO <val.finală> [STEP <pas>] <instrucţiuni 1> [LOOP <instrucţiuni 2>] [EXIT [<instrucţiuni 3>]] ENDFOR Se execută grupul de instrucţiuni <instrucţiuni 1> de un număr de ori determinat plecând de la valoarea iniţială a variabilei <variabila> până la valoarea sa finală cu pasul <pas> (<val.iniţială>, <val.finală>, <pas> sunt expresii numerice întregi), după care programul continuă cu instrucţiunea care urmează după clauza ENDFOR. Grupurile de instrucţiuni <instrucţiuni 1>,<instrucţiuni 2>,<instrucţiuni 3> pot conţine ele însele instrucţiuni FOR ENDFOR, obţinându-se astfel instrucţiuni FOR imbricate pe un număr oarecare de nivele. Clauzele LOOP, EXIT au acelaşi efect ca în cazul instrucţiunii DO WHILE. Exemplu Calculul sumei primelor n numere naturale m.s=0 INPUT Introduceti numarul <n>: TO m.n FOR i = 1 TO m.n STEP 1 m.s = m.s + i ENDFOR? Suma primelor,m.n, numere naturale este S =,m.s Instrucţiunea SCAN ENDSCAN realizează parcurgerea secvenţială (şi eventual selectivă precizată printr-o condiţie) a înregistrărilor tabelei deschise în zona de lucru curentă şi execuţia unui grup de instrucţiuni pentru fiecare înregistrare parcursă, începând cu înregistrarea curentă până la sfârşitul fişierului.dbf, sau până când bucla este întreruptă prin clauza EXIT. Sintaxa instrucţiunii este: SCAN [<domeniu>][for <condiţie 1>][WHILE <condiţie 2>] <instrucţiuni 1> [LOOP <instrucţiuni 2>] [EXIT [<instrucţiuni 3>]] ENDSCAN Prin <domeniu> poate fi precizat numărul de înregistrări de parcurs cu ajutorul clauzelor ALL sau NEXT <nr.înregistrări>. Clauzele FOR şi WHILE precizează condiţia pe care trebuie să o îndeplinească înregistrările ce vor fi luate în considerare respectiv condiţia ce precizează până când va fi parcursă tabela. Grupurile de instrucţiuni <instrucţiuni 1>,<instrucţiuni 2>,<instrucţiuni 3> pot conţine ele însele instrucţiuni SCAN ENDSCAN, obţinându-se astfel instrucţiuni SCAN imbricate pe un număr oarecare de nivele. Clauzele LOOP, EXIT au acelaşi efect ca în cazul instrucţiunii DO WHILE. Exemplu Afisarea câmpurilor Codp, Denp separate printr-un spaţiu pentru toate înregistrările tabelei Produse USE Produse SCAN 61

62 ? Codp,,Denp ENDSCAN USE Instrucţiuni de intrare/ieşire Din această categorie fac parte instrucţiunile utilizate pentru introducerea datelor de la tastatură şi afişarea rezultatelor pe ecran sau listarea la imprimantă. Instrucţiunile de intrare/ieşire se împart în două grupe şi anume : - Instrucţiuni pentru realizarea operaţiilor de intrare/ieşire în mod linie - Instrucţiuni pentru realizarea operaţiilor de intrare/ieşire în mod ecran Instrucţiuni pentru realizarea operaţiilor de intrare/ieşire în mod linie. Din această grupă fac parte instrucţiunile:? <lista expresii> - realizează afişarea sau listarea rezultatelor evaluării expresiilor din <lista expresii> începând din prima coloană a liniei următoare liniei curente (deci înainte de afişare se generează codurile <CR>, <LF>).?? <lista expresii> - realizează afişarea sau listarea începând din coloana curentă a ecranului sau imprimantei. ACCEPT <expc> TO <variabila de memorie> - afişează mesajul <expc> şi aşteaptă introducerea de la tastatură a unui şir de caractere care va fi memorat în variabila de memorie specificată. INPUT <expc> TO <variabila de memorie> - afişează mesajul <expc> şi aşteaptă introducerea de la tastatură a unei date de tip şir, sau număr, sau dată calendaristică, sau dată de tip logic care va fi memorată în variabila de memorie specificată. Spre deosebire de instrucţiunea ACCEPT data de tip şir de caractere va trebui încadrată între sau sau []. WAIT <expc> - afişează mesajul <expc> şi aşteaptă apăsarea unei taste. Dacă <expc> este omis se va afişa mesajul Press any key to continue. LIST realizează afişarea sau listarea la imprimantă a înregistrărilor din tabela deschisă în zona de lucru curentă. DISPLAY ALL este similară comenzii LIST cu deosebirea că după fiecare ecran plin se afişează mesajul Press any key to continue şi se aşteaptă apăsarea unei taste. Dacă clauza ALL este omisă, se va afişa doar înregistrarea curentă. Instrucţiuni pentru realizarea operaţiilor de intrare/iesire în mod ecran. get, read. Pentru crearea unui formular (machete) de preluare date în mod ecran pot fi folosite say get, read în următoarea sintaxă <lin>,<col> SAY <expc> GET <variabilă> PICTURE <şablon> COLOR<culori> READ Unde: <lin> = linia din care începe afişarea <col> = coloana din care începe afişarea <expc> = un şir de caractere încadrat între,,[] sau expresie de tip şir ce va fi afişată <variabilă> = variabilă de memorie, nume câmp, element de masiv, în care vor fi preluate datele introduse de la tastatură <şablon> = formatul de afişare a datelor preluate, succesiune de caractere X pt.şiruri de caractere, sau succesiune de caractere 9 pentru datele numerice, sau succesiune de caractere A pentru şiruri care conţin doar litere, etc. încadrate între apostroafe, sau ghilimele. De asemenea în cadrul 62

63 formatului de afişare mai pot fi folosite o serie de funcţii ca de exemplu:! pt.conversie litere mici în litere pt.suprimare zerouri nesemnificative etc. <culori> = o listă de doua perechi de culori, prima pereche pentru SAY şi a doua pereche pentru GET, reprezentând culoare scris şi culoare fond. În cadrul instrucţiunii pot fi utilizate şi alte clauze ca de exemplu: SIZE, FONT, STYLE, VALID, ERROR, VERB, BITMAP etc. say get poate fi utilizată şi ca două instrucţiuni <lin>,<col> SAY <expc> PICTURE <şablon> COLOR <lin>,<col> GET <variabilă> PICTURE <şablon> COLOR,<cs>/<cf> Instrucţiunea READ clasică citeşte un set de începând cu primul GET din listă şi continuând până la deplasarea dincolo de ultimul câmp sau înaintea primului câmp după care se iese din instrucţiunea READ. Îmbunătăţirile aduse formei clasice a instrucţiunii permit realizarea de interfeţe mai puternice şi mai flexibile utilizând un număr redus de instrucţiuni FoxPro. În cele ce urmează vom da un exemplu de utilizare a get, read pentru crearea unui ecran de preluare date în tabela Persoane: m.nrcrt=0 STORE SPACE(15) TO m.nume,m.prenume m.datan={ / / SAY SAY SAY SAY Data GET m.nrcrt PICT 99 GET m.nume PICT XXXXXXXXXXXXXXX GET m.prenume PICT XXXXXXXXXXXXXXX GET m.datan PICT XX/XX/XX COLOR,GR+/B READ Ordonarea înregistrărilor unei tabele Ordinea implicită de parcurgere a înregistrărilor într-o tabelă este ordinea în care au fost introduse, aceasta fiind numită ordine naturală. Pentru a putea parcurge înregistrările tabelei şi în altă ordine se pot utiliza două metode şi anume : 1 - Ordonarea înregistrărilor prin operaţia de sortare a tabelei; 2 - Ordonarea înregistrărilor prin operaţia de indexare a tabelei. Ordonarea prin sortare se realizează cu comanda SORT TO <nume fişier> ON <câmp1> [/A /D /C] care are drept rezultat crearea unei noi tabele în care înregistrările sunt scrise în ordinea precizată (ordonate după unul sau mai multe câmpuri /A-ascendent (implicit), /D descendent, /C fără a lua în considerare deosebirea dintre litere mici sau mari (/C poate fi combinat cu /A sau /D astfel: /AC sau /DC). Ordonarea prin indexare se realizează cu comanda INDEX care într-o formă simplificată are sintaxa: INDEX ON <expresie index>tag <nume crit.ord.>[ascending DESCENDING] (care are drept rezultat crearea unui criteriu de ordonare a înregistrărilor într-un fişier având acelaşi nume cu numele tabelei şi extensia.cdx). 63

64 Precizarea ordinii în care se vor parcurge înregistrările într-o tabelă se face cu comanda SET ORDER TO <nume criteriu de ordonare>. Revenirea la ordinea naturală (ordinea în care au fost încărcate înregistrările în tabelă) se face cu comanda SET ORDER TO. Exemplu Crearea unui criteriu de ordonare în tabela Produse, alfabetic după primele 3 litere din câmpul Denp: INDEX ON LEFT(Denp,3) TAG nume3 Comenzile: USE Produse SET ORDER TO TAG nume3 LIST SET ORDER TO realizează: deschide tabela Produse, precizează ordinea de parcurgere nume3 (alfabetic după primele 3 litere din denumirea produsului), afişează înregistrările tabelei în această ordine şi precizează că în continuare înregistrările tabelei vor fi văzute în ordinea naturală (ordinea în care au fost încărcate). Funcţia TAG(<nr criteriu>)_returnează numele criteriului de ordonare <nr criteriu> Funcţia KEY(<nr criteriu>) returnează expresia index pentru criteriul de ordonare <nr_criteriu>. Instrucţiuni de poziţionare pe înregistrări într-o tabelă Fiecărei tabele deschise într-o zonă de lucru îi este asociat un indicator de înregistrări care conţine numărul înregistrării curente. Aflarea înregistrării curente (conţinutului indicatorului de înregistrări) într-o tabelă se realizează cu funcţia RECNO(). La deschiderea unei tabele cu comanda USE indicatorul de înregistrări este poziţionat pe prima înregistrare (conţine valoarea 1). Pentru schimbarea indicatorului de înregistrări (poziţionarea pe o altă înregistrare) se pot folosi instrucţiunile: GO <expn> - realizează poziţionarea pe înregistrarea având indicatorul de înregistrări rezultatul evaluării expresiei <expn> GO TOP realizează poziţionarea pe prima înregistrare a tabelei GO BOTTOM realizează poziţionarea pe ultima înregistrare a tabelei SKIP <expn> - realizează mutarea indicatorului de înregistrări peste un număr de înregistrări dat de rezultatul evaluării expresiei <expn>, înainte sau înapoi faţă de înregistrarea curentă, după cum rezultatul evaluării expresiei <expn> este un număr pozitiv sau negativ. Funcţiile BOF(), EOF() testează dacă indicatorul de înregistrări este poziţionat pe începutul tabelei, respectiv pe sfârşitul tabelei. Numărul de înregistrări dintr-o tabelă este returnat de funcţia RECCOUNT(). Dimensiunea unei înregistrări (în nr. octeţi) este returnată de funcţia RECSIZE(). Pentru specificarea domeniului înregistrărilor în anumite instrucţiuni se pot utiliza următoarele clauze : ALL specifică toate înregistrările RECORD <nr> - specifică înregistrarea <nr> NEXT <nr> - specifică următoarele <nr> înregistrări începând cu înregistrarea curentă. REST specifică restul înregistrărilor până la sfârşitul tabelei începând cu înregistrarea curentă. Exemplu. LIST NEXT 3 afişează următoarele 3 înregistrări începând cu înregistrarea curentă. 64

65 În tabelele indexate (şi numai în acestea) se poate realiza poziţionarea direct pe o înregistrare pentru o valoare a expresiei de indexare precizată, folosind fie instrucţiunile SEEK <valoare cheie index>, IF FOUND(), fie funcţia SEEK() în instrucţiunea IF astfel IF SEEK(<valoare cheie index.>) Comenzi SET permit stabilirea unor condiţii de lucru valabile în sesiunea FoxPro de lucru curentă. SET BELL activează sau dezactivează sunetele SET BELL TO stabileşte frecvenţa şi durata unui sunet SET CONFIRM determină dacă tasta <Enter> trebuie acţionată la ieşirea dintr-un câmp SET DATE specifică formatul datelor calendaristice SET DECIMALS stabileşte numărul zecimalelor de afişat pentru datele numerice SET DELETED stabileşte accesul la înregistrările marcate pentru ştergere SET DEFAULT specifică directorul şi unitatea de disc implicită (poziţionarea intr-un anumit director) SET DEVICE stabileşte perifericul de afişare SET EXACT specifică dacă este necesară o potrivire exactă în operaţiile de comparare pentru şiruri de caractere SET FILTER specifică condiţiile pe care trebuie să le îndeplinească înregistrările unei tabele pentru a fi accesibile SET ORDER stabileşte ordinea de parcurgere a înregistrărilor unei tabele SET PRINTER activează sau dezactivează ieşirea la imprimantă SET PROCEDURE deschide un fişier de proceduri specificat SET RELATION TO stabileşte o relaţie între două sau mai multe tabele SET RELATION OFF - şterge o relaţie între două tabele SET SKIP TO crează o relaţie 1-n (on to many) între o înregistrare a unei tabele părinte şi mai multe înregistrări a unei tabele copil SET SAFETY activează sau dezactivează facilitatea de protecţie a fişierelor SET TALK controlează afişarea rezultatelor unor comenzi. Instrumente de lucru pentru creşterea productivităţii (ex. de utilizare în FoxPro 2.6 sub Windows). - Generatorul de meniuri se lansează cu comanda Create menu <nume meniu>, sau se selectează File -> New -> Menu -> New, în caseta Prompt se tastează numele meniului, din meniul Menu se selecteată General Optionns, în caseta Location se precizează locul unde va apare meniul creat în bara de meniuri Fox (ex. After, Help pentru ca meniul nou creat să apară după meniul Help) apoi se selectează OK. Din lista Result se selectează Submenu apoi Create iar în caseta Prompt se tastează opţiunile de meniu vertical corespunzătoare meniului orizontal nou creat şi pentru fiecare opţiune se alege din coloana Result cuvântul Command iar în caseta Options se tastează DO <nume procedura> coresp.(dacă în caseta Prompt în loc de opţiune se tastează \- atunci se va trasa un rând de linii între opţiuni). Din meniul Program se selectează Generate, se apasă butonul Yes şi în caseta Save Menu As se tastează numele fişierului în care se va salva meniul şi extensia.mnx, apoi se apasă butonul Save iar din caseta Generate Menu se alege Generate. Pentru execuţia meniului se dă comanda DO <nume fişier salvat>.mpr, iar pt.modificare MODI COMM <nume fişier salvat>.mpr Pentru revenire la meniul Fox se dă comanda SET SYSMENU TO DEFAULT. - Creare, salvare,tipărire rapoarte sumare se selectează Database->Report->Quick Report 65

66 Apoi selecţie buton stânga pt. raport în mod Browse, sau buton dreapta pt. raport în mod Change, după care se salvează cu <nume fişier>.frx, care poate fi editat cu MODI REPORT <nume fişier> şi executat din meniul Run cu opţiunea Report. - Crearea unei aplicaţii din bara de meniuri FoxPro se selectează Run->Application->New, apoi din caseta care apare se selectează Step1 pt. creare sau modificare tabelă sau/şi Step2 pt. creare sau modificare ecran şi în final se apasă butonul Generate. Pentru execuţia aplicaţiei se selectează Run>Application, apoi se selectează fişierul cu extensia.app de executat şi se apasă butonul Run. - Generatorul de ecrane (Screen Builder) - Generatorul de rapoarte (Report Writer) Problemă propusă Utilizând generatorul de meniuri se adaugă meniului principal FoxPro opţiunea Aplicatii care activează un meniu popup ce conţine opţiunile: - Stocuri apelează procedura Pstoc care realizează Situaţia stocurilor de produse; - Oferte/Produs apelează procedura Oferte_p care realizează Situaţia ofertelor de produse pe produs; - Oferte/Furnizor - apelează procedura Oferte_f care realizează Situaţia ofertelor de produse pe furnizor; - Vanzari/Produs - apelează procedura Vanzari_p care realizează Situaţia vânzărilor de produse pe produs; - Vanzari/Client - apelează procedura Vanzari_c care realizează Situaţia vânzărilor de produse pe client. 66

67 Lucrare de laborator nr. 11 Tema: Programarea în Visual FoxPro Spre deosebire de programarea procedurală în care un program constă dintr-o secvenţă de instrucţiuni, proiectarea şi programarea orientate spre obiect reprezintă o abordare nouă în care efortul de programare constă în proiectarea obiectelor componente de sine stătătoare ale unei aplicaţii. Obiecte în Visual FoxPro. Obiectele în mediul Visual FoxPro sunt formularele şi controalele care pot fi gestionate prin intermediul proprietăţilor, evenimentelor şi metodelor şi care vor fi incluse în aplicaţii. Extensiile orientate spre obiect ale limbajului Visual FoxPro permit crearea şi întreţinerea cu uşurinţă a bibliotecilor de cod reutilizabil. Programarea orientată spre obiect este o modalitate de a împacheta codul astfel încât să poată fi refolosit şi întreţinut mai uşor. Primul nivel de împachetare se numeşte clasă. O aplicaţie este construită din clase şi obiecte. Clasele descriu proprietăţile şi comportamentul obiectelor care se mai numesc şi instanţe ale clasei. Un obiect are anumite proprietăţi, sau atribute. De exemplu, un automobil are o anumită denumire şi o anumită culoare. Aceste proprietăţi pot fi stabilite în faza de proiectare sau de execuţie. Metode şi evenimente asociate obiectelor Fiecare obiect recunoaşte şi poate reacţiona la anumite acţiuni numite evenimente iniţiate fie de utilizator, fie de sistem. De cele mai multe ori, evenimentele sunt generate de interacţiunea cu utilizatorul. Acţiunile utilizatorilor care pot declanşa evenimente sunt clicurile de mouse, mişcările mouse-ului şi apăsările de taste. Evenimente declanşate de sistem sunt iniţializarea unui obiect şi întâlnirea unei linii de cod care generează o eroare. Evenimentele pot avea metode asociate. Metodele sunt proceduri asociate unui obiect, diferă de procedurile Visual FoxPro obişnuite, sunt legate indisolubil de obiect si sunt apelate altfel decât celelalte proceduri Visual FoxPro. Astfel, dacă scriem cod pentru metoda asociată evenimentului Click, codul respectiv este executat atunci când survine evenimentul Click. Metodele pot exista şi independent de evenimente, caz în care, trebuie apelate explicit în cadrul codului. Setul de evenimente este determinat (nu pot fi create noi evenimente), în schimb, setul de metode este nelimitat Pentru o descrierea fiecărei proprietăţi, a fiecărui eveniment sau control, pot fi consultate fişierele Help ale programului Visual FoxPro. Clase în Visual FoxPro Toate proprietăţile, metodele şi evenimentele asociate unui obiect sunt specificate în definiţia clasei. Clasele au o serie de caracteristici care permit crearea de cod reutilizabil, uşor de întreţinut şi anume: încapsularea, subclasele, moştenirea. Spre exemplu, proprietăţile care determină elementele unei casete cu listă şi codul care se execută atunci când se selectează un element din listă pot fi încapsulate într-un singur control pe care-l adăugăm la un formular. O subclasă poate avea toate funcţionalităţile unei clase existente, precum şi controale sau funcţionalităţi suplimentare. Crearea subclaselor este una dintre căile de reducere a dimensiunilor codului Astfel pentru realizarea unei aplicaţii se începe cu definirea unei clase cât mai apropiate de scopul urmărit şi apoi se realizează personalizarea acesteia. Prin moştenire, o modificare efectuată asupra unei clase se reflectă în toate subclasele derivate din aceasta. 67

68 Containere şi non-containere Cele două tipuri primare de clase Visual FoxPro, şi, prin extensie, de obiecte Visual FoxPro, sunt clasele container şi clasele control. Containerele pot conţine alte obiecte şi permit accesul la acestea. Astfel, dacă se creează o clasă container care cuprinde două casete cu listă şi două butoane de comandă, care apoi se vor adăuga la un formular un obiect bazat pe această clasă, fiecare obiect poate fi manipulat individual, atât în momentul proiectării cât şi în momentul execuţiei. Se poate crea câte o clasă pentru fiecare control şi fiecare formular, însă în acest mod în final vor exista mai multe clase care fac cam acelaşi lucru, dar care trebuie întreţinute separat. Se poate crea o clasă control pentru o funcţionalitate generică. Astfel spre exemplu, butoanele de comandă care permit utilizatorului să mute indicatorul de înregistrări în cadrul unei tabele, un buton care să închidă formularul şi un buton de asistenţă pot fi salvate sub formă de clase şi pot fi adăugate la formulare când se doreşte această funcţionalitate. Se pot crea clase pentru seturi de formulare, formulare şi controale cu o anumită înfăţişare, astfel încât toate componentele aplicaţiei să aibă acelaşi aspect. Visual FoxPro permite crearea mai multor tipuri de clase, fiecare cu propriile sale caracteristici, tipul clasei putând fi precizat în caseta de dialog New Class sau în clauza AS a comenzii CREATE CLASS. Se pot crea subclase ale majorităţii claselor de bază din Visual FoxPro cu ajutorul proiectantului de Clase (Class Designer). Evenimentele din Visual FoxPro Codul pentru evenimente este declanşat automat de către sistem ca răspuns la o anumită acţiune a utilizatorului. Spre exemplu, codul scris pentru evenimentul Click este prelucrat automat de sistem atunci când utilizatorul execută clic pe un control. Codul pentru evenimente poate fi declanşat şi de evenimente din sistem, ca în cazul evenimentului Timer al controlului timer (ceas). Principalele evenimente din Visual FoxPro, valabile pentru majoritatea controalelor sunt prezentate în tabelul de mai jos: Evenimentul Init Destroy Click DblClick RightClick GetFocus LostFocus KeyPress MouseDow indicatorul MouseMove Momentul declanşării evenimentului La crearea unui obiect La descărcarea unui obiect din memorie Când utilizatorul execută clic pe obiect cu butonul stânga al mouse-ului Când utilizatorul execută dublu-clic pe obiect cu butonul stânga al mouse-ului Când utilizatorul execută clic pe obiect cu butonul dreapta al mouse-ului Când obiectul devine ţinta intrărilor (primeşte focusul), fie datorită acţiunii utilizatorului (de exemplu, la apăsarea tastei Tab sau la executarea unui clic), fie ca urmare a metodei SetFocus din program Când obiectul nu mai este ţinta intrărilor (pierde focusul), fie datorită acţiunii utilizatorului (de exemplu, la apăsarea tastei Tab sau la executarea unui clic), fie ca urmare a metodei SetFocus din program La apăsarea şi eliberarea unei taste de către utilizator La apăsarea butonului mouse-ului de către utilizator atunci când mouse-ului se află deasupra obiectului Când utilizatorul deplasează indicatorul mouse-ului deasupra obiectului 68

69 MouseUp Când utilizatorul eliberează butonul mouse-ului în timp ce indicatorul mouse-ului se află deasupra obiectului Crearea unei baze de date Crearea unei baze de date se poate realiza cu ajutorul interfeţei sau al limbajului. La crearea bazei de date, se reunesc tabelele într-o singură colecţie (fişier cu extensia.dbc) şi se creează dicţionarul de date în care se memorează o serie de informaţii printre care: cheile primare şi candidate, relaţiile persistente dintre tabelele bazei de date, numele lungi pentru tabele şi câmpuri, titlurile de câmpuri afişate în fereastra Browse şi în anteturile coloanelor unei grile, valorile implicite ale câmpurilor, clasele implicite ale controalelor folosite în formulare, măştile de intrare şi formatele de afişare a câmpurilor, regulile la nivel de câmp şi de înregistrare, declanşatoarele, procedurile stocate, conexiunile la surse de date externe, vederile locale şi externe, comentariile pentru fiecare câmp, tabelă şi bază de date Unele facilităţi ale dicţionarului de date, cum ar fi numele lungi pentru câmpuri, cheile primare şi candidate, valorile implicite, regulile la nivel de câmp şi de înregistrare şi declanşatoarele, sunt stocate în fişierul.dbc, dar sunt create în cadrul procesului de construire a unei tabele sau vederi. Crearea unei noi baze de date se realizează astfel: 1. cu Gestionarul de Proiecte, se selectează fişa cu eticheta Data, iar din lista afişată se selectează Databases şi apoi New. sau 2. cu comanda CREATE DATABASE La crearea unei baze de date se crează un container de bază de date vid, căruia i se vor adăuga ulterior obiectetele ce se vor crea pentru aceasta. Adăugarea tabelelor la o bază de date O tabelă Visual FoxPro poate exista în una din următoarele două situaţii: ca tabelă liberă (externă), adică sub formă de fişier.dbf neasociat vreunei baze de date, sau ca tabelă dintr-o bază de date, adică sub formă de fişier.dbf asociat unei baze de date. Tabelele asociate unei baze de date au unele proprietăţi specifice, care nu există în cadrul tabelelor externe, cum ar fi regulile la nivel de câmp şi de înregistrare, declanşatoarele şi relaţiile persistente. Tabelele pot fi asociate cu o bază de date prin crearea lor în cadrul unei baze de date deschise în fundal sau prin adăugarea tabelelor existente la o bază de date. Pentru adăugarea unei tabele libere la o bază de date se poate proceda astfel: în cadrul Gestionarului de Proiecte, se selectează Tables din cadrul fişelor All sau Data, apoi se selectează Add. s au cu comanda ADD TABLE. Exemplu. Secvenţa de instrucţiuni de mai jos deschide baza de date BazaTest şi îi adaugă tabela liberă TabTest: OPEN DATABASE BazaTest ADD TABLE TabTest O tabelă existentă poate fi asociată la o singură bază de date. O tabelă (un fişier.dbf) poate fi folosită şi fără a fi încorporată într-o bază de date. Pentru a face o referinţă la o tabelă dintr-o altă bază de date decât cea curentă se foloseşte simbolul!, ca de exemplu: 69

70 USE BazaTest!TabTest BROWSE Pentru eliminarea unei tabele dintr-o bază de date se poate utiliza una din căile: în cadrul Gestionarului de Proiecte (Project Manager), se selectează numele tabelei, apoi se selectează Remove. - sau - în cadrul Proiectantului de Baze de Date (Database Designer), se selectează tabela şi se alege comanda Remove din meniul Database. sau cu comanda REMOVE TABLE. Exemplu, codul de mai jos deschide baza de date BazaTest şi elimină tabela TabTest OPEN DATEBASE BazaTest REMOVE TABLE TabTest La eliminarea unei tabele dintr-o bază de date nu se realizează şi ştergerea automată a fişierului asociat tabelei. Pentru eliminarea tabelei din baza de date şi ştergerea fişierului.dbf al tabelei de pe hard-disc, se va folosi clauza DELETE a comenzii REMOVE TABLE sau comanda DROP TABLE astfel: OPEN DATABASE BazaTest REMOVE TABLE TabTest DELETE Creare relaţii persistente între tabelele bazei de date Aceste relaţii sunt create utilizând indecşii (sunt create între indecşi şi nu între câmpuri) şi sunt folosite automat drept condiţii implicite de legare în ferestrele Proiectantului de interogări şi de Vederi (Query Designer şi View Designer) şi pentru a stoca informaţii despre integritatea referenţială. Pentru Crearea unei relaţii persistente între tabele se poate proceda astfel: în fereastra Proiectantului de Baze de Date (Database Designer), se alege numele indexului ce urmează a fi legat şi apoi se trage cu mouse-ul spre numele indexului din tabela ce urmează a fi legată sau - se utilizează clauza FOREIGN KEY în comenzile CREATE TABLE sau ALTER TABLE. În fereastra Proiectantului de Baze de Date (Database Designer), se va vedea o linie care leagă tabelele respective, reprezentând noua relaţie persistentă. Pentru ştergerea unei relaţii persistente între două tabele se poate proceda astfel: 1. în cadrul Proiectantului de Baze de Date (Database Designer), se execută clic pe linia care reprezintă relaţia dintre cele două tabele. (Lăţimea liniei de relaţie creşte pentru a indica faptul că s-a selectat relaţia respectivă), după care se apasă tasta DELETE. sau 2. se utilizează clauza DROP FOREIGN KEY cu comanda ALTER TABLE. Crearea integrităţii referenţiale Crearea integrităţii referenţiale presupune crearea unui set de reguli care să păstreze relaţiile definite între tabele când se inserează sau se şterg înregistrări. Menţinerea integrităţii referenţiale împiedică efectuarea următoarelor operaţii: - Adăugarea de înregistrări la o tabelă legată atunci când nu există nici o înregistrare asociată în tabela primară. 70

71 Modificarea de valori în tabela primară care ar duce la apariţia de înregistrări orfane în tabela asociată. - Ştergerea de înregistrări din tabela primară atunci când există înregistrări asociate. Se pot scrie declanşatoare şi proceduri stocate care să întărească integritatea referenţială, însă Visual FoxPro dispune de Generatorul de Integritate Referenţială (RI) (Referenţial Integrity Builder) care permite să se determine tipurile de reguli de întărit, tabelele pentru care se doreşte ca regulile să fie întărite şi evenimentele de sistem care vor impune mediului Visual FoxPro să verifice respectarea regulilor de integritate referenţială. - Crearea vederilor Vederile reprezintă un concept utilizat în cadrul bazelor de date relaţionale care permite personalizarea unui set de date din baza de date utilizat în cadrul unei aplicaţii, combinând calităţile tabelelor şi ale interogărilor. Astfel la fel ca în cazul unei interogări, se poate folosi o vedere pentru a extrage un set de date din una sau mai multe tabele asociate şi la fel ca o tabelă, o vedere poate fi folosită pentru actualizarea informaţiilor din baza de date. La crearea unei vederi, Visual FoxPro stochează definiţia acesteia în baza de date curentă, definiţie ce conţine numele tabelelor utilizate în cadrul vederii, precum şi câmpurile selectate şi valorile proprietăţilor lor. La utilizarea vederii, definiţia acesteia este folosită de Visual FoxPro pentru a genera o instrucţiune SQL care defineşte setul de date al vederii. Se pot crea două tipuri de vederi şi anume: locale şi externe. Vederile externe folosesc sintaxa SQL externă pentru a selecta informaţii din tabelele unei surse de date ODBC externe. Vederile locale folosesc sintaxa SQL Visual FoxPro pentru a selecta informaţii din tabele sau vederi. La o vedere locală se poate adăuga una sau mai multe vederi externe, obţinând astfel acces la informaţii Visual FoxPro şi la informaţii ODBC externe din aceeaşi vedere. O vedere locală poate fi creată fie prin intermediul Proiectantului de Vederi (View Designer), fie cu comanda CREATE SQL VIEW astfel:. - în cadrul Gestionarului de Proiecte (Project Manager), se selectează o bază de date, se alege Local Views, apoi New pentru a deschide fereastra proiectantului de Vederi (View Designer). sau - având deschisă o bază de date, se dă comanda CREATE SQL VIEW pentru a afişa fereastra Proiectantului de Vederi. sau - se dă comanda CREATE SQL VIEW cu clauza AS. Exemplu: CREATE SQL VIEW ViewTest AS SELECT * FROM BazaTest!TabTest Definiţia unei vederi poate fi ştearsă din baza de date cu ajutorul Gestionarului de Proiecte (Project Manager) sau cu comanda DELETE VIEW (înainte de a şterge vederea, baza de date din care face parte trebuie să fie deschisă şi să fie baza de date curentă). Pentru accesarea datelor stocate pe un server la distanţă este necesar să se creeze o vedere externă ceea ce necesită conectarea la sursa de date prin driver-ul ODBC corespunzător. Sursa de date şi conexiunile pot fi definite din Visual FoxPro. Definiţia conexiunii va fi stocată în baza de date şi va putea fi referită atunci când se crează vederea externă. Pentru crearea unei conexiuni se poate proceda astfel: - în fereastra Gestionarului de Proiecte (Project Manager), se selectează Connections, apoi New pentru a deschide fereastra Proiectantului de Conexiuni (Connection Designer). sau 71

72 - se deschide baza de date şi se foloseşte comanda CREATE CONNECTION pentru a deschide fereastra Proiectantului de Conexiuni. sau - se foloseşte comanda CREATE CONNECTION, urmată de numele conexiunii. Exemplu, pentru a crea o conexiune în baza de date BazaTest în vederea conectării la sursa de date ODBC ServerRemote, se poate utiliza următoarea secvenţă de instrucţiuni: OPEN DATABASE BazaTest CREATE CONNECTION conexiune_01; DATASOURCE ServerRemote utilizator parola Visual FoxPro va activa conexiunea atunci când se va folosi vederea (până la activarea conexiunii, aceasta există doar ca definiţie stocată pe un rând al fişierului.dbc al bazei de date). La utilizarea vederii externe, Visual FoxPro va crea, prin intermediul conexiunii indicate în cadrul vederii, o conexiune activă cu sursa de date externă, după care trimite către aceasta o cerere de date folosind conexiunea activă drept canal de legătură. Se poate crea o vedere care indică doar numele sursei de date, nu şi denumirea conexiunii, iar la utilizarea acestei vederi, Visual FoxPro va folosi informaţia ODBC pentru a crea şi a activa o conexiune cu sursa de date. La închiderea vederii, se închide şi conexiunea. Pentru afişarea conexiunilor existente se poate utiliza comanda DISPLAY CONNECTIONS. Formularele în Visual FoxPro Formularele oferă utilizatorului facilităţi pentru vizualizarea şi introducerea datelor într-o bază de date, putând încorpora o colecţie de obiecte care pot răspunde la evenimentele generate de utilizator sau de sistem şi având propriile lor proprietăţi şi metode. Pentru proiectarea formularelor, Visual FoxPro dispune de un Proiectant de Formulare (Form Designer) puternic, cu ajutorul căruia utilizatorul poate crea: - Diverse tipuri de obiecte în cadrul formularelor; - Date asociate obiectelor dintr-un formular; - Formulare părinte şi formulare fiu (ierarhii de formulare); - Formulare multiple care pot fi manipulate împreună; - Formulare bazate pe şabloane definite de utilizator. Crearea unui formular poate fi realizată astfel: - cu Gestionarul de Proiecte (Project Manager), se selectează Forms şi New. sau - din meniul File, se selectează New, apoi Form şi, apoi, New File sau - c u comanda CREATE FORM Odată creat formularul, urmează să i se adauge controalele, să se configureze proprietăţile controalelor şi ale formularului şi să se scrie codul pentru evenimente. Tipurile de obiecte care pot fi adăugate unui formular sunt: Controale, Containere, Clase definite de utilizator, Obiecte OLE. Adăugarea controalelor standard Visual FoxPro la un formular se poate face cu ajutorul barei de instrumente Controls. Controalele standard Visual FoxPro sunt: Casetă de validare Hyperlegături Casetă cu listă Casetă de increment Casetă combinată Imagine Control OLE asociat Casetă de text 72

73 Buton de comandă Etichetă Control container OLE Control timer Casetă de editare Linie Formă geometrică Una dintre cele mai puternice facilităţi din Visual FoxPro este posibilitatea creării de clase care pot fi folosite în diferite puncte ale aplicaţiei. După ce au fost create, clasele pot fi adăugate la formulare astfel: din fereastra Gestionarului de Proiecte (Project Manager),se trage clasa în cadrul containerului. Există două tipuri de controale în formulare şi anume: controale care sunt asociate datelor şi controale care nu sunt asociate datelor. Dacă utilizatorul interacţionează cu controalele asociate datelor, valorile introduse de el sunt stocate în sursa de date, care poate fi un câmp de tabelă, de cursor sau o variabilă. Un control poate fi legat de date atribuind valoarea corespunzătoare proprietăţii ControlSource sau, în cazul grilelor, proprietăţii RecordSource. Dacă utilizatorul nu configurează proprietatea ControlSource a unui control, valoarea pe care o introduce sau pe care o alege din cadrul controlului este păstrată ca valoare a proprietăţii nefiind salvată pe hard-disc şi nici păstrată în memorie la expirarea duratei de viaţă a controlului. Crearea meniurilor şi a barelor de instrumente Meniurile pot fi create cu ajutorul Proiectantului de Meniuri (Menu Designer) din Visual FoxPro. Pentru generarea meniului, din cadrul meniului Menu, se selectează Generate. Sistemul de meniuri va fi salvat într-un fişier cu extensia.mnx, iar programul meniului generat va fi salvat într-un fişier cu extensia.mpr. De asemenea, pot fi create meniuri contextuale (meniuri care apar la apăsarea butonului drept al mouse-ului pe un control sau obiect) Pentru crearea unui meniu contextual se procedează astfel: 1. în fereastra Gestionarului de Proiecte (Project Manager), se selectează fişa Other, din care se selectează Menus, apoi New. 2. se selectează Shortcut. Pe ecran va apărea Proiectantul de Meniuri Contextuale (Shortcut Designer) din care procesul de adăugare a articolelor de meniu este identic cu cel de creare a meniurilor. Pentru fiecare articol de meniu se poate crea un submeniu care să cuprindă articole de meniu suplimentare. La crearea unui meniu, acesta poate fi salvat într-un fişier HTML (Hypertext Markup Language) folosind opţiunea Save As HTML din cadrul meniului File. De asemenea, un formular poate fi salvat ca fişier HTML astfel: 1. Se deschide meniul FILE 2.. Se selectează Save As HTML din cadrul meniului File. (Dacă meniul a fost modificat, sistemul va cere confirmarea salvării modificărilor). 3. Se introduce numele fişierului HTML şi apoi se alege Save. Pentru a crea o bară de instrumente cu butoane care nu apar în barele de instrumente existente, se poate defini o clasă Toolbar personalizată. Visual FoxPro oferă o clasă de bază Toolbar din care se poate deriva clasa dorită la care pot fi adăugate obiecte, apoi se pot defini proprietăţile, evenimentele şi metodele şi în final, bara de instrumente poate fi adăugată unui set de formulare. O bară de instrumente poate fi adăugată la un set de formulare, astfel încât bara de instrumente să se deschidă odată cu formularele respective. 73

74 Crearea unei aplicaţii După crearea tuturor componentelor funcţionale ale unei aplicaţii, acestea pot fi compilate într-o singură aplicaţie care reuneşte componentele executabile ale proiectului - formulare, rapoarte, meniuri, programe ş.a.m.d. - într-un fişier unic, ce poate fi distribuit utilizatorilor împreună cu datele. Pentru a crea un proiect complet cu ajutorul componentei Application Framework, se poate folosi Vrăjitorul Aplicaţiei (Application Wizard). După crearea proiectului, se va deschide noul Generator de Aplicaţii (Aplication Builder), pentru a adăuga o bază de date, tabele, rapoarte şi formulare. Pentru a putea distribui aplicaţia, se va crea fie un fişier aplicaţie, cu extensia.app, fie un fişier executabil cu extensia.exe. Proiectarea unei aplicaţii OLE. Obiecte cum sunt documentele Word şi foile de calcul Excel, pot fi legate sau înglobate prin intermediul controlului OLE Container în cadrul formularelor, şi pot fi stocate în câmpurile de tip General ale unei tabele, urmând să fie afişate în formulare cu ajutorul controlului OLE Bound. Diferenţa dintre legare şi înglobare constă în locul de stocare a datelor astfel: înglobarea păstrează datele în tabelă sau în formular, iar legarea referă obiectele din locul unde sunt stocate. Soluţii client-server Aplicaţiile client/server combină funcţionalitatea mediului Visual FoxPro de pe calculatorul local cu avantajele de stocare şi de securitate oferite de un server extern. Pentru aceasta, se poate crea mai întâi un prototip local al aplicaţiei, după care, aplicaţia poate fi transformată pentru un mediu client/server prin intermediul Vrăjitorului de Transformare (Upsizing Wizard). Se poate utiliza tehnologia SQL de transfer pentru a îmbunătăţi aplicaţia transformată. În timp ce vederile externe oferă acces la datele de pe server, tehnologia SQL de transfer permite transmiterea de comenzi direct către server folosind funcţia SQLEXEC(). Cele mai performante soluţii de creare a unei aplicaţii Visual FoxPro client/server se obţin combinând vederile şi tehnologia SQL de transfer. Problemă propusă Exportaţi tabelele bazei de date FurnizoriClienti din ACCESS în Visual FoxPro. Creaţi baza de date FurnizoriClienti în Visual FoxPro şi adăugaţi tabelele exportate. Creaţi în Visual FoxPro vederile corespunzătoare interogărilor create în ACCESS. 74

75 Lucrare de laborator nr. 12 Tema: Limbajul SQL. Crearea bazei de date. Comenzi pentru crearea/actualizarea schemei bazei de date Adăugarea relaţiilor într-o bază de date comanda CREATE TABLE are sintaxa: CREATE TABLE <nume relaţie>[(<nume atribut> <tip dată>, )] Exemplu -crearea tabelei Persoane în SQL Oracle se realizează cu comanda: CREATE TABLE Persoane (Nrcrt NUMBER UNIQUE NOT NULL,Nume CHAR(15),Prenume CHAR(15),Datan DATE,Sexul CHAR,Adresa VARCHAR2(50)); O nouă relaţie poate fi creată şi ca rezultat al unei operaţii de interogare astfel: CREATE TABLE <nume relaţie> (<nume atribut> <tip dată>, ) AS <subinterogare> Adăugarea/modificarea de atribute pentru o relaţie existentă se realizează cu comanda: ALTER TABLE <nume relaţie> ADD MODIFY (< nume atribut> <tip dată>, ) Ştergerea unei relaţii se realizează cu comanda: DROP TABLE <nume relaţie> Comenzi pentru optimizarea interogărilor Una din principalele căi de optimizare a timpilor de interogare a unei baze de date este indexarea. Un index poate fi privit ca o relaţie cu două atribute şi anume: - primul atribut conţine valorile atributelor relaţiei după care se crează indexul; - al doilea atribut conţine un pointer (adresa) la locaţia tuplelor corespunzătoare. Crearea unui index se realizează cu comanda: CREATE [UNIQUE] INDEX <nume index> ON <nume relaţie>(<nume atribut>[asc DESC], ) Dacă pentru atributele utilizate în clauza WHERE a unor instrucţiuni SQL au fost creaţi indecşi, atunci aceştia vor fi utilizaţi în vederea optimizării timpului de prelucrare. Decizia de utilizare sau nu a unui index este luată de limbajul SQL şi nu de utilizator. Pentru aceasta fiecare model de limbaj SQL dispune de o componentă numită optimizator, care examinează interogarea şi decide care este modul optim de obţinere a rezultatului. O altă tehnică de optimizare a interogărilor este tehnica clustering disponibilă în ORACLE şi care constă în gruparea tuplelor din mai multe relaţii şi stocarea lor în aceeaşi zonă pe disc. Controlul datelor (comenzi DCL) Vederi O vedere este o relaţie virtuală, definită plecând de la alte relaţii din baza de date şi care nu conţine date şi deci nu ocupă spaţiu fizic pe disc. Vederile se definesc în două scopuri şi anume: - pentru a simplifica accesul utilizatorilor la date; - pentru a asigura protecţia şi securitatea datelor fiecărui utilizator fiindu-i permis acces la o porţiune a bazei de date şi putând efectua doar anumite operaţii (conform drepturilor de acces specificate cu comenzile GRANT/REVOKE). Asupra unei vederi se pot efectua aceleaşi operaţii ca şi asupra unei relaţii cu deosebirea că vederile nu conţin date şi că orice modificări efectuate asupra datelor sunt reflectate şi în vederi. Astfel, asupra unei vederi se pot realiza operaţiile: - creare vedere (CREATE VIEW); 75

76 - creare sinonim pentru vedere (CREATE SYNONIM); - ştergere vedere (DROP VIEW); - interogare vedere (SELECT); - actualizare date din vedere (UPDATE); - ştergere date din vedere (DELETE); - adăugare date (INSERT). Crearea unei vederi se realizează cu comanda CREATE VIEW care are sintaxa: CREATE VIEW <nume vedere> [<lista atribute>] AS <fraza SELECT> [WITH CHECK OPTION] Exemplu: CREATE VIEW StocuriD1(Codp,Denp,Ump,Cant,Pret,Valoare) AS SELECT Stocuri.Codp, Denp,Ump,Cant,Pret,Cant*Pret FROM Produse,Stocuri WHERE Produse.codp=Stocuri.Codp AND CodDep = D1 Interogarea vederii se va realiza cu comanda SELECT * FROM StocuriD1 Utilizarea opţiunii WITH CHECK OPTION asigură faptul că nici o tuplă nu va fi adaugată sau actualizată cu instrucţiunile INSERT, UPDATE, dacă nu sunt respectate condiţiile specificate în clauza WHERE a instrucţiunii SELECT din definiţia vederii. Pentru acordarea sau retragerea drepturilor de acces la baza de date prin intermediul vizualizărilor se vor folosi comenzi de forma: GRANT [ALL SELECT INSERT UPDATE DELETE] ON <nume vedere> TO <nume utilizator> sau REVOKE [ALL SELECT INSERT UPDATE DELETE] ON <nume vedere> FROM <nume utilizator> Asigurarea securităţii datelor presupune definirea drepturilor de acces ale utilizatorilor şi protecţia sistemului la accesul neautorizat. În acest sens asigurarea securităţii se realizează pe două niveluri şi anume: - nivelul 1 acordarea dreptului de acces la sistem; - nivelul 2 acordarea dreptului de acces la nivel de relaţii. Pentru conectarea utilizatorilor la sistem în majoritatea versiunilor de SQL se utilizează un nume de utilizator şi o parolă. Referitor la drepturile de acces la nivel de relaţie în sistemele multi-user trebuie precizat utilizatorul care a creat relaţia (proprietarul relaţiei). Fiecare utilizator are drepturi doar asupra propriilor relaţii, iar drepturi asupra unor relaţii create de alţi utilizatori pot fi acordate prin comanda GRANT şi pot fi retrase prin comanda REVOKE. Datele privind definirea bazei de date, utilizatorii şi drepturile de acces sunt stocate în dicţionarul de date şi sunt gestionate de către sistemul de gestiune a bazei de date (SGBDR). În cele ce urmează se va prezenta modul de realizare a celor două nivele de securitate în cadrul sistemului ORACLE. Nivelul 1 de securitate a datelor se realizează cu comanda: GRANT <autorizare, > TO <nume utilizator> [IDENTIFIED BY <parola>] unde <autorizare> poate fi: - DBA conferă utilizatorului dreptul de efectuare a oricărei operaţii asupra oricărei relaţii din baza de date; 76

77 CONNECT conferă utilizatorului dreptul de a a face interogări (SELECT) şi actualizări (INSERT, UPDATE, DELETE) asupra relaţiilor create de alţi utilizatori, însă nu permite utilizatorului să creeze relaţii (CREATE) sau să şteargă relaţii create de alţi utilizatori (DROP); - RESOURCE conferă utilizatorului drepturile ce rezultă din autorizarea CONNECT şi în plus dreptul de a crea relaţii (CREATE) şi de a şterge relaţii ce îi aparţin (DROP). Unui utilizator îi pot fi acordate mai multe tipuri de autorizări în cadrul unei singure comenzi GRANT. Parola stabilită pentru un utilizator poate fi modificată printr-o comandă GRANT ulterioară spre exemplu astfel: GRANT RESOURCE TO <nume utilizator> IDENTIFIED BY <noua parolă> Unui utilizator căruia i s-a acordat un tip de autorizare îi pot fi acordate şi alte tipuri de autorizare prin comenzi GRANT ulterioare. Retragerea autorizărilor acordate unui utilizator se realizează cu comanda: REVOKE <autorizare, > FROM <nume utilizator> - Nivelul 2 de securitate a datelor Pentru acordarea respectiv retragerea drepturilor de acces la relaţii se utilizează comenzile GRANT respectiv REVOKE cu următoarea sintaxă: GRANT ALL <drept de acces>, ON <nume relaţie> TO <nume utilizator> PUBLIC [WITH GRANT OPTION] respectiv REVOKE ALL <drept de acces>, ON <nume relaţie> FROM <nume utilizator> PUBLIC Privilegiile (drepturile de acces) pot fi acordate sau retrase de următoarele categorii de utilizatori: - utilizatorii cu nivel de autorizare DBA; - proprietarii relaţiilor; - utilizatorii autorizaţi cu opţiunea WITH GRANT OPTION. Prin specificarea PUBLIC acordarea respectiv retragerea drepturilor de acces se aplică tuturor utilizatorilor. Prin specificarea WITH GRANT OPTION, utilizatorul respectiv poate la rândul său să acorde aceleaşi drepturi sau mai puţine altor utilizatori. În ORACLE pot fi acordate următoarele drepturi de access asupra relaţiilor: SELECT, INSERT, DELETE, ALTER, UPDATE, CREATE,DROP pentru tabele şi indecşi. Drepturile de acces pot fi acordate asupra întregii relaţii, sau doar asupra anumitor atribute ale relaţiei. Exemple: Acordarea tuturor drepturilor de acces utilizatorilor Ionescu, Popescu, asupra relaţiei Persoane care aparţine utilizatorului Vasilescu se realizează prin comanda: GRANT ALL ON Vasilescu.Persoane TO Ionescu,Popescu Acordarea tuturor utilizatorilor, drepturile SLECT,INSERT,UPDATE asupra relaţiei Produse aparţinând utilizatorului Ionescu se realizează cu comanda: GRANT SELECT,INSERT,UPDATE ON Ionescu.Produse TO PUBLIC Acordarea privilegiilor SELECT,UPDATE numai asupra atributelor CodP, Denp din relaţia Produse aparţinând utilizatorului Ionescu, utilizatorului Popescu cu condiţia ca acesta la rândul său să poată acorda oricărui alt utilizator aceleaşi drepturi sau mai puţine, se realizează cu comanda: GRANT SELECT,UPDATE ON Ionescu.Produse(CodProdus,Denumire) 77

78 TO Popescu WITH GRANT OPTION Retragerea drepturilor de acces INSERT,DELETE asupra relaţiei Persoane aparţinând utilizatorului Vasilescu, utilizatorului Ionescu se realizează cu comanda: REVOKE INSERT,DELETE ON Vasilescu.Persoane FROM Ionescu Instrucţiuni pentru inserarea şi actualizarea datelor în tabele Inserarea datelor comanda INSERT are următoarea sintaxă: INSERT INTO <nume relatie> <nume vedere> [(<nume atribut> )] [VALUES] <lista valori> <subinterogare> Exemple: Fie tabela Persoane(Nrcrt,Nume,Prenume, Datan, Sexul, Adresa) INSERT INTO Persoane VALUES (1, Ionescu, Ion,05/23/82, M, Suceava ) (adaugă o înregistrare în tabela Persoane completând toate atributele) INSERT INTO Persoane(Nrcrt,Nume,Prenume) VALUES (2, Ionescu, Ana ) (adaugă o înregistrare în Persoane completând numai atributele Nrcrt,Nume, Prenume) Pentru a insera în tabela PersF(Nrcrt,Nume,Prenume) toate înregistrările din tabela Persoane pentru care Sexul= F se scrie comanda: INSERT INTO PersF(Nrcrt,Nume,Prenume) SELECT Nrcrt,Nume,Prenume FROM Persoane WHERE Sexul = F Actualizarea datelor comanda UPDATE are sintaxa: UPDATE <nume relaţie> <nume vedere> SET <nume atribut> = <expresie>, [WHERE <condiţie>] Condiţia din clauza WHERE defineşte tuplele care vor face obiectul actualizării. Clauza WHERE poate conţine şi o subinterogare. Exemple: UPDATE Persoane SET Nume = Popescu, Prenume = Ana Maria WHERE Nume = Ionescu AND Prenume = Ana (actualizează numele şi prenumele persoanei Ionescu Ana cu valorile Popescu respectiv Ana Maria). UPDATE Vanzari SET Pret = Pret*1.2 WHERE CodP IN (SELECT CodP FROM Facturi WHERE Numar = 120 AND Vanzari.Codc=Facturi.Codc ) (realizează majorarea preţului cu 20% pentru produsele vândute cu factura 120). Dacă în comanda UPDATE clauza WHERE este omisă, actualizarea se va efectua asupra tuturor tuplelor relaţiei. Ştergerea datelor comanda DELETE are sintaxa: DELETE FROM <nume relaţie> <nume vedere> [WHERE <condiţie>] unde <condiţie> poate fi o condiţie simplă, o expresie sau o subinterogare. Exemple: DELETE FROM Stocuri WHERE Cant = 0 (şterge toate înregistrările din tabela Stocuri pentru care câmpul Cant are valoarea 0). DELETE Oferte (şterge toate înregistrările din tabela Oferte). Comenzi pentru gestiunea tranzacţiilor Tranzacţia este o succesiune de instrucţiuni SQL grupate într-un bloc de instrucţiuni utilizate pentru actualizarea şi/sau interogarea datelor din baza de date. O tranzacţie se consideră 78

79 încheiată după realizarea tuturor operaţiilor pe care le conţine. Operaţiile conţinute într-o tranzacţie pot fi realizate efectiv în baza de date sau nu, fie automat de către sistem după fiecare operaţie, fie printr-o comandă explicită dată după o succesiune de operaţii. Astfel salvarea automată de către sistem a modificărilor este realizată prin comanda SET AUTOCOMMIT ON Dacă iniţial a fost specificată comanda SET AUTOCOMMIT OFF, salvarea modificărilor efectuate asupra datelor se realizează prin comanda COMMIT, iar abandonarea modificărilor se realizează prin comanda ROLLBACK. Blocul de operaţii ce definesc o tranzacţie poate fi delimitat de instrucţiunile : BEGIN TRANSACTION END TRANSACTION (pentru unele sisteme SGBDR cum ar fi dbase IV SQL aceste delimitări sunt obligatorii). Problemă rezolvată Se lansează în execuţie SQL Plus Oracle sub utilizatorul system (figura 47). În baza de date ORCL sub S.G.B.D. Oracle se crează utilizatorul U1 identificat prin parola PW1 şi i se acordă privilegiile CONNECT, RESOURCE (figura 48). Se închide sesiunea de lucru SQL Plus a utilizatorului system (cu instrucţiunea EXIT) şi se deschide o nouă sesiune de lucru SQL Plus pentru utilizatorul U1 (figura 49). Se crează tabela Produse şi se inserează două înregistrări (figura 50). Problemă propusă Se crează utilizatorul U2 identificat prin parola PW2. Sub utilizatorul U1 se crează tabelele bazei de date FurnizoriClienti şi se inserează date în fiecare tabelă. Sub utilizatorul U1 se acordă diverse privilegii asupra tabelelor, utilizatorului U2. Utilizatorul U1 retrage o serie de privilegii utilizatorului U2. 79

80 ORCL Figura 47. Lansare SQL Plus ORACLE pentru utilizatorul system Figura 48. Creare utilizator U1 şi acordare privilegii CONNECT, RESOURCE 80

81 ORCL Figura 49. Lansare SQL Plus ORACLE pentru utilizatorul U1 Figura 50. Creare tabelă Produse şi inserare două înregistrări 81

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila MS POWER POINT s.l.dr.ing.ciprian-bogdan Chirila chirila@cs.upt.ro http://www.cs.upt.ro/~chirila Pornire PowerPoint Pentru accesarea programului PowerPoint se parcurg următorii paşi: Clic pe butonul de

More information

Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice "Îmbunătăţirea proceselor şi activităţilor educaţionale în cadrul programelor de licenţă şi masterat în domeniul

More information

Baza de date: tabele, date. Componentele unei B.D.: tabele, constrangeri, relatii. Entitati ale unei B.D.: formulare, interogari, rapoarte

Baza de date: tabele, date. Componentele unei B.D.: tabele, constrangeri, relatii. Entitati ale unei B.D.: formulare, interogari, rapoarte 1. Introducere ~ Microsoft Access ~ Baze de Date Baza de date: tabele, date. Componentele unei B.D.: tabele, constrangeri, relatii. Entitati ale unei B.D.: formulare, interogari, rapoarte 2. Crearea unei

More information

Metrici LPR interfatare cu Barix Barionet 50 -

Metrici LPR interfatare cu Barix Barionet 50 - Metrici LPR interfatare cu Barix Barionet 50 - Barionet 50 este un lan controller produs de Barix, care poate fi folosit in combinatie cu Metrici LPR, pentru a deschide bariera atunci cand un numar de

More information

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N Pentru a putea vizualiza imaginile unei camere web IP conectată într-un router ZTE H218N sau H298N, este necesară activarea serviciului Dinamic DNS oferit de RCS&RDS, precum și efectuarea unor setări pe

More information

Versionare - GIT ALIN ZAMFIROIU

Versionare - GIT ALIN ZAMFIROIU Versionare - GIT ALIN ZAMFIROIU Controlul versiunilor - necesitate Caracterul colaborativ al proiectelor; Backup pentru codul scris Istoricul modificarilor Terminologie și concepte VCS Version Control

More information

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Public-Domain Esti liber sa distribui acest document

More information

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Proiect nr. 154/323 cod SMIS 4428 cofinanțat de prin Fondul European de Dezvoltare Regională Investiții pentru viitorul

More information

SGBD Access 2010: Query

SGBD Access 2010: Query SGBD Access 2010: Query Interogarea (Query) este un obiect ce permite vizualizarea informaţiilor obţinute prin selectarea şi prelucrarea datelor din unul sau mai multe tabele (sau interogări) Rezultatul

More information

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

Nume şi Apelativ prenume Adresa Număr telefon  Tip cont Dobânda Monetar iniţial final Enunt si descriere aplicatie. Se presupune ca o organizatie (firma, banca, etc.) trebuie sa trimita scrisori prin posta unui numar (n=500, 900,...) foarte mare de clienti pe care sa -i informeze cu diverse

More information

Creare baza de data Deschidem aplicaţia Microsoft Access. Lansarea în execuţie a programului se face urmând calea:

Creare baza de data Deschidem aplicaţia Microsoft Access. Lansarea în execuţie a programului se face urmând calea: Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor de tabel, înregistrare, câmp, tip de dată al câmpului, proprietăţi

More information

1 Vasile Violeta Ion Popescu Avram Maria Câmpuri în tabel

1 Vasile Violeta Ion Popescu Avram Maria Câmpuri în tabel ECDL MODULUL 5 Baze de date 1.1. Concepte generale privind bazele de date 1. Utilizarea aplicaţiei Access De ce foloisim bazele de date: Atunci când avem mai multe informaţii despre un anumit lucru si

More information

Itemi Sisteme de Operare

Itemi Sisteme de Operare Itemi Sisteme de Operare 1. Pentru a muta un dosar (folder) de pe partiţia C: pe partiţia D: folosim: a. New Folder b. Ctrl + C din bara de instrumente şi Copy; c. Ctrl + X şi Ctrl + V; d. Edit Paste;

More information

Proceduri stocate. Crearea procedurilor stocate. Varianta 1 În Management Studio se dă clic pe New Query ca în imaginea de mai jos: Fig.

Proceduri stocate. Crearea procedurilor stocate. Varianta 1 În Management Studio se dă clic pe New Query ca în imaginea de mai jos: Fig. Proceduri stocate Crearea procedurilor stocate. Varianta 1 În Management Studio se dă clic pe New Query ca în imaginea de mai jos: Fig. 1 Odată cu deschiderea editorului SQL, apare și bara de instrumente

More information

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: 9, La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - (ex: "9", "125", 1573" - se va scrie fara ghilimele) Parola: -

More information

Modalitǎţi de clasificare a datelor cantitative

Modalitǎţi de clasificare a datelor cantitative Modalitǎţi de clasificare a datelor cantitative Modul de stabilire a claselor determinarea pragurilor minime şi maxime ale fiecǎrei clase - determinǎ modul în care sunt atribuite valorile fiecǎrei clase

More information

Subiecte Clasa a VI-a

Subiecte Clasa a VI-a (40 de intrebari) Puteti folosi spatiile goale ca ciorna. Nu este de ajuns sa alegeti raspunsul corect pe brosura de subiecte, ele trebuie completate pe foaia de raspuns in dreptul numarului intrebarii

More information

Ministerul Educaţiei Naţionale şi Cercetării Ştiinţifice Olimpiada de Tehnologia Informaţiei etapa judeţeană 2 aprilie 2016

Ministerul Educaţiei Naţionale şi Cercetării Ştiinţifice Olimpiada de Tehnologia Informaţiei etapa judeţeană 2 aprilie 2016 Subiect - Proba proiect 100 puncte GOOD FOOD Notă: Toate resursele le găsiţi în folder-ul Resurse aflat pe desktop. Creați un folder cu denumirea X, în care X este ID-ul de concurs și salvați în folder-ul

More information

Reţele Neuronale Artificiale în MATLAB

Reţele Neuronale Artificiale în MATLAB Reţele Neuronale Artificiale în MATLAB Programul MATLAB dispune de o colecţie de funcţii şi interfeţe grafice, destinate lucrului cu Reţele Neuronale Artificiale, grupate sub numele de Neural Network Toolbox.

More information

PROIECT. La Baze de date. Evidența activității pentru o firmă IT. Îndrumător: ș. l. dr. ing. Mirela Danubianu. Efectuat de: Grigoriev Sergiu gr.

PROIECT. La Baze de date. Evidența activității pentru o firmă IT. Îndrumător: ș. l. dr. ing. Mirela Danubianu. Efectuat de: Grigoriev Sergiu gr. PROIECT La Baze de date Evidența activității pentru o firmă IT Îndrumător: ș. l. dr. ing. Mirela Danubianu Efectuat de: Grigoriev Sergiu gr. 1131B Suceava 2011 Cuprins 1. DESCRIERE 3 2. MODELAREA CONCEPTUALĂ

More information

Update firmware aparat foto

Update firmware aparat foto Update firmware aparat foto Mulţumim că aţi ales un produs Nikon. Acest ghid descrie cum să efectuaţi acest update de firmware. Dacă nu aveţi încredere că puteţi realiza acest update cu succes, acesta

More information

APLICAŢIE INFORMATICĂ PENTRU PREGĂTIREA MISIUNILOR DE NIVEL TACTIC

APLICAŢIE INFORMATICĂ PENTRU PREGĂTIREA MISIUNILOR DE NIVEL TACTIC APLICAŢIE INFORMATICĂ PENTRU PREGĂTIREA MISIUNILOR DE NIVEL TACTIC Asist.univ.drd. Romana OANCEA Conf.univ.dr.ing. Ghiţă BÂRSAN Academia Forţelor Terestre Nicolae Bălcescu Sibiu Abstract The paper describes

More information

Procesarea Imaginilor

Procesarea Imaginilor Procesarea Imaginilor Curs 11 Extragerea informańiei 3D prin stereoviziune Principiile Stereoviziunii Pentru observarea lumii reale avem nevoie de informańie 3D Într-o imagine avem doar două dimensiuni

More information

Excel Advanced. Curriculum. Școala Informală de IT. Educație Informală S.A.

Excel Advanced. Curriculum. Școala Informală de IT. Educație Informală S.A. Excel Advanced Curriculum Școala Informală de IT Tel: +4.0744.679.530 Web: www.scoalainformala.ro / www.informalschool.com E-mail: info@scoalainformala.ro Cuprins 1. Funcții Excel pentru avansați 2. Alte

More information

Documentaţie Tehnică

Documentaţie Tehnică Documentaţie Tehnică Verificare TVA API Ultima actualizare: 27 Aprilie 2018 www.verificaretva.ro 021-310.67.91 / 92 info@verificaretva.ro Cuprins 1. Cum funcţionează?... 3 2. Fluxul de date... 3 3. Metoda

More information

Modulul 5 Baze de date

Modulul 5 Baze de date Scopul modulului Modulul 5, Baze de date, solicită din partea cititorului înţelegerea noţiunilor fundamentale despre bazele de date şi demonstrarea abilităţii de a folosi o bază de date pe un computer

More information

CERERI SELECT PE O TABELA

CERERI SELECT PE O TABELA SQL - 1 CERERI SELECT PE O TABELA 1 STUD MATR NUME AN GRUPA DATAN LOC TUTOR PUNCTAJ CODS ---- ------- -- ------ --------- ---------- ----- ------- ---- 1456 GEORGE 4 1141A 12-MAR-82 BUCURESTI 2890 11 1325

More information

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M ) FLEXIMARK FCC din oțel inoxidabil este un sistem de marcare personalizată în relief pentru cabluri și componente, pentru medii dure, fiind rezistent la acizi și la coroziune. Informații Included in FLEXIMARK

More information

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban Reflexia şi refracţia luminii. Aplicaţii. Sumar 1. Indicele de refracţie al unui mediu 2. Reflexia şi refracţia luminii. Legi. 3. Reflexia totală 4. Oglinda plană 5. Reflexia şi refracţia luminii în natură

More information

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin Structura și Organizarea Calculatoarelor Titular: BĂRBULESCU Lucian-Florentin Chapter 3 ADUNAREA ȘI SCĂDEREA NUMERELOR BINARE CU SEMN CONȚINUT Adunarea FXP în cod direct Sumator FXP în cod direct Scăderea

More information

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows Ghid identificare versiune AWP, instalare AWP 4.5.4 şi verificare importare certificat în Store-ul de Windows Data: 28.11.14 Versiune: V1.1 Nume fişiser: Ghid identificare versiune AWP, instalare AWP 4-5-4

More information

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router Pentru a putea vizualiza imaginile unei camere web IP conectată într-un echipament Huawei HG8121H, este necesară activarea serviciului Dinamic DNS oferit de RCS&RDS, precum și efectuarea unor setări pe

More information

MICROSOFT ACCESS 2007 (DE CĂUTAT???)

MICROSOFT ACCESS 2007 (DE CĂUTAT???) Access 2007 Modul A Pagina 1 MICROSOFT ACCESS 2007 (DE CĂUTAT???) 1. CONCEPTE GENERALE PRIVIND BAZELE DE DATE Evoluţia diferitelor metode şi tehnici de organizare a datelor pe suporturi de memorie externă

More information

Lucrarea nr.1. Crearea unui document Word

Lucrarea nr.1. Crearea unui document Word Lucrarea nr.1 Crearea unui document Word Scopul lucrării Lucrarea are drept scop inițiere și familiarizarea studenților cu interfața editorului de text Microsoft Word 2007. Modul de lucru Word este un

More information

Baze de date distribuite și mobile

Baze de date distribuite și mobile Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Baze de date distribuite și mobile Lect.dr. Adrian Runceanu Curs 3 Model fizic şi model

More information

Universitatea George Bariţiu, Braşov

Universitatea George Bariţiu, Braşov LUCRUL CU BAZE DE DATE ÎN JAVA Lect.univ.dr.ing. IOAN-GHEORGHE RAŢIU Lect.univ. NICOLETA DAVID Universitatea George Bariţiu, Braşov Rezumat O bază de date reprezintă o modalitate de stocare a unor informaţii

More information

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC) Semnale şi sisteme Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC) http://shannon.etc.upt.ro/teaching/ssist/ 1 OBIECTIVELE CURSULUI Disciplina îşi propune să familiarizeze

More information

Figura x.1 Ecranul de pornire al mediului de dezvoltare

Figura x.1 Ecranul de pornire al mediului de dezvoltare x. Mediul de dezvoltare MICROSOFT VISUAL C++ În cadrul acestui capitol vom prezenta Microsoft Visual C++, din cadrul suitei Microsoft Visual Studio 2012, care este un mediu de programare care suportă dezvoltarea

More information

Auditul financiar la IMM-uri: de la limitare la oportunitate

Auditul financiar la IMM-uri: de la limitare la oportunitate Auditul financiar la IMM-uri: de la limitare la oportunitate 3 noiembrie 2017 Clemente Kiss KPMG in Romania Agenda Ce este un audit la un IMM? Comparatie: audit/revizuire/compilare Diferente: audit/revizuire/compilare

More information

Ce este o BAZA DE DATE?

Ce este o BAZA DE DATE? Ce este o BAZA DE DATE? In sens larg un sistem proiectat pentru a oferi un mecanism organizat, capabil sa stocheze, sa actualizeze si sa regaseasca informatia Exemplu: o biblioteca Noţiunea de bază de

More information

Mecanismul de decontare a cererilor de plata

Mecanismul de decontare a cererilor de plata Mecanismul de decontare a cererilor de plata Autoritatea de Management pentru Programul Operaţional Sectorial Creşterea Competitivităţii Economice (POS CCE) Ministerul Fondurilor Europene - Iunie - iulie

More information

INTEROGĂRI ÎN SQL SERVER

INTEROGĂRI ÎN SQL SERVER INTEROGĂRI ÎN SQL SERVER Principala operaţie efectuată într-o bază de date este operaţia de extragere a datelor, care se realizează cu ajutorul unei clauze SELECT. SELECT Clauza SELECT are o sintaxă foarte

More information

MICROSOFT OFFICE ACCESS

MICROSOFT OFFICE ACCESS MICROSOFT OFFICE ACCESS NoŃiuni introductive despre baze de date Definirea termenilor O bază de date reprezintă o colecńie de date înrudite, care se referă la un anumit subiect sau obiectiv, împreuna cu

More information

ORARE DE EXECU}IE. Opțiunea se găseşte în MENTOR > Alte module > AdminJOBs > Orare de execuție.

ORARE DE EXECU}IE. Opțiunea se găseşte în MENTOR > Alte module > AdminJOBs > Orare de execuție. ORARE DE EXECU}IE Opțiunea se găseşte în MENTOR > Alte module > AdminJOBs > Orare de execuție. În funcție de setările fiecărui orar în parte, acesta produce activarea unei acțiuni pe serverul de Oracle.

More information

[{CYCLE NOCYCLE}] [{CACHE

[{CYCLE NOCYCLE}] [{CACHE Laborator 10 1. Secvenţe Secvenţa este un obiect al bazei de date ce permite generarea de întregi unici pentru a fi folosiţi ca valori pentru cheia primară sau coloane numerice unice. Secvenţele sunt independente

More information

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962) ARBORI AVL (denumiti dupa Adelson-Velskii si Landis, 1962) Georgy Maximovich Adelson-Velsky (Russian: Гео ргий Макси мович Адельсо н- Ве льский; name is sometimes transliterated as Georgii Adelson-Velskii)

More information

X-Fit S Manual de utilizare

X-Fit S Manual de utilizare X-Fit S Manual de utilizare Compatibilitate Acest produs este compatibil doar cu dispozitivele ce au următoarele specificații: ios: Versiune 7.0 sau mai nouă, Bluetooth 4.0 Android: Versiune 4.3 sau mai

More information

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; }

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; } Arbori Arborii, ca şi listele, sunt structuri dinamice. Elementele structurale ale unui arbore sunt noduri şi arce orientate care unesc nodurile. Deci, în fond, un arbore este un graf orientat degenerat.

More information

Laborator 1. Programare declarativă. Programare logică. Prolog. SWI-Prolog

Laborator 1. Programare declarativă. Programare logică. Prolog. SWI-Prolog Laborator 1 Programare declarativă O paradigmă de programare în care controlul fluxului de execuție este lăsat la latitudinea implementării limbajului, spre deosebire de programarea imperativă în care

More information

Mai bine. Pentru c putem.

Mai bine. Pentru c putem. 1 CUPRINS: 1. SUMAR APLICAŢIE...... 3 1.1 Introducere... 3 1.2 Tipul de aplicaţie... 3 2. SPECIFICAŢII FUNCŢIONALE... 3 3. INSTALARE... 3 3.1 Introducere... 3 3.2 Ce trebuie să verificaţi înainte de a

More information

Colegiul Național Calistrat Hogaș Piatra-Neamț LIMBAJUL SQL

Colegiul Național Calistrat Hogaș Piatra-Neamț LIMBAJUL SQL LIMBAJUL SQL Prezentare generală SQL (Structured Query Language) este în prezent, unul din cele mai puternice limbaje structurate pentru interogarea bazelor de date relaţionale. Este un limbaj neprocedural

More information

Actualizarea firmware-ului pentru aparatul foto digital SLR

Actualizarea firmware-ului pentru aparatul foto digital SLR Actualizarea firmware-ului pentru aparatul foto digital SLR Vă mulţumim că aţi ales un produs Nikon. Acest ghid descrie cum să realizaţi actualizarea firmwareului. Dacă nu sunteţi sigur că puteţi realiza

More information

Managementul referinţelor cu

Managementul referinţelor cu TUTORIALE DE CULTURA INFORMAŢIEI Citarea surselor de informare cu instrumente software Managementul referinţelor cu Bibliotecar Lenuţa Ursachi PE SCURT Este gratuit Poţi adăuga fişiere PDF Poţi organiza,

More information

GHID DE TERMENI MEDIA

GHID DE TERMENI MEDIA GHID DE TERMENI MEDIA Definitii si explicatii 1. Target Group si Universe Target Group - grupul demografic care a fost identificat ca fiind grupul cheie de consumatori ai unui brand. Toate activitatile

More information

MANAGEMENTUL CALITĂȚII - MC. Proiect 5 Procedura documentată pentru procesul ales

MANAGEMENTUL CALITĂȚII - MC. Proiect 5 Procedura documentată pentru procesul ales MANAGEMENTUL CALITĂȚII - MC Proiect 5 Procedura documentată pentru procesul ales CUPRINS Procedura documentată Generalități Exemple de proceduri documentate Alegerea procesului pentru realizarea procedurii

More information

R O M Â N I A CURTEA CONSTITUŢIONALĂ

R O M Â N I A CURTEA CONSTITUŢIONALĂ R O M Â N I A CURTEA CONSTITUŢIONALĂ Palatul Parlamentului Calea 13 Septembrie nr. 2, Intrarea B1, Sectorul 5, 050725 Bucureşti, România Telefon: (+40-21) 312 34 84; 335 62 09 Fax: (+40-21) 312 43 59;

More information

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date.

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date. 9. Memoria Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date. Primul nivel conține memorie de program cache (L1P) și memorie de date cache (L1D). Al doilea

More information

UTILIZAREA FOILOR DE CALCUL TABELAR - EXCEL

UTILIZAREA FOILOR DE CALCUL TABELAR - EXCEL UTILIZAREA FOILOR DE CALCUL TABELAR - EXCEL 1. Deschiderea aplicaţiei Excel - Start Programs Microsoft Excel; - Dublu clic pe pictograma de pe ecran sub care scrie Microsoft Excel; Pe ecranul monitorului

More information

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC Anul II Nr. 7 aprilie 2013 ISSN 2285 6560 Referent ştiinţific Lector univ. dr. Claudiu Ionuţ Popîrlan Facultatea de Ştiinţe Exacte Universitatea din

More information

Ghid de pregătire pentru certificarea IC3 Global Standard 4

Ghid de pregătire pentru certificarea IC3 Global Standard 4 Ghid de pregătire pentru certificarea IC3 Global Standard 4 Aplicații cheie Lecția 11: Microsoft Access CCI Learning Solutions Inc. 1 Obiectivele lecției Când veţi termina lecţia, veţi ști: ce este o bază

More information

Ghid pentru configurarea şi utilizarea aplicaţiei clicksign Demo

Ghid pentru configurarea şi utilizarea aplicaţiei clicksign Demo Ghid pentru configurarea şi utilizarea aplicaţiei clicksign Demo 2.6.9.223 Cuprins 1 Cadru general...2 2 Obţinerea unui certificat digital...3 3 Configurarea aplicaţiei clicksign...5 4 Utilizarea aplicaţiei

More information

Proiectarea bazelor de date # 11. PL/SQL Funcții în PL/SQL (partea a II-a) Adrian Runceanu

Proiectarea bazelor de date # 11. PL/SQL Funcții în PL/SQL (partea a II-a) Adrian Runceanu Proiectarea bazelor de date # 11 PL/SQL Funcții în PL/SQL (partea a II-a) 2018 Adrian Runceanu www.runceanu.ro/adrian Curs 11 Funcţii în PL/SQL (partea II) Proiectarea bazelor de date 2 Cuprins Funcţii

More information

GESTIUNEA BAZELOR DE DATE

GESTIUNEA BAZELOR DE DATE GESTIUNEA BAZELOR DE DATE CONŢINUTUL TEMATIC AL DISCIPLINEI BAZE DE DATE ŞI SISTEME DE GESTIUNE A BAZELOR DE DATE Conceptul de bază de date Baze de date: noi funcţionalităţi Tipuri de baze de date Sisteme

More information

5.1 Definirea datelor în SQL

5.1 Definirea datelor în SQL SQL Acronim pentru Structured Query Language Dezvoltat pentru sistemul de gestiune a bazelor de date System R, creat de IBM Research Laboratory, San Jose, California, la sfârşitul anilor 70. SQL a fost

More information

Funcţii grup şi clauzele GROUP BY, HAVING. Operatorii ROLLUP şi CUBE.

Funcţii grup şi clauzele GROUP BY, HAVING. Operatorii ROLLUP şi CUBE. Baze de date-anul 2 Laborator 4 SQL Funcţii grup şi clauzele GROUP BY, HAVING. Operatorii ROLLUP şi CUBE. I. [Funcţii grup şi clauza GROUP BY] Clauza GROUP BY este utilizată pentru a diviza liniile unui

More information

Laboratorul 3 Lucrul cu baze de date relaționate în Visual C#.NET

Laboratorul 3 Lucrul cu baze de date relaționate în Visual C#.NET Laboratorul 3 Lucrul cu baze de date relaționate în Visual C#.NET Ce ne propunem astăzi? În acest laborator ne propunem să implementăm în Visual C#.NET o aplicație destinată unui cabinet medical de radiologie,

More information

Strategii de optimizare a performantelor unei aplicatii client/server

Strategii de optimizare a performantelor unei aplicatii client/server Revista Informatica Economica, nr. 2 (18)/2001 55 Strategii de optimizare a performantelor unei aplicatii client/server Prof.dr. Florin BICA, lect. Emanuela - Mariana CHICHEA Universitatea din Craiova,

More information

Metoda de programare BACKTRACKING

Metoda de programare BACKTRACKING Metoda de programare BACKTRACKING Sumar 1. Competenţe............................................ 3 2. Descrierea generală a metodei............................. 4 3......................... 7 4. Probleme..............................................

More information

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC Anul III Nr. 21 iunie 2014 ISSN 2285 6560 Referent ştiinţific Lector univ. dr. Claudiu Ionuţ Popîrlan Facultatea de Ştiinţe Exacte Universitatea din

More information

1. Creaţi un nou proiect de tip Windows Forms Application, cu numele MdiExample.

1. Creaţi un nou proiect de tip Windows Forms Application, cu numele MdiExample. Aplicaţia MdiExample Aplicaţia implementează: Deschiderea şi închiderea ferestrelor child. Minimizarea şi maximizarea ferestrelor. Aranjarea ferestrelor. Tratarea mesajului de atenţionare la ieşirea din

More information

Ce pot face pe hi5? Organizare si facilitati. Pagina de Home

Ce pot face pe hi5? Organizare si facilitati. Pagina de Home Ce este Hi5!? hi5 este un website social care, în decursul anului 2007, a fost unul din cele 25 cele mai vizitate site-uri de pe Internet. Compania a fost fondată în 2003 iar pana in anul 2007 a ajuns

More information

Propuneri pentru teme de licență

Propuneri pentru teme de licență Propuneri pentru teme de licență Departament Automatizări Eaton România Instalație de pompare cu rotire în funcție de timpul de funcționare Tablou electric cu 1 pompă pilot + 3 pompe mari, cu rotirea lor

More information

Lucrarea de laborator nr. 4

Lucrarea de laborator nr. 4 Metode merice - Lucrarea de laborator 4 Lucrarea de laborator nr. 4 I. Scopul lucrării Elemente de programare în MAPLE II. III. Conţinutul lucrării 1. Atribuirea. Decizia. Structuri repetitive. 2. Proceduri

More information

Baze de date - Lucrare de laborator 3 -

Baze de date - Lucrare de laborator 3 - Baze de date - Lucrare de laborator 3 - PROIECTAREA BAZELOR DE DATE RELATIONALE 1. NOTIUNI TEORETICE Proiectarea unei baze de date consta din proiectarea schemei conceptuale (logice) si fizice a acesteia,

More information

INSTRUMENTE DE MARKETING ÎN PRACTICĂ:

INSTRUMENTE DE MARKETING ÎN PRACTICĂ: INSTRUMENTE DE MARKETING ÎN PRACTICĂ: Marketing prin Google CUM VĂ AJUTĂ ACEST CURS? Este un curs util tuturor celor implicați în coordonarea sau dezvoltarea de campanii de marketingși comunicare online.

More information

Proceduri de analizã a datelor

Proceduri de analizã a datelor Proceduri de analizã a datelor Liste Prin listã se întelege o serie de linii succesive într-o foaie de calcul, fiecare coloanã din listã continând date cu aceeasi semnificatie logicã. De exemplu, o listã

More information

CERERI SELECT PE MAI MULTE TABELE

CERERI SELECT PE MAI MULTE TABELE SQL - 2 CERERI SELECT PE MAI MULTE TABELE 1 STUD MATR NUME AN GRUPA DATAN LOC TUTOR PUNCTAJ CODS ---- ------- -- ------ --------- ---------- ----- ------- ---- 1456 GEORGE 4 1141A 12-MAR-82 BUCURESTI 2890

More information

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Proiect nr. 154/323 cod SMIS 4428 cofinanțat de prin Fondul European de Dezvoltare Regională Investiții pentru viitorul

More information

DECLARAȚIE DE PERFORMANȚĂ Nr. 101 conform Regulamentului produselor pentru construcții UE 305/2011/UE

DECLARAȚIE DE PERFORMANȚĂ Nr. 101 conform Regulamentului produselor pentru construcții UE 305/2011/UE S.C. SWING TRADE S.R.L. Sediu social: Sovata, str. Principala, nr. 72, judetul Mures C.U.I. RO 9866443 Nr.Reg.Com.: J 26/690/1997 Capital social: 460,200 lei DECLARAȚIE DE PERFORMANȚĂ Nr. 101 conform Regulamentului

More information

Interogarea (query), este operaţia prin care se obţin datele

Interogarea (query), este operaţia prin care se obţin datele CAPITOLUL 3 INTEROGAREA BAZELOR DE DATE Interogarea (query), este operaţia prin care se obţin datele dorite dintr-o bază de date, selectate conform unui anumit criteriu (condiţie). Întrucât operaţia de

More information

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET CAIETUL DE SARCINI Organizare evenimente VS/2014/0442 Euro network supporting innovation for green jobs GREENET Str. Dem. I. Dobrescu, nr. 2-4, Sector 1, CAIET DE SARCINI Obiectul licitaţiei: Kick off,

More information

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm Preparatory Problems 1Se dau punctele coliniare A, B, C, D în această ordine aî AB 4 cm, AC cm, BD 15cm a) calculați lungimile segmentelor BC, CD, AD b) determinați distanța dintre mijloacele segmentelor

More information

După efectuarea operaţiilor dorite, calculatorul trebuie închis. Pentru oprirea corectă a sistemului de operare va trebui să folosim butonul

După efectuarea operaţiilor dorite, calculatorul trebuie închis. Pentru oprirea corectă a sistemului de operare va trebui să folosim butonul Pagina 1 1. SISTEMUL DE OPERARE WINDOWS 1.1. Pornirea calculatorului Orice calculator are pe cutie cel puţin un buton (de pornire) şi, eventual, unul de restartare în caz de blocare a calculatorului. Pentru

More information

Subinterogari SELECT salariul FROM angajaţi WHERE nume= Ionescu SELECT nume, prenume FROM angajaţi WHERE salariul>s

Subinterogari SELECT salariul FROM angajaţi WHERE nume= Ionescu SELECT nume, prenume FROM angajaţi WHERE salariul>s Subinterogari Sunteţi patronul unei firme. În ultima perioadă unul dintre salariaţii firmei, pe nume Ionescu, s-a remarcat în mod deosebit prin activitatea sa. Aţi decis de aceea să îi măriţi salariul

More information

FORȚA Femei Ocupate, Resursă pentru o Țară Activă POSDRU/144/6.3/S/ Suport de curs OPERATOR INTRODUCERE, VALIDARE SI PRELUCRARE DATE MODULUL 5

FORȚA Femei Ocupate, Resursă pentru o Țară Activă POSDRU/144/6.3/S/ Suport de curs OPERATOR INTRODUCERE, VALIDARE SI PRELUCRARE DATE MODULUL 5 FORȚA Femei Ocupate, Resursă pentru o Țară Activă POSDRU/144/6.3/S/128914 Suport de curs OPERATOR INTRODUCERE, VALIDARE SI PRELUCRARE DATE MODULUL 5 CALCUL TABELAR FUNDATIA PENTRU FORMARE PROFESIONALA

More information

Capitolul IF.02. Structurarea bazelor de date

Capitolul IF.02. Structurarea bazelor de date Capitolul Cuvinte-cheie: Normalizare, prima formă normală, a doua formă normală, a treia formă normală, cheie candidată, relatie 1 la 1, relație 1 la n, relație m la n IA.02.1. Scurt istoric În anii '60,

More information

Proiectarea bazelor de date. PL/SQL Înregistrări și Colecții # 13. Adrian Runceanu

Proiectarea bazelor de date. PL/SQL Înregistrări și Colecții # 13. Adrian Runceanu Proiectarea bazelor de date # 13 PL/SQL Înregistrări și Colecții 2016 Adrian Runceanu www.runceanu.ro/adrian Curs 13 Înregistrări și Colecții Proiectarea bazelor de date 2 Înregistrări și Colecții în PL/SQL

More information

O bază de date (database), este o colecţie de date creată şi

O bază de date (database), este o colecţie de date creată şi CAPITOLUL 1 NOŢIUNI INTRODUCTIVE PRIVIND SISTEMELE DE GESTIUNE A BAZELOR DE DATE O bază de date (database), este o colecţie de date creată şi menţinută computerizat, care permite operaţii de inserare,

More information

Programarea rapidă a aplicaţiilor pentru baze de date relaţionale. Lorentz JÄNTSCHI

Programarea rapidă a aplicaţiilor pentru baze de date relaţionale. Lorentz JÄNTSCHI Programarea rapidă a aplicaţiilor pentru baze de date relaţionale Lorentz JÄNTSCHI Mădălina VĂLEANU Sorana BOLBOACĂ AcademicDirect & Academic Pres 2006 Programarea rapidă a aplicaţiilor pentru baze de

More information

COMUNICAȚII INFORMATIZARE

COMUNICAȚII INFORMATIZARE COMUNICAȚII INFORMATIZARE 120 Migrare servicii telefonie la Vodafone S-a asigurat suportul tehnic și s-a colaborat cu echipele Vodafone la portarea numerelor UPT și migrarea infrastructuri: 1200 linii

More information

Proiect de practică. Gestionarea unei librării online

Proiect de practică. Gestionarea unei librării online ACADEMIA DE STUDII ECONOMICE Facultatea: Cibernetică, Statistică şi Informatică Economică Specializarea: Informatică economică Proiect de practică Studenți: NASTASĂ Emanuel Victor MUDRAG Sorina Andrada

More information

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii www.pwc.com/ro Aspecte controversate în Procedura Insolvenţei şi posibile soluţii 1 Perioada de observaţie - Vânzarea de stocuri aduse în garanţie, în cursul normal al activității - Tratamentul leasingului

More information

Tehnologia OLAP. Prep. Daniela-Ioana SANDU, prep. Elena POSDARIE Catedra de Informatica Economica, A.S.E. Bucuresti

Tehnologia OLAP. Prep. Daniela-Ioana SANDU, prep. Elena POSDARIE Catedra de Informatica Economica, A.S.E. Bucuresti Revista Informnatica Economica, nr. 4 (24)/2002 55 Tehnologia OLAP Prep. Daniela-Ioana SANDU, prep. Elena POSDARIE Catedra de Informatica Economica, A.S.E. Bucuresti OLAP enables analysts, managers and

More information

Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor LUCRARE DE LICENŢĂ

Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor LUCRARE DE LICENŢĂ Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor LUCRARE DE LICENŢĂ Sistem Object Relational Mapping in Java Coordonator

More information

MODULUL 4.1 BAZELE UTILIZĂRII APLICAŢIILOR DE CALCUL TABELAR; APLICAŢIA CALC DIN OPENOFFICE.

MODULUL 4.1 BAZELE UTILIZĂRII APLICAŢIILOR DE CALCUL TABELAR; APLICAŢIA CALC DIN OPENOFFICE. MODULUL 4.1 BAZELE UTILIZĂRII APLICAŢIILOR DE CALCUL TABELAR; APLICAŢIA CALC DIN OPENOFFICE. 1 CUPRINS 4. CALCUL TABELAR CU OPENOFFICE.ORG CALC.----------------------------------------------- 3 4.1. Operaţii

More information

UNIVERSITATEA DIN CRAIOVA FACULTATEA DE ELECTROMECANICĂ CATEDRA DE ACŢIONĂRI ELECTRICE. Şef lucrări dr. ing. Cătălin CONSTANTINESCU BAZE DE DATE

UNIVERSITATEA DIN CRAIOVA FACULTATEA DE ELECTROMECANICĂ CATEDRA DE ACŢIONĂRI ELECTRICE. Şef lucrări dr. ing. Cătălin CONSTANTINESCU BAZE DE DATE UNIVERSITATEA DIN CRAIOVA FACULTATEA DE ELECTROMECANICĂ CATEDRA DE ACŢIONĂRI ELECTRICE Şef lucrări dr. ing. Cătălin CONSTANTINESCU BAZE DE DATE Electromecanică - Frecvenţă redusă - Suport teoretic - 2006-2007

More information

INTRODUCERE... 2 SCENARIUL... 3 ERD (DIAGRAMA ENTITATE RELAȚIE)... 6 MAPARE... 8 REALIZARE APLICAȚIE BIBLIOGRAFIE...

INTRODUCERE... 2 SCENARIUL... 3 ERD (DIAGRAMA ENTITATE RELAȚIE)... 6 MAPARE... 8 REALIZARE APLICAȚIE BIBLIOGRAFIE... CUPRINS INTRODUCERE... 2 SCENARIUL... 3 ERD (DIAGRAMA ENTITATE RELAȚIE)... 6 MAPARE... 8 REALIZARE APLICAȚIE... 10 BIBLIOGRAFIE... 17 INTRODUCERE Aplicația TEATRU este un produs soft care poate fi utilizat

More information

Modele de date utilizate în bazele de date pentru prelucrari grafice

Modele de date utilizate în bazele de date pentru prelucrari grafice 64 Revista Informatica Economica, nr. 7/1998 Modele de date utilizate în bazele de date pentru prelucrari grafice Sef lucrari dr.ing. Marius Dorian ZAHARIA Universitatea POLITEHNICA Bucuresti Lucrarea

More information

Lucrarea Nr.1. Sisteme de operare. Generalitati

Lucrarea Nr.1. Sisteme de operare. Generalitati Lucrarea Nr.1 Sisteme de operare. Generalitati Scopul lucrarii Lucrarea îsi propune familiarizarea studentilor cu sistemele de operare disponibile în laborator, respectiv acele sisteme de operare cu ajutorul

More information

BAZE DE DATE LECTOR DR. ADRIAN RUNCEANU

BAZE DE DATE LECTOR DR. ADRIAN RUNCEANU Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu BAZE DE DATE LECTOR DR. ADRIAN RUNCEANU 2 Curs 1 Noţiuni introductive despre teoria

More information