1
Introducere
Microsoft Access 2003 este
aplicaţia de management al bazelor de date pusă la dispoziţie de suita
Microsoft Office. Spre deosebire de Excel, Access va permite să stocăm
şi să administrăm volume mari de date, organizate īn unităţi numite
īnregistrări. O bază de date Access constă din următoarele obiecte:
• Tabele – conţin toate īnregistrările
• Interogări – localizează īnregistrări specifice
• Formulare – afişează īnregistrările din tabele, una
cīte una
• Rapoarte – tipăresc loturi de īnregistrări
• Pagini de acces la date – pun la dispoziţie date
prin intermediul paginilor Web
• Macrocomenzi – acţiuni automate uzuale
• Module – stochează declaraţii si proceduri Visual
Basic, care ne permit să scriem programe pentru bazele de date, astfel
īncāt acestea să poată interacţiona cu alt software.
Utilitarele de asistenţă din
aplicaţia Access asigură un proces simplu, pas cu pas, de configurare a
tabelelor, formularelor, paginilor de acces la date, rapoartelor şi
interogărilor.
Prezenta lucrare conţine 5 paragrafe.
§ 1 conţine noţiuni de baze de date,tipuri BD. O bază de
date (BD) reprezintă o colecţie de date integrată, anume structurată şi
dotată cu o descriere a structurii şi a relaţiilor dintre date.
§ 2 conţine caracteristica generală a SGBD Access.
§ 3 conţine tabelele Access ,care īn baza lor se
definesc celelalte clase de obiecte.
§ 4 conţine funcţii Access.
Ultimul § conţine interogări Access care include şi subpunctele
interogări de selecţie,de sortare, de actualizare a datelor,de
excludere a īnregistrărilor, de grupare şi totalizare şi interogări
īncrucişate.
C U P R I N S
§ 1 Noţiune de bază de date.Tipuri de BD.
3
§ 2 SGBD Access. Caracteristica generală 5
§ 3 Tabele Access. 8
§ 4 Funcţii Access 18
§ 5 Interogări Access 20
5.1Interogări de
selecţie a īnregistrărilor(Select Query
§.1 Noţiune de bază de date.Tipuri de BD.
Printre multiplele forme de organizare a datelor, bazele
de date ocupă un loc aparte.
O bază de date (BD) reprezintă o colecţie de date
integrată, anume structurată şi dotată cu o descriere a structurii şi a
relaţiilor dintre date.
Īn funcţie de modul de organizare a informaţiilor, se cunosc cīteva
modele de BD:
ierarhic (arborescent), reţea, relaţional ş.a.
Modelul ierarhic.Cu ajutorul modelului conceptual ierarhic,
schema bazei de date poate fi reprezentată sub forma unui arbore īn
care nodurile exprimă colecţii de date, iar ramurile reflectă relaţiile
de asociere īntre īnregistrările colecţiilor de date superioare şi
inferioare.
Accesul la īnregistrările colecţiilor de date inferioare se face
prin traversarea arborelui, adică se parcurg toate colecţiile aflate īn
subordonare ierarhică dintre colecţia – rădăcină şi colecţia cercetată.
Unui element superior īi pot corespunde unul sau mai multe elemente
inferioare, iar unui element inferior īi corespunde un singur element
superior.
Modelul reţea. Modelul reţea se aseamănă cu cel ierarhic,
diferenţa constīnd īn aceea că unui element inferior īi pot corespunde
unul sau mai multe elemente superioare.
Modelul relaţional. Modelul relaţional este īn prezent cel mai
răspīndit model de baze de date. Acest model are o singură structură de
date: relaţia sau tabelul. O bază de date relaţională este un ansamblu
de relaţii (tabele) grupate īn jurul unui subiect bine definit. Deci, o
relaţie poate fi redată printr-un tabel, īn care fiecare rīnd
reprezintă o īnregistrare diferită, iar fiecare coloană un atribut.
Coloanele tabelului sunt identificate prin nume diferite şi reprezintă
cīmpurile (atributele, caracteristicile) modelului conceptual. Īn
fiecare coloană datele trebuie să fie de acelaşi tip. Căutarea īn acest
model de BD se face secvenţial toate articolele şi comparīnd criteriile
de căutare. Articolele ce satisfac conditiei căutării se selectează şi
pot fi afişate.
Subiectele pe care se axează tabelele unei BD pot fi cele mai
diverse: activitatea unei firme, stocarea mărfurilor la un depozit,
rezultatele unui recensămīnt,etc. Deşi īn modelul relaţional principala
structură de date o reprezintă tabelul, o bază de date este mai mult
decīt o simplă mulţime de tabele.Pe parcurs vom vedea că īntre tabelele
bazei de date există o interdependenţă strīnsă, īn timp ce īntre
tabelele de calcul obişnuite această interdependenţă practic lipseşte.
Gestiunea bazelor de date.
Sistemul de gestiune a bazelor de date (SGBD) este acel sistem de
programe care facilitează şi supervizează introducerea de informaţii īn
baza de date, actualizarea şi extragera din bază, controlul şi
autorizarea accesului la date. Un sistem de gestiune a bazelor de date
trebuie să fie capabil să īndeplinească următoarele funcţii:
de descriere ,care rezidă īn definirea
structuriidatelor, a relaţiilor dintre acestea şi a condiţilor de acces
la informaţile conţinute īn baza de date;
de actualizare, care presupune inserarea,
redactarea şi suprimarea datelor;
de interogare a BD, care permite obţinerea
diferitor informaţii din BD conform unor criterii de căutare;
de obţinere de date noi, care constă īn prelucrarea
informaţiei iniţiale īn scopul obţinerii unor totaluri, medii etc.;
de īntreţinere, care constă īn crearea copiilor de
rezervă, compactarea BD şi repararea ei īn cazul deteriorării;
de securitate a datelor, care rezidă īn protejarea
BD īmpotriva accesului neautorizat şi īn atribuirea drepturilor de
acces.
Administrarea bazelor de date.
Administrarea BD presupune coordonarea lucrărilor de proiectare a
BD, protecţia (securitatea) informaţiei, dezvoltarea BD,etc. Aceste
funcţii le īndeplineşte Administatorul Bazei de Date (ABD). El
defineşte obiectele sistemului , elaborează principiile de protecţie a
datelor, răspunde de alegerea şi implimentarea SGBD, asigură
funcţionarea normală a sistemului.
§. 2 SGBD Access. Caracteristica generală
La īnceputul anilor 80 s-a produs o trecere īn masă la
elaborarea şi utilizarea sistemelor de gestiune a bazelor de date de
tip relaţional.Acest fenomen se explică prin atingerea unor limite
tehnice şi prin flexibilitatea redusă a sistemelor de gestiune a
bazelor de date cu structuri arborescente şi reţea care se foloseau
pīnă atunci .Īnzestrate cu limbaje de generaţia a patra şi cu
generatoare de aplicaţii puternice , SGBD de tip relaţional oferă
numeroase facilităţi de proiectare şi dezvoltare a aplicaţilor .Cele
mai răspīndite SGBD de acest tip sunt: Oracle, Informix, SyBase, MySQL,
Interbase, Access, acesta din urmă fiind subiectul capitolului de faţă.
Sistemul de gestiune a bazelor de date MS Access 2003 (şi
versiunile care l-au precedat) a fost realizat de corporaţia Microsoft
şi reprezintă o nouă ideologie īn acest domeniu, avīnd performanţe
sporite.
Lansarea sistemului MS Access 2003
SGBD MS Access funcţionează numai īn mediul Windows. Există mai multe
modalităţi de lansare a sistemului Access, una din ele fiind executarea
consecutivă a acţiunilor Start/All Programs(sau Programs)/Microsoft
Office/Microsoft Office Access 2003.
Ca rezultat, obţinem o fereastră, asemănătoare cu cea din figura 1.
Figura 1. Lansarea sistemului Access
Crearea / accesarea unei baze de date
După cum am mai menţionat, elementele principale ale
unei baze de date sunt tabelele. Dar o bază de date poate conţine şi
alte elemente care se creează pe baza tabelelor (interogări, formulare,
rapoarte etc.). Aceste elemente, īmpreună cu tabelele, formează
aşa-numitele clase de obiecte ale bazei de date.
Pentru a crea o bază de date nouă, īn zona Open a
ferestrei reprezentate īn figura 1 alegem opţiunea Create a new file,
iar īn caseta urmatoare - opţiunea Blank Database. Putem, de asemenea,
utiliza comenzile de creare/accesare a bazelor de date din meniul File.
Figura .2
Pentru a deschide o bază de date existentă īn zona Open a
ferestrei reprezentate īn figura 1 executăm un clic pe denumirea uneia
din bazele de date utilizate recent sau selectăm opţiunea More pentru a
accesa o bază de date amplasată pe un dispozitiv de memorie auxiliară.
Īn caseta de dialog care apare indicăm numele BD
Figura.3
(de ex., BIBL) şi localizarea ei (discul, dosarul).Obţinem o
fereastră īn care sunt disponibile cele 7 clase de obiecte Access.
Figura. 4 Fereastra cu clasele de obiecte Access
Īnchiderea / redeschiderea bazei de date
Īnchiderea unei baze de date poate fi făcută prin
executarea comenzii Close din meniul File sau prin acţionarea
butonului din bara de titlu a bazei de date. De regulă, la
īnchidere, sistemul salvează automat baza de date īmpreună cu toate
obiectele pe care le conţine. Īnchiderea unei baze de date nu
īnseamnă şi īnchiderea aplicaţiei MS Access, astfel īncīt putem
deschide o altă de date sau crea o bază de date nouă, īn modul descris
mai sus.
Ieşirea din Access
Ieşirea din MS Access poate fi făcută īn unul din
următoarele moduri:
• se apasă combinaţia de taste Alt+F4;
• se execută comanda Exit din meniul File;
• se acţionează butonul din bara de
titlu a aplicaţiei
§.3 Tabele Access.
Crearea unui tabel
După ce am deschis o bază de date , eveniment confirmat prin apariţia
ferestrei cu cele 7 clase de obiecte (fig.4) , putem crea diferite
obiecte īn oricare din clasele nominalizate. Dar deoarece fiecare din
clasele Queries, Forms, Reports, Pages, Macros şi Modules se definesc
īn baza tabelelor, acestea (tabelele) trebuie create īn primul rīnd. Cu
alte cuvinte, dacă o BD nu conţine cel puţin un tabel, crearea altor
clase de obiecte devine lipsită de sens.
Pentru a crea un tabel nou ,de exemplu, Comenzi, selectăm clasa
de obiecte Tables, apoi acţionăm butonul . Caseta de
dialog New Table care apare (fig.5) ne oferă 5 moduri de definire a
structurii tabelului.
Figura.5 Moduri de definire a structurii unui tabel
Dacă selectăm opţiunea Design View şi acţionăm butonul OK, obţinem o
fereastră
(fig.6) īn care definim cīmpurile tabelului şi caracteristicile lor.
fig.6.Definirea cāmpurilor tabelului
Comenzi
Caracteristicile cīmpurilor
Pentru fiecare cīmp al tabelului se specifică 3 caracteristici,
şi anume:
• Field Name (denumirea cīmpului, obligatoriu);
• Data Type (tipul cīmpului, obligatoriu);
• Description (descrierea cīmpului, opţional).
Pentru comoditate, denumirile cīmpurilor se introduc pe
verticală, urmīnd ca īn regimul de introducere a datelor Datasheet
View denumirile cīmpurilor să-şi ocupe poziţiile obişnuite (pe
orizontală). Regimul Design View nu permite introducerea
īnregistrărilor īn tabel, ci doar descrierea cīmpurilor care alcătuiesc
tabelul.
Denumirea cīmpului poate conţine diferite caractere,
inclusiv spaţii, cu excepţia unor semne speciale ( ".", "!" ş.a.). Īn
caz de necesitate, denumirea poate conţine semnul "_" (subliniere).
Lungimea denumirii cīmpului (īmpreună cu spaţiile) nu poate
depăşi 64 de caractere.
Exemple: autorul;Id_ ţării; locul_ de_ muncă; LoculDeMuncă;
Locul de Muncă.
Tipul cīmpului poate fi unul din următoarele:
• Text - pentru texte sau numere care nu vor fi
folosite īn calcule;
• Memo - pentru texte lungi (biografia autorului,
rezumatul cărţii etc.).
• Number - pentru numere care vor fi folosite īn
calcule;
• Date/Time - pentru date calendaristice;
• Currency - pentru valori băneşti;
• AutoNumber - pentru numere īntregi care īşi măresc
īn mod automat valorile (numărul de ordine, de exemplu);
• Yes/No - pentru valori logice care pot lua numai
două valori: Yes (adevăr), No (fals);
• OLE Object - pentru imagini (fotografia autorului),
sunete (imnul ţării).
• Hyperlink - pentru adrese Hyperlink. Valorile
acestui cīmp pot fi adrese Internet (de exemplu, www.google.com) sau
locaţii (calea spre un fişier
sau dosar din calculator)
• Lookup Wizard - reprezintă, de fapt, nu un tip de
date, ci o proprietate a cīmpului prin care valorile lui pot fi
selectate din alt tabel. Acest mod de abordare simplifică procedura
introducerii valorilor cīmpului şi, īn plus reduce riscul comiterii
unor erori.
Pentru a schimba tipul cīmpului (implicit tipul este
Text), trecem īn coloana Data Type (fig.6) şi din lista derulantă
alegem tipul dorit. Apoi trecem (dacă e cazul) īn coloana Description,
pentru a introduce note explicative, sau īn rīndul următor, pentru
descrierea altui cīmp.
Stabilirea cheilor primare
Dacă valorile unui cīmp sunt unice (nu se repetă), putem
semnala acest lucru, pentru a evita introducerea accidentală a două
valori identice. Această procedură poartă denumirea de stabilire a
cheii primare, īn cazul tabelului CITITORI, cheia primară poate fi
stabilită pe cīmpul IdCarte, pentru a exclude eventualitatea repetării
identificatorului cărţii (īn bibliotecă nu pot exista două cărţi cu
acelaşi identificator). Cheia primară poate fi stabilită şi pe cīteva
cīmpuri. Pentru a stabili cheia primară, selectăm cīmpul respectiv,
apoi executăm un clic pe
butonul din bara cu
instrumente. Ca rezultat, īn partea din stīnga a cīmpului respectiv
apare semnul cheii (vezi fig. 6).
După īncheierea procedurii de descriere a cīmpurilor
şi de stabilire a cheii primare, salvăm tabelul (descrierea lui),
selectīnd comanda Save din meniul File şi indicīnd numele tabelului.
Dacă nu am stabilit o cheie primară (acest lucru nu este obligatoriu),
sistemul ne va avertiza, sugerīndu-ne stabilirea cheii pe un cīmp de
tip AutoNumber. Pentru a confirma, acţionăm butonul Yes. Īn acest caz
sistemul stabileşte automat cheia primară pe un cīmp AutoNumber (dacă
el există) sau creează suplimentar un asemenea cīmp (dacă el nu
există), stabilind pe el cheia primară. Pentru a renunţa la stabilirea
cheii primare, acţionăm butonul No.
Proprietăţile cīmpurilor
Īn afară de tipul cīmpului, putem stabili şi unele
proprietăţi ale sale, cum ar fi mărimea (lungimea), numărul cifrelor
zecimale, formatul datei calendaristice etc. Fiecare tip de date are
proprietăţi prestabilite, dar ele pot fi modificate, executīnd un clic
pe cīmpul respectiv (fig. 6, partea de sus) şi modificīnd valorile
prestabilite care apar īn partea de jos.
Cīmpurile de tip Text pot avea lungimi cuprinse īntre l şi 255
de caractere. Implicit, mărimea cīmpului este de 50, dar ea
poate fi modificată īn limitele amintite, īn funcţie de lungimea maximă
preconizată a valorilor cīmpului
respectiv. Astfel, pentru IdCarte
(identificatorul cărţii), modificăm mărimea cīmpului din 50 (valoarea
prestabilită) īn 8 (valoarea necesară). La fel procedăm şi cu
caracteristicile altor cīmpuri.
Menţionăm şi cu această ocazie, că pentru cīmpurile
ce conţin numai valori numerice (identificatori numerici), care nu vor
fi folosite īn calcule, vom prefera tipul Text īn locul tipului Number.
Acest mod de abordare va facilita ulterior căutarea informaţiei īn baza
de date.
Cīmpurile de tip Number au lungimi diferite īn
funcţie de opţiunea specificată pentru proprietatea Field Size.
Opţiunea implicită pentru cīmpurile de tip Number
este, de regulă, Single, dar ea poate fi modificată, utilizīnd comanda
Options din meniul Tools. Pentru cīmpurile de tip Number poate fi
stabilită şi proprietatea Format, īn care specificăm modul de afişare a
valorilor (numărul cifrelor zecimale etc.).
Cīmpurile de tip Date/Time au lungimi variabile īn funcţie
de formatul datei/orei specificat pentru proprietatea Format a
cīmpului. De altfel, formatul de reprezentare a datelor calendaristice,
la fel ca şi delimitatorii dintre dată, lună şi an, pot să difere de
cele utilizate īn această lucrare. Reprezentarea datelor ţine de modul
īn care a fost personalizat sistemul
Windows. Pentru a schimba formatul de
reprezentare a datelor calendaristice (dar şi a orei, a numerelor şi a
valutei), este necesar de a efectua setările respective, utilizīnd
aplicaţia Regional Options din meniul Control Panel al meniului de bază
Start.
Remarcă: Dacă anul este indicat cu 2 cifre,
Access īl interpretează astfel:
pentru valorile din intervalul 00-29 se subīnţelege anii
2000-2029; pentru valorile din intervalul 30-99 se subīnţelege anii
1930-1999.
Cīmpurile de tip logic (Yes/No) ocupă īn memoria
calculatorului un octet şi pot fi reprezentate īn 4 moduri, īn funcţie
de opţiunea specificată pentru proprietatea Format a acestui cīmp, şi
anume: Yes/No, True/False, On/Off, -1/0. Īn ultimul caz valoarea - l
corespunde stării True (adevăr), iar valoarea 0 - stării False (fals).
Specificarea valorilor prestabilite
Dacă o bună parte din valorile unui cīmp se repetă frecvent (de
exemplu, īn cazul cīnd majoritatea cititorilor au studii superioare),
putem specifica o valoare prestabilită (implicită) a cīmpului
respectiv. Valoarea prestabilită (īn cazul nostru "super") se specifică
pentru proprietatea Default Value a cīmpului. In procesul introducerii
datelor sistemul atribuie cīmpului valoarea prestabilită īn mod
automat, utilizatorul urmīnd să modifice doar valorile care diferă de
cea prestabilită.
Stabilirea unor condiţii de validare
Pentru a diminua riscul introducerii unor valori greşite,
putem stabili condiţii (reguli) de validare pentru valorile cīmpurilor
respective. Regulile de validare se stabilesc pentru proprietatea
Validation Rule a cīmpului. Totodată, pentru proprietatea Validation
Text se specifică mesajul care trebuie să fie afişat īn cazul
nerespectării regulii. Astfel, dacă se ştie că preţul cărţilor nu
depăşeşte valoarea 200, specificăm pentru proprietatea Validation Rule
a cīmpului Preţ condiţia <=200, iar pentru proprietatea Validation
Text -mesajul "Preţul cărţii nu poate fi mai mare de 200 de lei.
Reintroduceţi preţul cărţii. La fel, data īmprumutului/restituirii
cărţii nu poate depăşi data curentă, astfel că pentru cīmpurile
DataImpr şi DataRestit putem stabili condiţia <=Date() pentru
proprietatea Validation Rule. Mesajul specificat pentru proprietatea
Validation Text va fi şi el adecvat. In fiecare din situaţiile descrise
vor fi afişate mesajele respective īn cazul introducerii unor valori
care nu corespund condiţiilor de validare stabilite īn procesul
definirii cīmpurilor.
Modificarea descrierii unui tabel
Īn cazul cīnd apare necesitatea modificării descrierii iniţiale
a unui tabel (adăugarea sau excluderea unuia sau mai multor cămpuri,
schimbarea ordinii, modificarea unor caracteristici etc), deschidem
tabelul respectiv īn regimul Design View şi efectuăm modificările
necesare după cum urmează (īn orice consecutivitate):
a) Modificarea denumirii cīmpului. Executăm un clic
pe denumirea cīmpului şi efectuăm schimbările necesare.
b) Adăugarea unui cīmp. Marcăm cīmpul, īnaintea
căruia trebuie inserat noul cīmp. Pentru aceasta executăm un clic īn
partea stīngă a rīndului respectiv, acesta schimbīndu-şi culoarea. Apoi
executăm comanda Insert Row din meniul Edit.
c) Excluderea unui cīmp. Marcăm cīmpul ca īn cazul
precedent, apoi apăsăm tasta Delete. Confirmăm acţiunea prin OK.
d) Schimbarea ordinii (deplasarea) cīmpurilor. Marcăm
cīmpul care urmează a fi deplasat, apoi, ţinīnd apăsat butonul stīng al
mouse-ului, deplasăm cīmpul dat peste cīmpul, īnaintea căruia dorim să
fie situat.
e) Schimbarea caracteristicilor. Executăm un clic pe
rīndul īn care este definit cīmpul, apoi stabilim caracteristicile
cīmpului īn modul descris īn paragrafele precedente. Īn cazul īn care
īn tabel au fost introduse date,modificarea caracteristicilor
cīmpurilor tabelului poate implica denaturarea informaţiei. Astfel,
dacă micşorăm lungimea unui cīmp de tip Text, este posibilă trunchierea
(din dreapta) a datelor. Modificarea tipului cīmpului poate avea, de
asemenea, consecinţe nedorite. Din această cauză ne vom strădui să
definitivăm proprietăţile cīmpurilor īnainte de a introduce valori īn
tabel.
f) Adăugarea sau anularea unei chei primare. Īn caz
de necesitate, putem adăuga sau anula una sau mai multe chei primare.
Pentru a schimba cheia primară de pe un cīmp pe altul, selectăm cīmpul
nou, apoi acţionăm butonul din bara cu instrumente. Pentru
a stabili cheia primară pe cīteva cīmpuri , le selectăm, apoi acţionăm
acelaşi buton. Pentru a anula una sau mai multe chei primare, executăm
comanda Indexes din meniul View, apoi īn caseta care se deschide
selectăm cīmpurile respective şi apăsăm tasta Delete.
După efectuarea modificărilor, salvăm tabelul cu Save As sau Save din
meniul File.
Introducerea datelor īn tabel
După ce am efectuat procedurile de descriere a
tabelului , putem introduce date īn cīmpurile lui. Pentru a iniţia
procesul de introducere a datelor , deschidem BD (dacă nu este
deschisă) , apoi īn fereastra Database (fig.4) selectăm tabelul
necesar (de exemplu Cititori) şi executăm un clic pe Open. Ca rezultat,
se afişează cīmpurile tabelului respectiv fig.7(iniţial tabelul conţine
doar un rīnd liber).
fig.7 Introducerea şi modificarea datelor īn tabel
Nu este absolut obligatoriu să completăm toate cīmpurile;
astfel dacă anumite date nu sīnt deocamdată cunoscute, introducerea lor
poate fi amīnată.
Excepţie fac cīmpurile pentru care au fost stabilite chei primare.
Aceste cīmpuri nu pot avea valori nule, de aceea valorile lor trebuie
introduse īn mod obligatoriu. Ordinea
introducerii datelor poate fi şi ea oricare. Dacă a fost stabilită o
cheie primară , la o nouă deschidere a tabelului īnregistrările vor fi
afişate īn ordinea crescătoare a valorilor cīmpului respectiv. Datorită
acestui fapt, orice īnregistrare nouă se adaugă la sfīrşitul tabelului,
avīnd certitudinea că ulterior ea va fi plasată īn locul corespunzător.
După terminarea introducerii datelor īnchidem tabelul, acţionīnd
butonul sau executīnd comanda Close din meniul File
(modificările efectuate se salvează automat).
Remarcă: Tipul şi caracteristicile datelor introduse
trebuie să corespundă īntocmai tipului şi caracteristicilor cīmpurilor
respective definite īn procesul
creării (descrierii) tabelului.
Redactarea datelor
Dacă apare necesitatea modificării (editării)
īnregistrărilor unui tabel, deschidem tabelul īn regimul Datasheet
View, acţionīnd butonul Open din fereastra Database (sau executīnd un
dublu-clic pe numele tabelului). Ca rezultat, obţinem tabelul cu
conţinutul precedent, conţinut pe care-1 putem modifica la dorinţă.
Modificările pot fi cele mai diverse: īnlocuirea datelor existente,
completarea unor cīmpuri, ale căror valori nu erau cunoscute anterior,
adăugarea unor īnregistrări noi, ştergerea unor īnregistrări, copierea
unor valori etc. Majoritatea acestor modificări se efectuează prin
simpla deplasare īn cīmpul şi rīndul necesar şi prin īnlocuirea
conţinutului vechi prin altul nou. Menţionăm, că semnul
indică rīndul curent, iar atunci cīnd
iniţiem procedura se modificare a īnregistrării, acest semn este
īnlocuit cu ultimul fiind prezent pīnă la trecerea la o
altă īnregistrare.
In cele ce urmează vom descrie cīteva
proceduri de redactare a datelor.
a) Adăugarea unor īnregistrări noi.
Īnregistrările noi sunt plasate la sfīrşitul
tabelului .
b) Excluderea unor īnregistrări. Pentru a
şterge una sau mai multe
īnregistrări consecutive, marcăm aceste īnregistrări prin glisarea
("tragerea")
mouse-ului pe verticala din stīnga tabelului, apoi apăsăm tasta Delete
sau
alegem comanda Delete din meniul Edit. Ni se va cere confirmarea
acţiunii,
la care vom răspunde prin OK sau vom renunţa prin Cancel.
c) Copierea unor blocuri de date. Pentru a
copia un bloc de date, marcăm
blocul, apoi acţionăm butonul Copy din
bara cu instrumente. Ca rezultat,
conţinutul blocului se copie īn memoria Clipboard. Din acest moment,
conţinutul
memoriei Clipboard poate fi "lipit" oriunde. In acest scop marcăm locul
inserării (blocul-destinaţie) şi acţionăm butonul Paste din bara cu
instrumente.
Remarcă: Dimensiunile şi caracteristicile
blocului-destinaţie trebuie să corespundă īntocmai dimensiunilor şi
caracteristicilor blocului-sursă.
Modificările efectuate īn orice īnregistrare a
tabelului se salvează īn mod automat de fiecare dată cīnd trecem la o
altă īnregistrare, sau la īnchiderea tabelului. Aceasta īnseamnă că
după terminarea lucrului cu un tabel nu este neapărat nevoie să-1
salvăm, - sistemul o va face singur. Utilizatorul trebuie doar să aibă
grijă să īnchidă tabelul īn caz că nu-1 va mai utiliza. Dacă, īnsă, am
efectuat modificări ce ţin de aspectul tabelului (lăţimea coloanelor,
ordinea lor etc.) şi dorim ca aceste modificări să fie prezente la o
nouă deschidere, īnainte de a īnchide tabelul, īl salvăm cu comanda
Save din meniul File.
MS Access păstrează informaţia despre modificările
efectuate, ceea ce permite, īn cazul cīnd am greşit, anularea
modificărilor şi revenirea la starea precedentă. Pentru a anula
modificările din cīmpul curent, apăsăm tasta Esc, iar pentru a anula
modificările din īnregistrarea curentă -apăsăm tasta Esc de două ori.
Pentru a anula modificările din īnregistrare după ce s-a trecut la o
nouă īnregistrare, executăm comanda Undo Saved Record din meniul Edit.
Prin aceasta se revine la situaţia anterioară acţiunii greşite
(nedorite).
Modificări
ce nu afectează structura fundamentală
Pe lăngă modificările care vizează structura unui tabel şi
conţinutul lui, sunt posibile şi modificări care schimbă doar modul de
prezentare a tabelului, fără a afecta structura lui fundamentală.
Aceste modificări ţin de ordinea afişării cīmpurilor (coloanelor),
lăţimea cīmpurilor, īnălţimea rīndurilor etc.
a) Schimbarea ordinii afişării cīmpurilor, īn unele cazuri, este
necesar de a schimba ordinea afişării cīmpurilor, diferită de cea din
descrierea fundamentală, stabilită īn regimul Design View. Pentru a
reamplasa un cīmp, īl marcăm, apoi, ţinīnd apăsat butonul stīng al
mouse-ului, īl deplasăm īn poziţia dorită şi eliberăm butonul. Ca
rezultat, cīmpul deplasat īnlocuieşte cīmpul peste care a fost
suprapus, acesta din urmă deplasīndu-se la dreapta. Īn mod analog putem
deplasa şi alte cīmpuri, astfel īncīt ordinea cīmpurilor să devină cea
dorită. Dar oricare ar fi modificările efectuate īn regimul Datasheet
View (Foaie de date), ele nu afectează ordinea şi caracteristicile
cīmpurilor stabilite īn regimul Design View (Proiectare).
b) Sortarea īnregistrărilor. Pentru a obţine o consecutivitate a
īnregistrărilor, diferită de cea existentă, putem efectua o sortare (īn
ordine crescătoare sau descrescătoare) după valorile unui cīmp al
tabelului. Pentru aceasta plasăm cursorul pe cīmpul respectiv şi
acţionăm unul din butoanele sau . Dacă la
īnchiderea tabelului această modificare nu se salvează, la o nouă
deschidere a tabelului īnregistrările se vor afişa īn ordinea
obişnuită. Modul de sortare descris aici nu prevede sortări complexe,
acestea putīnd fi obţinute īn baza interogărilor .
c) Modificarea lăţimii coloanei unui cīmp. In cazul cīnd lăţimea unui
cīmp nu corespunde lungimii datelor pe care le conţine, putem schimba
(mări, micşora) lăţimea lui. Pentru aceasta poziţionăm indicatorul
mouse-ului pe linia din partea dreaptă a denumirii cīmpului (forma
indicatorului se schimbă īn săgeată dublă orizontală), apăsăm butonul
stīng al mouse-ului şi, deplasīndu-1 la stīnga-la dreapta,
micşorăm-mărim lăţimea cīmpului. Dacă īn poziţia īn care indicatorul
mouse-ului ia forma menţionată mai sus executăm un dublu-clic, lăţimea
cīmpului devine egală cu lungimea celei mai mari īnscrieri a acestui
cīmp din partea vizibilă a tabelului. Subliniem şi cu această ocazie că
aceste modificări nu schimbă lăţimea iniţială a cīmpului, stabilită īn
procesul descrierii lui īn regimul Design View.
d) Modificarea īnălţimii rīndurilor. Pentru a modifica īnălţimea
rīndurilor, poziţionăm indicatorul pe linia ce desparte oricare două
rīnduri (forma indicatorului se modifică īn săgeată dublă verticală),
apăsăm butonul stīng al mouse-ului şi, deplasīndu-1 īn sus-īn jos,
micşorăm-mărim īnălţimea rīndurilor (se modifică simultan īnălţimea
tuturor rīndurilor, şi nu doar a celui curent).
Dacă nu salvăm tabelul cu Save din meniul
File, modificările descrise īn a)-d) īşi pierd actualitatea, astfel
īncīt, la o nouă deschidere a tabelului, ordinea cīmpurilor şi a
īnregistrărilor, dimensiunile coloanelor şi rīndurilor vor rămīne
aceleaşi de pīnă la modificarea tabelului. Dacă īnsă după efectuarea
modificărilor salvăm tabelul, aceste modificări vor fi actuale la o
nouă deschidere a tabelului, dar şi īn acest caz ele nu afectează
caracteristicile din descrierea lui iniţială. După terminarea lucrului
cu un tabel, īl putem minimiza (īn cazul cīnd intenţionăm să-1 mai
utilizăm) sau īnchide (īn cazul cīnd nu-1 vom mai
utiliza). Deschizīnd consecutiv cīteva
tabele şi redimensionīnd ferestrele respective, putem afişa pe ecran
mai multe tabele ale BD. Īnchiderea tabelului se face, după cum am mai
menţionat, prin executarea comenzii Close din meniul File. Pentru a
relua lucrul cu un tabel, īl deschidem, acţionīnd butonul Open din
fereastra Database (fig. 4).
Relaţii dintre tabele. Integritatea datelor
Relaţiile dintre două tabele se stabilesc, de regulă, prin intermediul
unor cīmpuri identice (cu aceeaşi denumire, de aceeaşi lungime, cu
aceleaşi proprietăţi) prezente īn ambele tabele.
Īn cazul relaţiei de tipul unu la mulţi
īn tabelul primar (din partea căruia se realizează relaţia "unu")
trebuie să existe un cīmp, numit cheie primară, īn care nu se admit
valori care se repetă, iar īn tabelul secundar (din partea căruia se
realizează relaţia "mulţi") trebuie să existe un cīmp analogic cu cel
din tabelul primar, numit cheie străină, care poate admite valori care
se repetă.
Relaţia mulţi la mulţi poate fi transformată
īn două relaţii de tipul unu la mulţi prin definirea unui tabel
intermediar, īn care se introduc, īn calitate de chei străine, cheile
primare ale primelor douг tabele. Astfel, pentru a evita relaţia mulţi
la mulţi dintre tabelele CĂRŢI şi CITITORI, a fost definit tabelul
COMENZI īn care au fost incluse cīmpurile IdCarte şi IDCit din tabelele
respective.
Relaţia de tipul unu la unu presupune existenţa īn
ambele tabele a unei chei primare cu aceleaşi caracteristici, īn fond,
două tabele īntre care există o relaţie de tipul unu la unu pot fi
oricīnd unite īntr-un singur tabel; la fel, orice tabel poate fi
divizat īn două sau mai multe tabele īntre care se stabileşte o relaţie
de tipul unu la unu. Divizarea unui tabel īn modul menţionat mai sus
poate fi utilă īn cazul unui tabel cu un număr foarte mare de cīmpuri
(un tabel Access, de exemplu, nu poate conţine mai mult de 255 de
cīmpuri), dar şi īn situaţia cīnd o parte din informaţia care se referă
la o entitate are un caracter confidenţial, sau se utilizează foarte
rar. Īn concluzie, deşi relaţiile de tipul unu la unu
nu sunt caracteristice unei baze de date de tip relaţional, totuşi īn
unele situaţii acest tip de relaţii este preferabil sau chiar necesar.
Dacă la proiectarea tabelelor ţinem cont de principiile expuse
mai sus , atunci Access stabileşte automat relaţiile dintre tabelele
care conţin cīmpuri comune. Totuşi putem stabili relaţii īntre tabelele
bazei de date şi īn mod explicit, utilizīnd comanda Relationships din
meniul Tools. Īn acest caz apare
fig.8 Relaţiile dintre tabelele bazei de date BIBL
o fereastră (fig.8) īn care indicăm tabelele īntre care se
stabilesc relaţii,apoi, cu ajutorul
mouse-ului, trasăm legăturile īntre cīmpurile respective.
Dacă unul din cīmpurile de legătură este de tip
cheie primară (el are o
culoare mai pronunţată), trasarea se face pornind de la acest cīmp.
Tabelul
de la care se trasează legătura se
numeşte tabel primar (principal), iar
celălalt - secundar (subordonat). Ca rezultat, apare o casetă de dialog
(fig.9)
1
fig.9 Stabilirea proprietăţilor relaţiilor
īn care putem specifica proprietăţile relaţiei (legăturii).
Pentru relaţia dintre două tabele pot fi
stabilite următoarele proprietăţi:
1.
Tipul relaţiei (Relationship Type) poate fi stabilit ca unu la unu
(one
to one) sau unul la mulţi (one to many);
2.
Impune integritatea referenţială
(Enforce Referential Integrity}.
Includerea acestui parametru
asigură integritatea datelor
īn procesul
introducerii, modificării sau ştergerii īnregistrărilor din tabelele
legate. Acest
lucru este posibil doar īn cazul cīnd cīmpul din tabelul principal este
de tip
cheie primară, iar cīmpul de legătură din tabelul subordonat are
acelaşi tip de
date. Atunci cīnd introducem date
īn cīmpul de legătură al tabelului
subordonat, sunt acceptate doar acele
valori care se conţin īn cīmpul
respectiv al tabelului principal. De exemplu, dacă nu există un cititor
cu
identificatorul 0472 īn tabelul CITITORI, sistemul nu va admite apariţia
acestui cod īn cīmpul respectiv al tabelului COMENZI. In acest caz este
necesar să introducem mai īntīi datele despre cititorul īn cauză īn
tabelul
CITITORI, apoi să utilizăm identificatorul cititorului īn tabelul
COMENZI.
La fel, nu putem exclude o īnregistrare din tabelul principal,
dacă valoarea
cīmpului de legătură a acestei īnregistrări se conţine īn una sau mai
multe
īnregistrări ale tabelului subordonat.
3. Modificarea
īn cascadă a īnregistrărilor (Cascade Update
Related
Fields). Dacă acest parametru este inclus, sistemul va modifica toate
valorile
cīmpului de legătură ale tabelului subordonat īn cazul cīnd valoarea
cīmpului
respectiv al tabelului principal se modifică. De exemplu, dacă un
cititor a pierdut
carnetul de cititor cu numărul 0519 (identificatorul cititorului) şi i
se remite un nou
carnet cu numărul 1465, această valoare trebuie
să se modifice īn toate
īnregistrările tabelului COMENZI īn care figurează valoarea veche. In
caz contrar,
īmprumuturile de cărţi făcute de cititorul cu identificatorul 0519 nu
sunt valide,
deoarece nu se cunoaşte nici o informaţie despre cititorul īn cauză.
4. Excluderea īn cascadă a
īnregistrărilor (Cascade Delete Related
Records). Dacă acest parametru este activ, atunci excluderea unei
īnregistrări
din tabelul principal implică excluderea tuturor īnregistrărilor din
tabelul
subordonat, īn care valoarea cīmpului de legătură coincide cu cea a
cīmpului
respectiv din tabelul principal. De cele mai multe ori asemenea
excluderi
sunt fireşti, deoarece existenţa unor īnregistrări īn tabelul
subordonat, pentru
care valoarea cīmpului de legătură nu se conţine şi īn tabelul
principal, duce
la pierderea integrităţii datelor.
Toate raţionamentele de mai sus ţin de
integritatea datelor,
asigurarea căreia reprezintă unul din principiile fundamentale ale
proiectării bazelor de date.
§4.Funcţii Access
MS Access conţine un set de funcţii standard de cele mai diferite
tipuri.
Pentru descrierea lor vom folosi urmгtoarele convenюii:
CāmpNum - argument ce reprezintă cīmpuri de tip Number sau
Currency;
CāmpText - argument ce reprezintă cīmpuri de tip Text;
CāmpDate - argument ce reprezintă cīmpuri de tip Date/Time;
Cāmp - argument ce reprezintă cīmpuri de orice tip;
n,m - argumente ce reprezintă numere naturale;
i - argument ce reprezintă numere īntregi;
{} - argumentele incluse īn paranteze figurate sunt opţionale
(neobligatorii);
Argumentele funcţiei se pun īntre paranteze rotunde şi se separă
prin
punct şi virgulă (uneori prin virgulă). Īn cazul lipsei argumentelor,
după denumirea funcţiei se pun paranteze rotunde care nu conţin īn
interior nimic. Īn cazul cīnd argumentul funcţiei reprezintă un cīmp,
numele cīmpului se ia īntre paranteze pătrate [].
Enumerăm īn cele ce urmează cīteva dintre funcţiile sistemului Access:
1. Abs(CāmpNum) - calculează valoarea absolută
(modulul).
2. Avg(CāmpNum) - calculează media aritmetică.
3. Sin(CāmpNum) - calculează valoarea sinusului.
4. Exp(CāmpNum) - calculează puterea numărului e.
5. Log(CāmpNum) - calculează logaritmul natural.
6. Sqr(CāmpNum) - calculează rădăcina pătrată.
7. Int(CāmpNum) - calculează partea īntreagă.
8. Rnd(i) sau Rnd() - returnează un număr aleator situat īntre 0
şi 1.
9. Sum(CāmpNum) - calculează suma.
10. Max(CāmpNum)-calculeazăvaloareamaximă
l 1. Min(CāmpNum) - calculează valoarea minimă.
12. Var(CāmpNum) - calculează variaţia (dispersia).
13. Count(Cāmp) - calculează numărul valorilor
nenule.
14. Left(CāmpText,n) - extrage primele n caractere
(din stīnga).
15. Right(CāmpText,n) - extrage ultimele n caractere
(din dreapta).
16. Len(CāmpText) - calculează lungimea expresiei.
17. LTrim(CāmpText} - lichidează toate spaţiile de
debut (din faţă).
18. RTrim(CāmpText) - lichidează toate spaţiile (blancurile) de la
sfīrşit.
19. Trim(CāmpText) - lichidează toate spaţiile de
debut şi de la sfīrşit.
20. Mid(CāmpText;n{;m}) - extrage primele m
caractere, īncepīnd cu al
n-lea. Īn cazul cīnd m lipseşte - extrage toate caracterele, īncepīnd
cu al n-lea.
21. InStr({n;}Text,CīmpText) - calculează locul, īncepīnd cu care
valoarea Text se conţine īn īntregime īn CīmpText. Căutarea se face
īncepīnd
cu poziţia l (sau n, dacă este specificat).
22. Date() - returnează data curentă.
23. Time() - returnează ora curentă.
24. Now() - returnează data şi ora curente.
25. Weekday(CāmpDate) - calculează ziua săptămīnii
care corespunde datei.
26. Year(CāmpDate) - extrage anul (cu 4 cifre).
27. DateAdd(“Tip”;i;CāmpDate) - adună/scade la/din
CāmpDate i intervale de
tipul dat (i poate lua şi valori negative). "Tip " poate avea una din
următoarele valori:
"q"- trimestre; ex.:
DateAdd("q";7;Date()) - peste 7 trimestre din ziua
curentă.
"m" - luni; ex.: DateAdd("m ";-9;Date())
- cu 9 luni īn urmă faţă de
ziua
curentă.
"d" - zile; ex.:
DateAdd("d";25;[DataImpr]) - peste 25 de zile de la data
īmprumutului.
"yyyy" - ani; ex.:
DateAdd("yyyy";-4;Date()) - cu 4 ani īn urmă de la data
curentă,
"ww" - săptămīni; ex:
DateAdd("ww";2;[DataRestit]) - peste 2 săptămīni de
la data restituirii.
"h" - ore; ex.: DateAdd("h";-27;Now()) -
cu 27 de ore in urmă.
Remarcă: Funcţiile descrise mai sus pot fi utilizate
numai īn
interogări, formulare, rapoarte şi īn limbajul de programare Visual
Basic for Applications.
§5. Interogări Access
Performanţele unui SGBD depind īn mare măsură de
capacitatea
extragerii rapide a diferitor informaţii īn forma dorită. Īn multe
cazuri este necesar de a selecta date din mai multe tabele simultan. De
exemplu, pentru a selecta cărţile din domeniul informaticii editate īn
Franţa după anul 2001, utilizăm 3 tabele: CĂRŢI, ŢĂRI şi TEMATICI.
Pentru a formula condiţii de selecţie, īn MS Access exista o clasă
specială de obiecte (alături de tabel )numite Interogări (engl.
Queries).
Sinonime: Interogări - Cereri - Interpelări.
Interogările reprezintă modalităţi de selecţie şi afişare a
informaţie din unu sau mai multe tabele, formulate cu ajutorul unor
condiţii logice.
Tipuri de interogări
Īn funcţie de modul de definire şi rezultatele acţiunii,
interogările pot fi clasificate astfel:
a) interogări de selecţie (folosind
condiţii logice);
b) interogări de sortare (indicīnd
cīmpul/cīmpurile şi ordinea sortării);
c) interogări de excludere a unor īnregistrări din
BD (de exemplu,
excluderea tuturor cititorilor care nu au īmprumutat cărţi
īn
ultimii 2 ani);
d) interogări de modificare a unor īnregistrări din
BD (de exemplu,
majorarea preţurilor tuturor cărţilor cu 20%);
e) interogări de obţinerea a unor
informaţii rezultante (īn cīmpuri noi)
īn baza informaţiei
existente (de exemplu,
obţinerea
vīrstei cititorului prin scăderea anului de naştere din anul curent);
f) interogări de obţinere a unor
totaluri, medii etc.;
g) interogări īncrucişate.
Īn toate cazurile, cu excepţia ultimelor două, rezultatul
interogării
este un nou set de date, numit set dinamic (engl: Dynaset). Setul
dinamic (rezultalul interogării) conţine doar cīmpurile specificate ale
īnregistrărilor din tabelele specificate care satisfac condiţiilor
specificate. Denumirea '"Set dinamic" este legată de faptul că orice
modificări ale datelor din tabelele specificate īn interogare implică
modificări respective ale rezultatului interogării (la o nouă executare
a ei). Şi invers, orice modificări īn setul dinamic implică modificări
īn tabelele respective (cu condiţia respectării integrităţii datelor).
Seturile dinamice nu se memorizează; ele se formează din nou de fiecare
dată cīnd executăm o interogare. Dac īn tabelele BD intervin
modificări, rezultatele executării a două interogări identice pot fi
diferite, īn cele ce urmează vom descrie modalităţile de definire şi
executare a interogărilor nominalizate.
5.1 Interogări de selecţie a īnregistrărilor(Select Query)
Exemplu:1
Pentru a defini o interogare de selecţie (de exemplu,
afişarea
emisiunilor cu desene animate), acţionăm fila Queries din fereastra
Database (fig. 10), apoi butonul New.
fig.10 Fereastra cu clasele de obiecte Access
Īn continuare indicăm unul din cele 5 moduri de creare a
interogărilor (īn cazul nostru Design View)
Din caseta care apare (fig. 11) selectăm consecutiv (īn
orice
ordine) tabelele necesare (īn cazul nostru,Emisiuni,Genuri,Canale TV)
şi pentru fiecare acţionăm butonul Add.
fig.11 Selectarea tabelelor pentru definirea interogării
După selectarea tabelelor acţionăm butonul Close.
Dacă tabelele au
cīmpuri comune (definite īn procesul creării lor), Access stabileşte īn
mod automat legăturile respective (fig. 12). Īn continuare indicăm, īn
partea de jos a ferestrei, cīmpurile din fiecare tabel (īn ordinea
dorită) care urmează a fi afişate sau pentru care se vor specifica
condiţii de selecţie şi/sau de sortare. Includerea cīmpurilor se face
prin "tragerea" lor cu ajutorul mouse-ului din tabelele din caseta de
sus īn rīndul Field al casetei de jos sau prin executarea unui
dublu-clic pe denumirile respective. După aceasta specificăm condiţiile
selecţiei şi/sau ordinea sortării, īn acest fel interogarea se
consideră definită (fig. 12).
fig12.Specificarea condiţiilor de selecţie
Īn rīndul Criteria din partea de jos a ferestrei specificăm
condiţia
selecţiei Des* pentru cīmpul DenGen al tabelului Genuri. Dacă dorim ca
īnregistrările să fie afişate īntr-o anumită ordine
(crescătoare/alfabetică sau descrescătoare) pentru cīmpul respective
specificăm opţiunile Ascending sau Descending īn rīndul
sort. Dacă
indicăm Ascending pentru cīmpul DenEmisiunii al tabelului emisiuni
denumirile emisiunilor vor fi afişate īn ordenea alfabetică.
Interogarea astfel definită poate fi executată imediat īn
scopul
obţinerii rezultatului (fig. 13), sau salvată pentru a fi executată
ulterior. Īn primul caz acţionăm
butonul (Datasheet View) din
bara cu instrumente īn aldoile caz executăm comanda Save din meniul
File. La salvarea interogării indicăm numele ei, care nu trebuie
să
coincidă cu numele unor tabele sau ale unor interogări definite
anterior. Setul dinamic (rezultatele interogării) conţine cīmpurile
marcate cu simbolul īn rīndul Show al
ferestrei. Celelalte cīmpuri
chiar dacă sunt incluse īn interogare, nu se afişează.
fig.13 Rezultatele interogării
Exemplu 2. Lista emisiunilor cu durata mai mică de 30 de minute.
Pentru afişarea emisiunilor cu durata mai mică de 30
minute acţionăm
fila Queries din fereastra Database , apoi butonul New. Īn
continuare
indicăm unul din cele 5 moduri de creare a interogărilor, īn cazul
nostru Design View (fig.14).
fig.14
Din caseta care apare (fig.15) selectăm tabelul Emisiuni,Canale TV şi
Genuri şi acţionăm butonul Add.
fig.15
După selectarea tabelului acţionăm butonul Close. Apoi executăm dublu
clic pe denumirile cāmpurilor şi vor trece īn rīndul Field din caseta
de jos (fig.16).
fig.16
După aceasta specificăm condiţiile selecţiei. Īn rīndul
Criteria
scrim condiţia <30 pentru cāmpul Durata Emisiunii al tabelului
Emisiuni şi ne va afişa lista emisiunilor cu durata mai mică de 30
minute.
fig.17. Rezultatul interogării
Exempul 3: Lista emisiunilor ştiri
Pentru afişarea emisiunilor ştiri acţionăm fila
Queries din
fereastra Database , apoi butonul New. Īn continuare indicăm unul din
cele 5 moduri de creare a interogărilor, īn cazul nostru Design View
(fig.14).
Din caseta care apare (fig.15) selectăm tabelul Emisiuni ,
Genuri
acţionăm butonul Add .După selectarea tabelului acţionăm butonul Close.
Apoi executăm dublu clic pe denumirile cāmpurilor şi
vor trece īn rīndul Field din caseta de jos
(fig.18).
fig.18
După aceasta specificăm condiţiile selecţiei. Īn rīndul Criteria
scrim condiţia “ştiri” pentru cāmpul DenGen al tabelului Genuri şi ne
va afişa lista emisiunilor ştiri.
fig.19. Rezultatul interogării
Exemplul 4: Lista emisiunilor īn limba rusă
Fie că dorim să afişăm lista emisiunilor īn limba rusă. Pentru aceasta
executăm următorii paşi:
Definim o interogare īn care includem tabelele Emisiuni,
Limbi,
Canale TV din care selectăm cāmpurile DenEmisiunii, DenCanal, DenLimba
(fig.20)
fig.20
După aceasta specificăm criteriul de selecţie īn rīndul Criteria pentru
cāmpul DenLimba din tabelul Limbi şi ne va afişa lista emisiunilor īn
limba rusă.
fig.21
5.2 Interogări de sortare a īnregistrărilor
După ce am definit condiţiile de selecţie, putem stabili
condiţii de sortare pentru unul sau mai multe cāmpuri.
Exemplu 1: Pentru afişarea
emisiunilor īn ordine alfabetică
executăm un clic īn rīndul Sort al casetei (fig.22) īn dreptul cāmpului
DenEmisiuni şi din lista derulantă alegem opţiunea Ascending.
fig.22
Pentru a afişa rezultatul interogării (fig.23), acţionăm
butonul (Datasheet View) din bara cu instrumente.
fig.23
Sortarea datelor poate fi făcută şi fără a specifica condiţii de
selecţie. Īn acest caz se vor afişa toate īnregistrările, dar ordinea
lor va corespunde condiţiilor stabilite īn rīndul Sort pentru cāmpurile
respective.
Exemplu 2: Lista emisiunilor īn ordinea duratei lor.
Pentru afişarea emisiunilor īn ordine duratei lor executăm un
clic īn
rīndul Sort al casetei (fig.24) īn dreptul cāmpului Durata emisiunii şi
din lista derulantă alegem opţiunea Ascending.
fig.24
Pentru a afişa rezultatul interogării (fig.25), acţionăm
butonul (Datasheet View) din bara cu instrumente.
fig.25
5.3 Interogări de actualizare a īnregistrărilor (Update Query)
Īn cazul cīnd este necesar de a modifica un număr mare de
īnregistrări conform unuia şi aceluiaşi algoritm, putem defini o
interogare de modificare (Update Query)
Vom descrie īn continuare modul de definire a unei interogări
pentru care ştirile se măresc cu 5 minute.
1. Definim interogarea īn modul descris īn p.5.1.
2. Includem tabelul Emisiuni şi Genuri.
3. Selectăm Update din meniul Query sau acţionăm butonul din bara de
instrumente.Ca rezultat titlul ferestrei se modifică īn Update Query,
iar īn partea de jos apare rīndul Update To (fig.26).
fig.26
4. Includem (prin “tragere”) īn celulele rīndului Field cāmpurile
DenEmisiunii, DenGen, Durata emisiunii.
5. Introducem īn rīndul Update To pentru cāmpul DenEmisiunii
expresia
[DenEmisiunii], DenGen expresia [DenGen], Durata emisiunii expresia
[Durata emisiunii]+5
6. Introducem īn rīndul Criteria pentru cāmpul DenGen condiţia Stiri.
7. Acţionăm butonul din bara cu instrumente, pentru a
obţine valorile
curente ale cāmpului Durata emisiunii care urmează a fi modificate
(fig.27).
fig.27
Modificările propriu-zise vor fi operate numai după trecerea īn regimul
Design View şi acţionarea butonului din bara cu instrumente sau
executarea comenzii Run din meniul Query. Īn acest caz pe ecran va
apărea un mesaj despre numărul total al īnregistrărilor care urmează a
fi modificate. Acţionīnd butonul Yes , Access va efectua modificările
(fig.28). Pentru a renunţa la modificări, acţionăm butonul No .
fig.28
Remarcă: Interogările de tip Update se execută de regulă o singură
dată. Īn cazul executării repetate a interogării definite īn exemplul
de mai sus, vom obţine de fiecare dată mărirea emisiunilor ştiri cu 5
minute.
5.4
Interogări de excludere a īnregistrărilor (Delete Query)
Fie, de exemplu, că dorim să excludem din tabelul Emisiuni
toate
emisiunile īntre ora 1000 -1200. Pentru aceasta, executăm următoarele
acţiuni:
1. Definim interogarea īn modul descris īn p 5.1.
2. Includem tabelul Emisiuni.
3. Selectăm Delete Query din meniul Query sau
acţionăm butonul
(dacă este afişat) din bara cu instrumente. Ca rezultat, titlul
ferestrei se
schimăг īn Delete Query iar īn partea de jos a ferestrei apare rīndul
Delete.
4. Din lista cīmpurilor tabelului Emisiuni, afişată
īn partea de sus a
ferestrei (fig. 8.12), selectăm cāmpurile care vor fi afişate sau
pentru care vor
fi specificate condiţii de selecţie
DenEmisiunii şi Timpul
īnceperii şi le "tragem" īn celulele respective ale rīndului Field din
partea
de jos. Ca rezultat, īn celulele respective pentru fiecare cāmp apare
opţiunea
Where (din engleză - Unde, In care).
5. Introducem īn celulele rīndului Criteria
condiţiile selecţiei. Īn cazul
nostru pentru cīmpul Timpul īnceperii scriem
condiţia Between 1000 And 1200.
fig.29
6. Pentru a obţine lista īnregistrărilor care urmează a fi excluse (dar
īncă n-au fost excluse), acţionăm butonul (Datasheet
View) din bara
cu instrumente. Ca rezultat, obţinem fereastra, reprezentată īn figura
8.13.
fig.30
7. Dacă rezultatele obţinute īn p.6 sunt cele dorite,
revenind la
regimulDesign View, putem elimina realmente īnregistrările, executīnd
comanda Run din meniul Query sau acţionīnd butonul (Run) din bara
cu
instrumente. Ca rezultat, pe ecran apare un mesaj despre numărul total
al īnregistrărilor care urmează a fi eliminate. Dacă acţionăm butonul
Yes, īnregistrările vizate sunt eliminate definitiv. Pentru renunţare,
acţionăm butonul No.
8. Salvăm interogarea, executīnd comanda Save As din
meniul File şi
indicīnd numele interogă
5.5 Interogări de grupare şi totalizare a īnregistrărilor
Īn multe cazuri apare necesitatea de a obţine valori
rezumative
referitoare la toate īnregistrările din tabel sau pentru o submulţime a
lor. De exemplu, ar putea să ne intereseze cīte emisiuni de fiecare gen
sunt. Īn acest scop īn Access pot fi definite interogări īn care sunt
specificate condiţii de grupare şi totalizare.
Pentru obţinerea valorilor rezumative, sunt prevăzute
următoarele funcţii:
-Sum, pentru calcularea sumei valorilor cīmpului;
-Avg, pentru calcularea mediei valorilor cīmpului;
-Min, pentru găsirea valorii minime;
-Max, pentru găsirea valorii maxime;
-Count, calculează numărul de valori ale cīmpului (excluzīnd cele vide);
-StDev, pentru calcularea abatem standard;
-Var, pentru calcularea dispersiei.
Valorile rezumative pot fi obţinute atīt pentru toate īnregistrările
din tabel cīt şi pentru grupuri de īnregistrări.
Fie că dorim să obţinem informaţii despre cīte
emisiuni de fiecare gen sunt. Pentru aceasta executăm următoarele
acţiuni:
1. Definim o interogare īn care includem tabelele
Emisiuni şi Genuri
din care selectăm cīmpurile DenGen şi DenEmisiunii
(fig)
fig.31
2. Selectăm opţiunea Totals din meniul View; ca rezultat īn
caseta de
jos apare rīndul Total, iar īn celulele respective ale cīmpurilor
selectate opţiunea Group By
3. Din lista derulantă a cīmpului DenEmisiunii (rīndul Total) selectăm
opţiunea Count.
4. Acţionăm butonul pentru a obţine valorile
căutate (fig)
fig.32
5.7 Interogări īncrucişate (Crosstab Query)
In multe cazuri rezultatele unei interogări sunt
greu de perceput
din cauza volumului mare de informaţii selectate. In figura
sunt
prezentate datele despre cīte emisiuni de fiecare gen sunt, obţinute cu
ajutorul unei interogări de grupare şi totalizare.
fig
Access permite gruparea şi reprezentarea datelor īntr-o
formă
compactă, formă care se aseamănă cu un tabel electronic.Īn acest scop
se definesc interogări speciale, numite interogări īncrucişate
(Crosstab Query).
Pentru a defini o interogare īncrucişată procedăm iniţial ca īn
cazul
unei interogări de selecţie obişnuită, adică selectăm tabelele
Emisiuni, Canale TV, Genuri, din care selectăm cāmpurile DenGen,
DenCanal, DenEmisiunii (fig)
fig
Īn continuare parcurgem următorii paşi:
1. Selectăm opţiunea Crosstab din meniul Query. Ca
rezultat, titlul ferestrei
se schimbă īn Crosstab Query, iar īn partea de jos apare rīndul
Crosstab.
2. Definim cāmpul DenGen, valorile căruia vor servi
īn calitate de
denumiri ale rīndurilor tabelului. Pentru aceasta acţionăm
butonul cu
săgeată din rīndul Crosstab pentru cāmpul DenGen şi din lista derulantă
care apare selectăm opţiunea Row Heading.
3. In mod analogic definim cāmpul DenCanal, valorile
căruia vor
servi īn calitate de denumiri ale coloanelor tabelului . Pentru aceasta
acţionăm butonul cu săgeată din rīndul Crosstab pentru cāmpul DenCanal
şi din lista derulantă care apare selectăm opţiunea Column Heading.
4. Īn rīndul Total īnlocuim opţiunea Group By din
cāmpul DenEmisiunii prin
operatorul Count.
5. Pentru cāmpul DenEmisiunii īn rīndul Crosstab
stabilim opţiunea Value pe
care o selectăm din lista derulantă prin analogie cu acţiunile descrise
mai sus.
6. Acţionăm butonul pentru vizualizarea
rezultatelor (fig)
fig
Cele mai ok referate! www.referateok.ro |