luni, 7 octombrie 2019

TABELELE - PRiNCiPALELE OBIECTE A LE UNEI B AZE DE DATE

TABELELE - PRiNCiPALELE OBIECTE A LE UNEI B AZE DE DATE După studierea acestui capitol, veţi fi capabili să: • creaţi tabele; • modificaţi structura unui tabel; • stabiliţi proprietăţi pentru cîmpurile tabelului; • creaţi reguli de validare a datelor care urmează a fi introduse în tabel; • elaboraţi şabloane de restricţionare a caracterelor ce urmează a fi introduse într-un cîmp al tabelului; • stabiliţi relaţii între două tabele; • introduceţi date într-un tabel; • editaţi înregistrările unui tabel; • modificaţi aspectul unui tabel; • utilizaţi expresii pentru crearea regulilor de validare a datelor. 8.1. Crearea tabelelor Am menţionat deja că entităţile unei baze de date Access sînt tabelele. Cu ajutorul lor se pot crea celelalte obiecte ale bazei de date: interogări, formulare, rapoarte etc. Prin urmare, o bază de date relaţională nu are sens fără existenţa tabelelor. 8.1.1. Crearea structurii unui tabel Prin structura unui tabel se subînţelege informaţia care descrie cîmpurile tabelului: numărul lor, tipul şi proprietăţile fiecărui cîmp, cîmpurile care constituie cheia primară etc. Pentru a defini structura unui tabel: 1. Selectăm pictograma Tables de pe bara de obiecte Objects a ferestrei bazei de date (de fapt, la crearea sau deschiderea unei baze de date această pictogramă este automat selectată). În zona de conţinut a ferestrei apar opţiunile: - Create table in Design view (crearea tabelului în regim de proiectare); - Create table by using wizard (crearea tabelului cu ajutorul unui program de asistenţă); - Create table by entering data (crearea tabelului prin introducerea directă a datelor). Executăm un dublu-clic pe prima opţiune. O b se rv a ţie : Pasul 1 este echivalent cu selectarea New Design view. 2. Apare fereastra de dialog de tip Table cu numele implicit Table1 (fig. 8.1). Ea este formată din două zone: 76 a) zona pentru descrierea structurii documentului; b) zona descrierii proprietăţilor cîmpului selectat din prima zonă (Field Properties). Zona pentru descrierea structurii documentului este divizată în trei coloane: - Field Name (identificatorul cîmpului); - Data Type (tipul cîmpului, adică al valorilor lui); - Description (descrierea cîmpului). Astfel, pentru fiecare cîmp al tabelului ce urmează a fi creat se precizează identificatorul, tipul şi descrierea cîmpului. Id e n tifica to ru l cîm p u lu i poate conţine diferite caractere, în afară de semnele „ , „!” „[”, „]”, spaţiul de debut şi caracterele care nu sînt vizibile (de exemplu, returul de car). Lungimea identificatorului cîmpului nu poate fi mai mare decît 64 de caractere. T ip u rile c îm p u rilo r acceptate de Access sînt prezentate în următorul tabel: Fig. 8.1 Denumirea tipului Descrierea valorilor tipului Text Şiruri de caractere alfanumerice. Pînă la 255 de caractere Memo Texte mari. Pînă la 64 Ko Number Numere Date/time Date calendaristice Currency Valori monetare AutoNumber Numerele naturale 1, 2, 3, ... inserate în ordine şi în mod automat la adăugarea unei înregistrări Yes/No Valorile Yes sau No OLE Object Imagini sau sunete Hiperlink Adrese Web D escrierea cîm pu lu i (nu este obligatorie) poate conţine note explicative referitor la cîmp. Proprietăţile cîmpurilor vor fi descrise mai tîrziu. 3. După ce am definit cîmpurile tabelului, stabilim o cheie primară pentru tabel. Cu acest scop selectăm cîmpul necesar (ale cărui valori nu se vor repeta), apoi alegem comanda PrimaryKey din meniul flotant al cîmpului (sau executăm un clic pe instrumentul [JE de pe bara cu instrumente Access). în tabelul din figura 8.1, cîmpul Cod_profa fost 77 ales drept cheie primară. Atunci cînd nu definim o cheie primară, sistemul Access va sugera stabilirea unei astfel de chei imediat după salvarea tabelului. Dacă utilizatorul va accepta sugestia, atunci sistemul va stabili drept cheie primară primul cîmp de tip A u to N u m b er sau (dacă tabelul nu conţine un astfel de cîmp) va crea un astfel de cîmp (cu numele implicit ID ). 4. Salvăm tabelul selectînd comanda Save din meniul File. Apare fereastra Save As în care scriem numele tabelului. Exerciţiu: Observaţi denumirile şi tipurile cîmpurilor tabelului din figu ra 8 .1 . Creaţi similar tabelul E levi al bazei de date Liceu, descrisă în capitolul precedent. 8.1.2. Proprietăţile cîmpurilor tabelului Proprietăţile cîmpului sînt caracteristici care stabilesc un control suplimentar asupra modului în care sînt memorate, introduse sau afişate datele lui. Aceste proprietăţi depind de tipul cîmpului şi se precizează în zona inferioară a ferestrei tabelului (fig. 8 .1 ). 1. Proprietatea Field Size determină formatul mărimii datelor cîmpului şi există doar pentru tipurile T ext şi N u m b er. - Pentru tipul Text se acceptă valori de la 0 la 255, stabilind astfel limita de lungime a şirului de caractere ce va fi memorat în cîmp. Valoarea 50 este implicită. - Pentru tipul N u m ber se poate alege una din valorile B yte, Integer, L ong integer (valoare implicită), Single, D ou ble , R eplication ID , D ecim a l. 2. Proprietatea Format particularizează printr-un şablon modul în care vor fi afişate datele cîmpului şi există pentru toate tipurile cu excepţia tipului OLE Object. - În cazul tipurilor Text şi M em o, şablonul poate fi creat cu ajutorul următoarelor simboluri: Simbol Descriere @ Caracter de text sau spaţiu. & Caracterul de text nu este obligatoriu. < Toate caracterele vor fi minuscule. > Toate caracterele vor fi majuscule. - Afişează caracterul -. Exemplu: Şablonul @@-@@-@@> va afişa în loc de textul ab cd eftextul A B -C D -E F . - Pentru tipurile N u m ber şi C urrency se poate selecta una din valorile G eneral num ber, C urrency, E uro, F ixed, S ta n d a rd , Percent sau Scientific. - Formatul tipului D a te /T im e poate fi G eneral D a te, L on g D ate, M ed iu m D a te, S h ort D ate, L ong T im e, M ediu m Tim e, S h ort T im e. Precizăm că dacă anul este scris cu două cifre, atunci pentru valori din intervalul [00, 29] Access subînţelege anii 2000-2029, iar pentru valori din intervalul [30, 99] - anii 1930-1999. Exemplu: Formatul L on g D a te va afişa data 28.11.89 astfel: 28 noiembrie 1989. - Tipul Yes/No acceptă una din formatele Yes/N o, O n/O ff, True/False. În ultimul caz utilizatorii vor putea scrie în cîmp şi valorile 1, respectiv, 0. 78 3. Proprietatea Input Mask se foloseşte la elaborarea unui şablon de restricţionare a caracterelor (se mai spune m ască de intrare) ce urmează a fi introduse în cîmp. Pentru crearea şablonului sînt admise următoarele simboluri: Simbol Descriere 0 Cifră (nu poate fi precedată de + ori -). Introducere obligatorie. 9 Cifră (poate fi precedată de + ori -) sau spaţiu. Introducere opţională. # Cifră (poate fi precedată de + ori -) sau spaţiu (la salvare este eliminat). Introducere opţională. L Literă. Introducere obligatorie. ? Literă. Introducere opţională. A Literă sau cifră. Introducere obligatorie. a Literă sau cifră. Introducere opţională. & Orice caracter sau spaţiu. Introducere obligatorie. C Orice caracter sau spaţiu. Introducere opţională. . , : ; - / Separatori pentru date calendaristice sau pentru clasele numărului (unităţi, mii, milioane, miliarde etc.). Separatorul predefinit depinde de setările din fereastra Regional Setings (poate fi afişată din Panoul de control Windows). < Transformă simbolurile-litere din dreapta în minuscule. > Transformă simbolurile-litere din dreapta în majuscule. Forţează introducerea datelor de la dreapta spre stînga. \ Afişează doar caracterul care urmează după \ (de exemplu, şablonul \M afişează litera M). "Şir de caractere" Afişează doar şirul de caractere (fără ghilimele). Password În loc de simbolurile introduse, se vor afişa caractere *. E x e m p le : 1. Şablonul >L= 100 permite utilizatorului să introducă într-un cîmp numeric doar numere mai mari sau egale cu 100. '9 7. În proprietatea Validation Text se scrie textul care va apărea într-o fereastră de avertizare, dacă valoarea introdusă în cîmp nu respectă condiţiile de validare din V alidation Rule. 8. Proprietatea Required acceptă doar valorile Yes şi N o. Valoarea Yes obligă utilizatorul să completeze cîmpul. Este inutil de completat această proprietate pentru cheile primare (deoarece un astfel de cîmp nu acceptă valori vide) sau dacă condiţia de validare este Is N o t N u ll (nu este nulă). 9. În proprietatea Allow Zero Length de asemenea se poate scrie doar una din valorile Yes sau N o. Ea există doar pentru cîmpurile de tip Text şi M em o. Pentru Yes cîmpul va accepta valori de lungime 0, adică şiruri vide de caractere, chiar dacă proprietatea R equired va fi Yes. 10. Proprietatea Indexed permite (pentru indexul Yes (D uplicates O k)) sau interzice (pentru indexul Yes (N o D u plicates)) repetarea valorilor în cîmp. Indexul existent poate fi eliminat dacă din lista derulantă a proprietăţii se alege valoarea No. Pentru o cheie primară indexul Yes (N o D u plicates) va apărea automat (fig. 8.1) şi nu va putea fi modificat. 11. Proprietatea New Values se aplică doar cîmpurilor de tip A u toN u m ber. Pentru valoarea In crem en t sistemul Access va genera valori noi în cîmp, adăugînd 1 la cea mai mare valoare existentă. Dacă atribuim proprietăţii N ew Values valoarea R a n d o m , atunci cîmpul va fi completat cu valori generate aleator. Întrebări si exerciţii * > O Examinaţi tabelul Profesori al bazei de date Liceu si descrieţi structura lui. e Care sînt tipurile de date ce pot fi păstrate într-o bază de date Access? e Care trebuie să fie tipul unui cîmp pentu a putea stoca în el fotografii? Dar adrese de pagini Web? Biografia unei personalităţi? O Ce trebuie să facem pentru ca fiecare înregistrare nouă să nu fie acceptată în tabel, dacă utilizatorul nu a completat ultimele două cîmpuri ale lui? e un cîmp care nu este cheie primară nu acceptă repetări de valori în diferite înregistrări. Care este cauza? © Cum putem verifica dacă în baza de date Liceu există informaţii despre elevi cu aceeaşi zi de nastere? © Cărui an îi aparţine data: a) 01.01.01; * b) 30.12.30; c) 17.12.89; d) 15.04.28? O Creaţi un tabel Access care va conţine informaţii despre o colecţie de muzică. Includeţi cel puţin cîmpurile pentru memorarea numelui interpretului, a firmei producătoare de înregistrări, a anului apariţiei, a formatului (disc, casetă, CD etc.) şi a valorii de evaluare atribuite piesei muzicale, potrivit preferinţelor (de exemplu, de la 5 la 10). © Creaţi un tabel Access care va conţine date despre o colecţie de reţete culinare. includeţi cel puţin cîmpurile în care se vor stoca denumirile bucatelor, tipurile lor (felurile întîi, garnituri, fripturi, copturi, deserturi etc.), timpul de pregătire, originea bucatelor (moldoveneşti, franţuzeşti, japoneze etc.). ® alcătuiţi un şablon care va obliga introducerea într-un cîmp numeric doar a numerelor întregi: a) din intervalul [1 0... 99]; b) de trei cifre; c) negative de două cifre. 0 Creaţi un şablon care va permite introducerea într-un cîmp a numerelor de identificare a buletinelor moldoveneşti. Orice buletin moldovenesc are un număr de identificare format dintr-o literă majusculă, urmată de 8 cifre. 80 8.2. Stabilirea relaţiilor dintre tabele 9 În capitolul 7 am aflat că între două tabele ale unei baze de date relaţionale poate exista una din următoarele tipuri de relaţie: 1 : 1, 1 : M, M : M. Sistemul Access foloseşte pentru afişarea şi crearea relaţiilor dintre tabele fereastra R elationships. Vom examina crearea relaţiilor dintre două tabele printr-un exemplu. Să stabilim relaţia 1 : M dintre tabelele Clase şi E levi ale bazei de date Liceu. 1. Executăm un clic pe butonul [Ml de pe bara de instrumente sau alegem Tools R elationships. Apare fereastra R elationships. 2. Executăm un clic pe butonul [5] de pe bara de instrumente sau selectăm R elation ­ ships Show Table. Apare fereastra S h ow Table (fig. 8.2), din care selectăm pe rînd tabelele E levi şi Clase, confirmînd de fiecare dată alegerea prin apăsarea butonului A d d . În fereastra R elationships apar identificatorii cîmpurilor tabelelor selectate (fig. 8.3). 3. Cheia primară a fiecărui tabel este mai pronunţată faţă de celelalte cîmpuri. Selectăm cîmpul C od_clasa al tabelului E levi, apoi, ţinînd apăsat butonul mouse-ului, tragem cursorul spre cîmpul C o d _clasa al tabelului C lase. Apare fereastra E d it R elation sh ips, în care automat a fost determinat tipul relaţiei 1 : M (R elationship Type: O ne-T o-M any). De asemenea, putem activa următoarele caracteristici ale relaţiei (fig. 8.4): a) A sigurarea in tegrităţii referenţiale (Enforce R eferential Integrity); b) A ctu a liza rea în cascadă a înregistrărilor (C ascade U pdate R elated Fields); c) E xcluderea în cascadă a înregistrărilor (C ascade D elete R elated R ecords). Dacă este activată caracteristica A sig u ra re a in te g r ită ţii re fe re n ţia le , atunci cîmpul secundar al tabelului subordonat va accepta doar valori ale cîmpului cheie primară al Fig. 8.4 tabelului principal. Astfel, în cîmpul C od_clasa al tabelului E levi vom putea scrie doar „codurile” claselor înregistrate în tabelul Clase. A c tu a liz a r e a în c a s c a d ă a în r e g is tr ă r ilo r înseamnă că la modificarea unei valori V din cîmpul cheie primară al tabelului principal, automat se vor modifica corespunzător toate valorile V din cîmpul cheie străină al tabelului subordonat. De exemplu, dacă vom schimba în tabelul C lase „codul” clasei a 10-a A din c01 în c001, atunci fiecare valoare c01 din cîmpul C od_clasa al tabelului E levi va fi substituită cu valoarea c001. Dacă este activată caracteristica E x c lu d e r e a în c a s c a d ă a în r e g is tr ă r ilo r, atunci la eliminarea unei înregistrări X din tabelul principal se vor elimina toate înregistrările din tabelul subordonat, care conţin în cîmpul cheie străină valoarea din cîmpul cheie primară a înregistrării X. De exemplu, dacă vom exclude din tabelul C lase ultima înregistrare (are „codul” c12 şi corespunde clasei a 12-a D), atunci din tabelul E levi vor fi „eliminaţi” toţi elevii clasei a 12-a D. Întrebări si exerciţii i > O Explicaţi algoritmul de stabilire a relaţiei dintre două tabele Access. e Ce înseamnă integritatea referenţialâ a datelor? © Disciplinele şcolare aparţin următoarelor arii curriculare: a) limbă şi comunicare; b) educaţie socioumanistică (istorie, geografie, educaţie civică); c) matematică şi şiinţe (matematică, fizică, chimie, biologie); d) tehnologii (informatică); e) sport (educaţie fizică). Deschideţi baza de date Liceu. Creaţi şi completaţi în ea tabelul Arii curriculare, apoi stabiliţi o relaţie dintre acest tabel şi tabelul D iscipline. © Care este rolul caracteristicii C a sca d e U p d a te R ela te d F ield s a unei relaţii? © Cu ce scop se utilizează caracteristica C a sca d e D elete R ela ted R eco rd s a unei relaţii? 8.3. Modificarea tabelelor 8.3.1. introducerea şi editarea datelor Pentru a introduce sau a edita date într-un tabel, deschidem acest tabel în regimul D atash eet V iew prin executarea unui clic pe butonul |RjjQpen| al ferestrei bazei de date. Comutarea între regimurile D a ta sh eet V iew (regim de e d it a r e , 8 .5 ) şi D esign V iew (regim de proiectare) se realizează prin intermediul butonului V iew |j^ de pe bara de instrumente Access. Fig. 8.5 La crearea sau modificarea conţinutului unei înregistrări, la stînga ei apare un selector de înregistrare (SI), al cărui aspect depinde de starea înregistrării (vezi tabelul care urmează). 82 SI Starea înregistrării LO Înregistrarea curentă este selectată. [El Înregistrare nouă, în care se pot introduce date. 0 Utilizatorul editează înregistrarea, iar modificările nu sînt încă salvate. Înregistrarea este blocată de alt utilizator şi nu se poate edita (cazul mediului multiutilizator - mediu în care mai multe persoane pot utiliza simultan baza de date). Pentru gestionarea rapidă a înregistrărilor se pot utiliza instrumentele din partea de jos a ferestrei tabelului: h I < 11 235 ► I h b*!), avînd respectiv următoarele funcţii (de la stînga spre dreapta): - activarea primei înregistrări; - activarea înregistrării predecesoare celei curente; - afişarea numărului de ordine al înregistrării curente sau activarea înregistrării cu numărul de ordine din casetă; - activarea înregistrării succesoare celei curente; - activarea ultimei înregistrări; - adăugarea unei înregistrări noi. Introducerea şi editarea datelor unui tabel se fac prin metode caracteristice lucrului cu texte. De exemplu, se pot copia date utilizînd memoria C lipboard, iar ştergerea lor se poate realiza folosind tastele B ackspace şi D elete. O singură apăsare pe tasta Esc anulează acţiunile de modificare a informaţiei din cîmpul curent, iar o dublă apăsare pe ea - acţiunile de modificare a înregistrării curente. Nu este obligatoriu de completat toate cîmpurile unei înregistrări, cu excepţia cîmpului cheie primară (care nu poate conţine valori vide) şi a celor care au setată cu Yes proprietatea R equired. Un cîmp poate fi selectat prin executarea unui clic pe a n tetu l lui (celula care afişează identificatorul cîmpului), iar o înregistrare - prin executarea unui clic pe antetul ei (celula în care apare selectorul de înregistrare). Dacă după selectarea unui cîmp (sau a unei înregistrări) nu eliberăm butonul mouse-ului şi-l poziţionăm pe următorul cîmp (respectiv pe următoarea înregistrare), vor deveni selectate ambele cîmpuri (respectiv ambele înregistrări). Menţionăm că asupra datelor sau înregistrărilor se pot efectua următoarele operaţii: - adăugarea unei înregistrări noi înaintea celei curente (comanda N ew Record din meniul flotant al antetului înregistrării sau din meniul In sert al meniului principal Access); - ştergerea înregistrării curente (comanda D elete Record din meniul flotant al antetului înregistrării sau din meniul E d it al meniului principal Access); - com pletarea cîm pu rilor; - copierea conţinutului unei celule (comenzile C opy şi Paste din meniul flotant al celulei); - copierea unei înregistrări (comenzile C opy şi Paste din meniul flotant al antetului înregistrării sau din meniul E d it al meniului principal Access). O b se rv a ţii: 1. În urma ultimei operaţii, utilizatorul va fi obligat să modifice valoarea celulei din cîmpul cheie primară. 2. Unele dintre operaţiile menţionate se pot efectua şi cu ajutorul instrumentelor de pe bara de instrumente Access. 83 3. Pentru introducerea rapidă a datelor se pot folosi comenzile rapide lansate cu ajutorul combinaţiilor de taste. 4. Modificările unei înregistrări sînt automat salvate de Access atunci cînd se trece la o altă înregistrare sau la închiderea tabelului. 5. La completarea tabelelor cu înregistrări, mai întîi se vor introduce date în tabelele principale, apoi în cele subordonate. 8.3.2. Modificarea aspectului tabelului Sistemul Access afişează în mod implicit datele tabelului respectînd anumite caracteristici. De exemplu, înregistrările tabelului apar ordonate crescător automat după valorile cîmpului cheie primară, iar cîmpurile lui se succed în ordinea în care au fost create. Utilizatorul poate schimba modul de prezentare a informaţiei dintr-un tabel. Mai exact, sînt permise următoarele acţiuni de modificare a aspectului tabelului: a) schim barea ordinii de afişare a cîm pu rilor; b) m odificarea ordinii de afişare a în registrărilor; c) schim barea în ălţim ii înregistrărilor sau lăţim ii cîm purilor; d) ascunderea coloanelor; e) filtra rea înregistrărilor. Schimbarea ordinii de afişare a cîmpurilor se face prin deplasarea lor. Pentru a deplasa unul sau cîteva cîmpuri consecutive, selectăm aceste cîmpuri, apoi, ţinînd apăsat butonul stîng al mouse-ului, poziţionăm indicatorul lui pe cîmpul în faţa căruia dorim să mutăm cîmpurile selectate. Pentru ca înregistrările unui tabel să apară ordonate crescător (respectiv descrescător) după valorile unui cîmp, selectăm acest cîmp, apoi executăm un clic pe butonul [fi] de pe bara de instrumente (respectiv pe butonul [IJ]) sau alegem R ecords S o rt S o rt A scen din g (respectiv Records ^ S ort ^ S ort D escending). Similar se face ordonarea după valorile cîtorva cîmpuri consecutive. Menţionăm că, în acest caz, ordonarea se va face de la stînga spre dreapta, adică valorile din cîmpul din dreapta se vor lua în considerare doar în cazul în care vor coincide valorile cîmpului din stînga. Acţiunile de modificare a înălţimii înregistrărilor sau a lăţimii cîmpurilor sînt similare cu acţiunile de schimbare a înălţimii rîndurilor sau a lăţimii coloanelor unui tabel într-un redactor de texte ori într-un procesor tabelar. Pentru a ascunde o coloană, o selectăm, apoi alegem comanda H ide Colum ns din meniul ei flotant sau din meniul F orm at. Pentru a reafişa coloanele ascunse, selectăm comanda U n h ide C olu m n s din meniul F o rm a t. Apare fereastra U n h ide C olu m n s în care alegem coloanele necesare. Filtrarea înregistrărilor, adică selectarea acelor înregistrări care respectă anumite condiţii, se poate face prin crearea unui filtru (se alege Records Filter A d va n sed F ilter/ Sort) şi aplicarea lui (se execută Filter A p p ly F ilter/Sort). Un filtru poate fi înlăturat executînd Records R em ove F ilter/Sort. O b se rv a ţii: 1. Modificările aspectului tabelului nu sînt automat salvate de Access la închiderea tabelului. Utilizatorul le poate salva executînd un clic pe butonul Save de pe bara de instrumente sau lansînd comanda Save din meniul E dit. 2. Modificările aspectului tabelului nu afectează structura tabelului. 84 8.3.3. Modificarea structurii tabelului Este firesc ca pe parcursul proiectării (sau chiar al gestionării) unei baze de date să apară necesitatea schimbării structurii unor tabele. Atenţie! Aceste schimbări pot afecta integritatea informaţiilor din baza de date. De exemplu, micşorarea dimensiunii unui cîmp de tip text poate atrage după sine trunchierea valorilor acestui cîmp, iar eliminarea unui cîmp cheie primară poate duce la ştergerea înregistrărilor tabelului subordonat. De fapt, în funcţie de caracteristicile relaţiilor dintre tabele, sistemul Access poate să nu accepte unele schimbări ale structurii tabelului. Astfel, procesul de modificare a cîmpurilor cheie primară sau a cîmpurilor cheie străină se va face doar după ce vor fi distruse relaţiile dintre tabele, urmînd a fi restabilite ulterior. Pentru a modifica structura unui tabel, acesta trebuie deschis în regimul D esign V iew prin executarea unui clic pe butonul i Design al ferestrei bazei de date. În acest regim sînt posibile următoarele acţiuni: a) adăugarea unui cîm p n ou; b) elim inarea unui cîm p ; c) schim barea identificatorului cîm pului; d) m odificarea p ro p rietă ţilo r cîm purilor; e) stabilirea unei chei p rim a re ; f) elim inarea unei chei p rim a re . Acţiunile de modificare a structurii unui tabel sînt similare cu acţiunile de creare a tabelului. 8.3.4. Caracteristica Lookup a cîmpurilor Caracteristica L ooku p permite înlocuirea casetelor de text ale cîmpurilor cu liste derulante. Astfel, utilizatorul va putea completa un cîmp selectînd o valoare dintr-o listă de valori acceptabile. Conţinutul listei poate fi încărcat dintr-un cîmp cheie primară al unui tabel asociat celui curent sau poate fi creat la stabilirea caracteristicii L ooku p. Să alcătuim o listă derulantă cu ajutorul unui program de asistenţă pentru cîmpul C od_clasa al tabelului E levi. 1. Deschidem tabelul E levi în regim de proiectare. Alegem opţiunea L ookup W iza rd din lista derulantă a cîmpului C o d _ cla sa . 2. Apare prima casetă de dialog L ookup W izard. Selectăm prima opţiune, stabilind astfel că valorile listei care urmează a fi creată vor fi luate dintr-un tabel asociat. Opţiunea a doua precizează că valorile listei vor fi create la ceilalţi paşi. 3. În următoarele două ferestre alegem tabelul C lase, apoi cîmpurile C o d _ cla sa , A n _ d e_ stu d ii şi N u m e_ cla sa . Valorile cîmpurilor alese vor apărea în listă. 4. În fereastra a patra ajustăm lăţimea coloanelor listei şi atribuim un nume acestei liste. Întrebări si exerciţii * > O Ce operaţii pot fi efectuate asupra datelor unui tabel? e Care modificări ale tabelului pot afecta structura lui? e Deschideţi baza de date Liceu. Adăugaţi tabelului A d re se_ele vi cîmpul A d resa _W eb . Completaţi acest cîmp pentru primele 10 înregistrări. 85 o Deschideţi tabelul Elevi în regim de editare: a) adăugaţi 5 înregistrări în tabel; b) ştergeţi penultima înregistrare; c) copiaţi datele primei înregistrări în cîmpurile ultimei înregistrări. e Deschideţi tabelul Profesori în regim de editare: a) afişaţi datele tabelului în ordinea: numele, prenumele, sexul, telefonul, data naşterii a profesorilor; b) ascundeţi cîmpurile Salariu, CV_prof şi Foto_prof c) reafişaţi cîmpurile ascunse. © Afişaţi în ordine alfabetică lista elevilor bazei de date Liceu. & afişaţi numele şi prenumele elevilor în ordinea descrescătoare a vîrstei lor. O afişaţi lista profesorilor bazei de date Liceu în ordine crescătoare a salariilor lor. 8.4. Crearea expresiilor Access Examinînd proprietatea V alidation R ule a cîmpurilor, am menţionat că regulile de validare a datelor care urmează a fi introduse în cîmp se scriu folosind expresii Access. După cum vom vedea ulterior, expresiile se utilizează de asemenea la formularea cererilor de căutare a datelor şi la elaborarea rapoartelor. O expresie Access este o declaraţie de intenţie, care conţine cel puţin un operator şi un operand: constantă, identificator sau funcţie. Expresia returnează o valoare. Un identificator Access este numele unui obiect al bazei de date. Tabelul, cîmpul, interogarea, formularul, raportul şi însăşi baza de date sînt obiecte. De regulă, în cadrul expresiilor identificatorii se scriu între simbolurile [ şi ]. Identificatorul unui „subobiect” este format din numele clasei de obiecte şi numele „subobiectului” delimitate printr-un punct sau printr-un semn de exclamare. În aşa mod, fiecărui obiect îi corespunde un singur identificator în interiorul bazei de date. Totuşi, uneori, dacă nu sînt confuzii, în calitate de identificator al „subobiectului” se poate folosi doar numele lui. E x e m p le : [Elevi].[Nume_elev], [Profesori].[Salariu], [Cod_elev]. 8.4.1. operatori access Vom examina 6 categorii de operatori Access. • Operatorii aritmetici (+, -, *, /, \, Mod, A) se aplică asupra valorilor numerice. E x e m p le : 15 \ 6 returnează 2, iar 15 M o d 6 returnează 3, deoarece 15 = 6 • 2 + 3. • Operatorii de comparare compară valorile a doi operanzi şi returnează una din valorile logice True sau False. În Access se utilizează aceiaşi operatori de comparare şi cu aceeaşi semnificaţie ca şi a operatorilor relaţionali din limbajul de programare Pascal: <, <=, =, >=, >, <>. • Operatorii logici Access se aplică asupra operanzilor logici şi de asemenea coincid cu cei din Pascal: And, Or, Not, Xor. • Operatorul de atribuire = atribuie valoare unui obiect, unei variabile sau unei constante. • Operatorul de concatenare + uneşte două şiruri de caractere în unul. • Alţi operatori. Următorii operatori nu fac parte din categoriile precedente. Expresiile care îi conţin returnează una din valorile True (sau -1), False (sau 0). 86 Operator Descriere Is Se aplică asupra valorii Null (valoarea vidă) şi verifică dacă o valoare este sau nu este vidă. Like Stabileşte dacă un şir de caractere respectă şablonul specificat de Like. Şablonul se scrie între simbolurile "şi". Şablonul poate să conţină caractere de înlocuire (? pentru un caracter, # pentru o cifră, * pentru orice număr de caractere, inclusiv lipsa lor) şi liste de valori. Lista de valori se scrie între simbolurile [ şi ]. Dacă valorile listei sînt precedate de simbolul !, atunci se consideră toate valorile cu excepţia celor precedate de !. In Stabileşte dacă o valoare aparţine unei liste de valori. Valorile listei se delimitează prin simbolul ;. Between Stabileşte dacă o valoare numerică aparţine unui interval. E x e m p le : 1. Expresia [Elevi].[Telefon] I sN u llreturnează valoarea True doar în cazul în care cîmpul Telefon al tabelului Elevi nu conţine nicio valoare (se are în vedere înregistrarea curentă). 2. Like "B*ov" specifică şiruri de caractere care încep cu litera B şi se termină cu combinaţia de litere ov. Prin urmare, expresia "Belousov" Like "B*ov" returnează valoarea True. 3. Like "[CK]#?" specifică şiruri din 3 caractere: primul este una din literele C sau K, al doilea - o cifră, al treilea - orice simbol. 4. Like ”*[5ad-g]" specifică şiruri de caractere care se termină cu cifra 5 sau cu una din literele a, d, e, f , g. 5. Like "*[!ae]" specifică şiruri de caractere care nu se termină cu litera a sau cu litera e. 6. Expresia "Duminica" In ('Luni"; "Marti"; "Miercuri"; "Joi"; "Vineri") returnează valoarea False, iar expresia 4 In (2; 4; 7; 8) - valoarea True. 7. Expresia B etw een 2 A n d 10 este echivalentă cu expresia >=2 A n d <=10. O b s e r v a ţie : La scrierea expresiei condiţiei de validare în caseta proprietăţii Validation Rule nu se scrie identificatorul primului operand, acesta fiind considerat implicit identificatorul cîmpului respectiv. Astfel, regula de validare In ("Luni"; "Marti"; "Miercuri"; "Joi"; "Vineri") va permite utilizatorului să scrie în cîmp doar unul din cuvintele Luni, M a rti, M iercu ri, Joi, V ineri. 8.4.2. Funcţii Access .» O funcţie returnează o valoare prin numele ei. Access oferă peste 100 de funcţii standarde pentru prelucrarea diferitor tipuri de date: numerice, şiruri de caractere, calendaristice etc. Cele mai uzuale sînt prezentate în următoarele tabele: Unele funcţii pentru prelucrarea datelor calendaristice Funcţia Rezultatul returnat Date() Data curentă DateAdd(T; N; D) Data calendaristică care se obţine adunînd la data D sau scăzînd din ea N (în cazul cînd N este negativ) unităţi calendaristice de tip T, unde T poate fi "yyyy", "q", "m", "ww", "d", "h", semnificînd respectiv ani, trimestre, luni, săptămîni, zile, ore DateDiff(T; D1; D2) Diferenţa exprimată în unităţi calendaristice de tip T dintre datele D1 şi D2 Time() Ora curentă Now() Data şi ora curentă Year( D) Anul scris cu 4 cifre corespunzător datei calendarisice D Month(D) Numărul de ordine în an al lunii corespunzătoare datei calendarisice D Day(D) Numărul de ordine în lună al zilei corespunzătoare datei calendarisice D WeekDay(D) Numărul de ordine în săptămînă al datei calendaristice D (1 corespunde Duminicii, 2 - zilei de Luni etc.) Hour(D) Ora (număr întreg de la 0 la 23) corespunzătoare valorii calendaristice D Unele funcţii de manipulare a textului Funcţia Rezultatul returnat Asc(C) Codul ANSI al caracterului C Chr(N) Caracterul al cărui cod ANSI este numărul N InStr(S1; S2) Poziţia, începînd cu care şirul S2 se conţine în şirul S1 Mid(S; N1; N2) Subşirul şirului S de lungime N2 începînd cu poziţia N1. Parametrul N2 poate să lipsească, ceea ce înseamnă că se va returna subşirul obţinut prin înlăturarea primelor N1-1 caractere ale şirului S LCase(S) Şirul de caractere obţinut din şirul S prin transformarea literelor majuscule în litere mici UCase(S) Şirul de caractere obţinut din şirul S prin transformarea literelor mici în majuscule Len(S) Numărul de caractere ale şirului S LTrim(S) Şirul obţinut din şirul S după lichidarea spaţiilor de debut RTrim(S) Şirul obţinut din şirul S după lichidarea spaţiilor de sfîrşit Trim(S) Şirul obţinut din şirul S după lichidarea spaţiilor de debut şi a celor de sfîrşit Left(S; N) Şirul format din primele N caractere ale şirului S Right(S; N) Şirul format din ultimele N caractere ale şirului S Str(X) Şirul format din simbolurile valorii X în aceeaşi ordine Val( S) Numărul obţinut din simbolurile şirului S în aceeaşi ordine (dacă acesta are formatul potrivit) Unele funcţii matematice Funcţia Rezultatul returnat Abs(X) Valoarea absolută a numărului X Atn(X) Arctangenta (în radiani) a numărului X Avg(C) Media aritmetică a valorilor cîmpului C Count(C) Numărul valorilor nevide ale cîmpului C Max(C) Valoarea maximală din cîmpul C Cos(X) Cosinusul numărului X Exp(X) Valoarea eX Int(X) Partea întreagă a numărului X Log(X) Logaritmul zecimal al numărului X 88 Rnd() Un număr aleator cuprins între 0 şi 1 Sgn(X) 0 dacă numărul X este pozitiv, -1 dacă numărul X este negativ Sin(X) Sinusul numărului X Sqr(X) Rădăcina pătrată a numărului X Tan(X) Tangenta numărului X O b s e r v a ţ i i : 7 1. În calitate de parametri ai funcţiilor pot fi identificatorii cîmpurilor (evident, scrişi între simbolurile [ şi ]). 2. Dacă parametrul funcţiei este o constantă calendaristică, atunci ea se scrie între simbolurile " şi ". E x e m p le : 1. D ateA dd(" d";-50; D a te ()) returnează data calendaristică care a fost cu 50 de zile în urmă. 2. Weekday("27.09.1993") returnează 2, deoarece pe 28 septembrie 1993 a fost luni. (Luni se consideră a doua zi din săptămînă.) 3. fnStr("Informatica"; "forma") returnează 3. 4. LCase("INFORMATICA") returnează textul "informatica". 5. LTrim (" forma") returnează textul "forma". 6. S g n (- 20) returnează valoarea -1. Întrebări si exerciţii > > O Pentru ce se utilizează expresiile în Access? e Deschideţi baza de date Liceu şi scrieţi o regulă de validare pentru cîmpul N r_o re _sa p ta m in a al tabelului P ro f_d is_c la sa care să admită doar valori întregi strict mai mari ca 0. © Ce valoare va returna expresia: a) Mid("Propoziţie"; 3); b) Mid("Calculator"; 1; 3); c) /nt(RndQ *50); d) M o n th ( "15.11.1990"); e) Left("Tractor"; 5); f) 5 /n ("4"; "5"; "6"; "7"; "8"); g) Val("25") - 25; h) "R" Like "[TR]*"; i) "R" + Str(D ate())? © Scrieţi o expresie care va returna: a) salariul mediu al profesorilor din tabelul Profesori; b) data calendaristică ce va fi peste 5 săptămîni după data curentă; c) a cîta zi în an este data curentă; d) a cîta zi din săptămînă a fost 1 ianuarie 2000; e) diferenţa de zile dintre 5 martie 2005 şi 5 decembrie 2005. © Scrieţi pentru cîmpul G en _ p r o f al tabelului Profesori o condiţie de validare care ar admite în cîmp doar valorile M sau F. 89 Test de evaluare 1. Stabiliţi valoarea de adevăr a propoziţiei: „Valorile tabelului fac parte din structura lui". 2. Completaţi adecvat: a) Proprietatea...................stabileşte valoarea implicită a cîmpului unui tabel. b) Dacă valoarea proprietăţii.............................. a unui cîmp e s te .................. , atunci Access nu va accepta o înregistrare nouă pînă cînd utilizatorul nu va completa acest cîmp al înregistrării. 3. Descrieţi acţiunea de restricţionare a şablonului >L0L 0L09. 4. Creaţi un şablon ce va obliga introducerea într-un cîmp de text a şirurilor formate: a) din 3 caractere, dintre care primul va fi o literă, iar celelalte două - cifre; b) din cel puţin 4 caractere şi cel mult 6 caractere, dintre care ultimul va fi cifră. 5. Care dintre caracteristicile: Asigurarea integrităţii referenţiale (Enforce Referenţial Integrity), Actualizarea în cascadă a înregistrărilor (Cascade Update Related Fields), Excluderea în cascadă a înregistrărilor (Cascade Delete Related Records) trebuie activată pentru ca modificarea unei valori din cîmpul cheie primară al tabelului principal să atragă după sine modificări corespunzătoare în tabelul subordonat? 6. Fie tabelul Lista cu următoarea structură: Nume Prenume Data naşterii Raionul Profesia Genul Popa Ion 12.08.1979 Briceni profesor M Descrieţi acţiunile care trebuie realizate pentru a afişa datele următoarelor cîmpuri ale tabelului Lista în ordinea: Raionul, Data naşterii, Prenume, Nume. 7. Completaţi adecvat: a) Expresia.................................. specifică şiruri de caractere care încep cu litera Tşi se termină cu litera R. b) Expresia.................................. specifică şiruri de caractere care nu încep cu niciuna dintre literele C, D, E, T. c) Expresia.................................. specifică numere întregi cu modulul mai mare decît 15 şi mai mic decît 40. 8. Care va fi valoarea expresiei: a) DateAdd("ww";1; "01.09.2010"); b) Vear("01.09.30"); c) "PAR" Like "[A-D]*"? 9. Scrieţi pentru cîmpul Adrese_email al unui tabel o condiţie de validare care ar admite în cîmp doar şiruri de caractere ce conţin în interiorul lor caracterul @

Niciun comentariu:

Trimiteți un comentariu