Interogarile se folosesc pentru a vizualiza, modifica si analiza datele din tabele in moduri diferite. Ele se folosesc, de asemenea, ca sursa de inregistrari pentru forme si rapoarte. In esenta, o interogare este o solicitare de furnizare a unor date din baza de date pe care Microsoft Access o memoreaza in baza de date. Modul de lucru cu o interogare seamana, in unele privinte, cu modul de lucru cu un tabel. Dar, spre deosebire de un tabel care contine date, o interogare se "populeaza" cu date doar in momentul executiei ei.
O interogare poate selecta date dintr-un tabel sau din mai multe tabele. De fapt, puterea interogarilor consta in posibilitatea de a aduce impreuna, in forme, dar mai ales in rapoarte, informatii din mai multe tabele.
Interogarile pot fi create cu un wizard (cele mai simple) sau pornind de la zero folosind fereastra Query Design
Exemplele se vor baza pe tabelele din baza de date "Evidenta cursantilor" pe care cursantii o gasesc pe calculatoarele din sala de curs, in folder-ul Access2000.
a) Interogari de selectie
O interogare de selectie se foloseste pentru a extrage date care indeplinesc anumite conditii, din unul sau mai multe tabele, pentru a sorta si grupa datele, precum si pentru a efectua calcule cu datele selectate.
b) Interogari cu parametru
O interogare cu parametru permite furnizarea criteriilor de selectie in mod dinamic, in timpul executiei acesteia.
c) Interogari Crosstab
O interogare Crosstab poate extrage date din unul sau mai multe tabele, afisandu-le intr-o forma sintetica, similara unei foi de lucru.
d) Interogari de actiune
O interogare de actiune executa modificari asupra datelor din tabele (adaugari, modificari, si stergeri) si pot crea tabele noi. Interogarile de actiune sunt, la randul lor, de mai multe feluri:
interogari pentru crearea unui tabel nou (Make-Table Query
interogari pentru adaugare de inregistrari (Append Query
interogari pentru modificare de inregistrari (Update Query
interogari pentru stergere de inregistrari (Delete Query
e) Interogari SQL
Interogarile SQL folosesc comenzi SQL in selectarea datelor.
In selectarea datelor, cel mai folosit tip de interogare este interogarea de selectie.
Simple Query Wizard poate fi folosit pentru a crea interogari de selectie simple, din unul sau mai multe tabele, fara criterii de selectie, dar cu posibilitatea de a realiza calcule simple (suma, medie, maxim, minim, numar de inregistrari) pentru campurile numerice.
In fereastra Database se executa click pe butonul Queries (din bara de obiecte) apoi pe butonul New (se afiseaza caseta de dialog New Query
Daca se executa dublu-click pe optiunea Create query by using wizard, se afiseaza caseta de dialog Simple Query Wizard (II) de la etapa 2.
Se selecteaza Simple Query Wizard si se executa click pe OK (se afiseaza caseta de dialog Simple Query Wizard (I)
Din lista Tables/Queries se selecteaza tabelul pentru care se creeaza interogarea (pot fi folosite mai multe tabele, dar acestea trebuie mai intai legate in fereastra Relationships
Se precizeaza campurile care vor fi adaugate in interogare, prin transferarea lor din lista Available Fields in lista Selected Fields (folosind butoanele si sau facand dublu‑click pe fiecare camp din lista Available Fields
Se executa click pe Next (se afiseaza caseta de dialog Simple Query Wizard (II), daca tabelul contine campuri numerice, sau Simple Query Wizard (III), daca tabelul nu contine campuri numerice).
Pentru ca interogarea sa afiseze doar campurile inregistrarilor din tabel, se selecteaza butonul de optiune Detail (shows every field of every record).
Pentru a efectua calcule de sumarizare, se selecteaza butonul de optiune Summary, apoi se executa click pe butonul de comanda Summary Options (se afiseaza caseta de dialog Summary Options
Pentru fiecare camp numeric, se selecteaza caseta de control corespunzatoare functiei de sumarizare dorite (Sum Avg Min Max sau Count
Se executa click pe OK (se revine in caseta de dialog Simple Query Wizard (II)
Se executa click pe Next (se afiseaza caseta de dialog Simple Query Wizard (III
In caseta What title do you want for your query se precizeaza numele sub care va fi salvata interogarea sau se accepta numele propus de wizard
Se selecteaza unul din cele doua butoane de optiune pentru a determina actiunea urmatoare care sa se execute dupa ce se executa click pe Finish
Open the query to view information, deschide interogarea in modul de afisare Datasheet
Modify the query design, deschide interogarea in fereastra Query Design
Se executa click pe Finish
In fereastra Database se executa click pe butonul Queries (din bara de obiecte) apoi pe butonul New (se afiseaza caseta de dialog New Query
Daca se executa dublu-click pe elementul Create query in Design view, din fereastra Database, se afiseaza fereastra Query Design si caseta de dialog Show Table
Se selecteaza Design View si se executa click pe OK (se afiseaza fereastra Query Design si caseta de dialog Show Table
Se adauga tabelul/tabelele in interogare (dublu-click pe numele tabelului sau se selecteaza tabelul si se executa click pe butonul de comanda Add). Se executa click pe Close pentru a inchide caseta de dialog Show Table
Se adauga campurile din tabel/tabele in grila de proiectare (vezi capitolul Adaugarea campurilor in grila de proiectare).
Se precizeaza criterii de selectie, daca este cazul.
Se vizualizeaza rezultatul interogarii (se executa click pe instrumentul View din caseta de instrumente Query Design
Se salveaza interogarea (prin intermediul casetei de dialog Save As
Fereastra Query Design are doua parti: panoul superior care afiseaza listele campurilor pentru tabelele/interogarile adaugate in interogare (se afiseaza si liniile de legatura dintre tabele) si panoul inferior care contine grila de proiectare, formata din randuri si coloane.
Field
In celulele randului Field se adauga numele campurilor.
Table
Identifica tabelul/interogarea din care provine campul. Acest rand este util mai ales in cazul in care interogarea se bazeaza pe mai multe tabele.
Daca randul Table nu apare in grila de proiectare, se alege View Table Names
Pentru a specifica daca randul Table va apare sau nu in grila de proiectare cand se creeaza o interogare noua, se selecteaza sau se deselecteaza caseta de control Show table names din caseta de dialog Options (tab-ul Tables/Queries
Sort
Se specifica daca Microsoft Access va sorta campul (Ascending/Descending) sa nu.
Show
Determina daca in rezultatul interogarii vor fi afisate datele din campul respectiv. Daca se selecteaza caseta , campul va apare in rezultatul interogarii.
Observatii
Daca in interogare se introduce un criteriu de selectie sau se precizeaza o ordine de sortare, pentru un camp care nu trebuie sa apara in interogare, se deselecteaza caseta
Cand se inchide o interogare, Microsoft Access muta campurile ascunse (cu caseta neselectata) in coloanele cele mai din dreapta din grila de proiectare.
Criteria
Se introduc criterii care sa limiteze numarul de inregistrari selectate.
Or
Este o extensie a randului Criteria care permite introducerea unui criteriu complex pentru un camp.
Total
Se afiseaza cand se executa click pe instrumentul Totals din bara cu instrumente Query Design (sau se alege View Totals) si este folosit pentru gruparea inregistrarilor.
Append To (numai pentru interogari de tip Append)
Se precizeaza numele campului din tabelul destinatie.
Update To (numai pentru interogari de tip Update)
Se precizeaza numele campului care va fi actualizat din tabelul destinatie.
Delete (numai pentru interogari de tip Delete)
Pentru campurile in care se precizeaza criterii, se selecteaza Where
Crosstab (numai pentru interogari de tip Crosstab)
Se selecteaza:
Row Heading pentru antet de rand si pentru totalul pe randuri.
Column Heading pentru antet de coloane.
Value pentru campul de calcul (de sumarizare).
not shown) pentru campurile in care se introduc criterii.
Se afiseaza interogarea in fereastra Query Design (daca nu este afisata, se selecteaza numele interogarii in fereastra Database si se executa click pe Design
Se alege Query Show Table sau se executa click pe instrumentul Show Table din caseta cu instrumente Query Design (se afiseaza caseta de dialog Show Table
Se selecteaza unul din tab-urile Tables Queries sau Both, in functie de obiectele care se adauga in interogare (tabele, interogari sau si tabele si interogari).
Se adauga obiectele (tabele/interogari) in interogare, prin una din metodele:
dublu-click pe numele tabelului/interogarii din lista;
se selecteaza tabelul/interogarea si se executa click pe butonul de comanda Add
se selecteaza mai multe tabele/interogari din lista (prin glisare, prin Ctrl click pe fiecare tabel/interogare, sau prin click pe primul tabel/interogare apoi Shift click pe ultimul) si se executa click pe butonul de comanda Add
Se executa click pe butonul de comanda Close pentru a inchide caseta de dialog Show Table
Observatii
Un tabel poate fi adaugat intr-o interogare si prin glisarea cu mouse-ul a numelui tabelului din fereastra Database in fereastra Query Design
Pentru a elimina un tabel dintr-o interogare, se selecteaza lista de campuri a tabelului din panoul superior al ferestrei Query Design si se apasa tasta Delete (vor fi eliminate din grila de proiectare campurile corespunzatoare tabelului eliminat din interogare).
In grila de proiectare, campurile se introduc in celulele din randul Field, prin una din urmatoarele metode:
a) Se selecteaza numele campului din lista asociata fiecarei celule din randul Field
b) Se gliseaza cate un camp din lista de campuri (din panoul superior) in cate o celula din randul Field
c) Se face dublu click pe numele campului in lista de campuri (din panoul superior).
d) Se selecteaza mai multe campuri din lista de campuri (cu Ctrl click pe fiecare camp sau cu click pe primul camp apoi Shift click pe ultimul camp) apoi se gliseaza selectia intr-o celula goala din randul Field. Pentru a selecta toate campurile din lista, se executa dublu-click pe bara de titlu a listei de campuri.
e) Se gliseaza caracterul asterisk " " (toate campurile) din lista de campuri intr-o celula goala din randul Field. Aceasta metoda are avantajul ca actualizeaza automat structura interogarii cand se actualizeaza structura tabelului (adaugarea sau stergerea de campuri), dar prezinta dezavantajul ca pentru a introduce criterii sau ordini de sortare, functii de totalizare si pentru a realiza gruparea inregistrarilor, trebuie adaugate campurile separat. De asemenea, intr-o interogare nu intereseaza intotdeauna toate campurile din tabel.
f) Se selecteaza elementul nume_tabel.* din lista asociata celulei din randul Field
Se selecteaza coloana corespunzatoare campului care se sterge (se executa click pe antetul coloanei).
Se apasa tasta Delete
sau:
Se executa click intr-o celula din orice rand din coloana care se sterge.
Se alege Edit Delete Columns
Observatii
Pot fi sterse simultan mai multe campuri: se selecteaza coloanele corespunzatoare campurilor (se gliseaza pe antetele coloanelor) si se apasa tasta Delete
Pentru a schimba pozitia unui camp in grila de proiectare, se selecteaza coloana corespunzatoare campului care trebuie mutat apoi se gliseaza antetul coloanei selectate la noua pozitie.
Campurile adaugate intr-o interogare mostenesc proprietatile setate in tabel (in lista Field Properties). Unele proprietati pot fi setate diferit in grila de proiectare.
Se selecteaza campul din grila de proiectare.
Se alege View Properties sau se executa right-click pe campul respectiv apoi se selecteaza Properties din meniul de comenzi rapide (se afiseaza fereastra Field Properties pentru campul respectiv).
Pot fi setate proprietatile: Description Format Decimal Places (numai pentru campuri numerice), Input Mask si Caption in tab-ul General, si Display Control in tab-ul Lookup
Observatii
a) In fereastra Field Properties nu sunt afisate valorile proprietatilor mostenite.
b) Proprietatile setate in grila de proiectare au prioritate fata de cele setate in tabel.
c) Setarea proprietatilor in grila de proiectare nu schimba proprietatile setate in tabel.
Criteriile de selectie sunt restrictii care se introduc intr-o interogare pentru a identifica inregistrarile specifice cu care se doreste sa se lucreze. Pentru introducerea criteriilor de selectie se folosesc celulele din randul Criteria si din randul Or
Pentru construirea criteriilor de selectie, se folosesc:
a) operatori (aritmetici, de atribuire si de comparatie, logici, de concatenare, de identificare, alti operatori);
b) valori literale folosite in operatiile de comparare (siruri de caractere, valori numerice, data calendaristica/ora);
c) identificatori (nume de campuri, nume de controale din forme, constantele predefinite: True False Yes No si Null
d) functii (de data calendaristica si ora, de lucru cu siruri de caractere, matematice si trigonometrice, de conversie a tipului de data, financiare, generale).
Operator |
Descriere |
Adunare |
|
Scadere |
|
- (unar) |
Schimba semnul unui operand |
Inmultire |
|
Impartire |
|
Impartire intreaga (imparte un operand intreg la altul) |
|
Mod |
Modulo (intoarce restul impartirii la un intreg) |
Ridicare la putere |
Operator |
Descriere |
< |
Mai mic decat |
<= |
Mai mic sau egal cu |
Egal cu |
|
>= |
Mai mare sau egal cu |
> |
Mai mare decat |
<> |
Diferit de |
Operator |
Descriere |
And |
SI logic |
Or |
SAU logic |
Not |
NON logic |
Xor |
SAU exclusiv |
Operatorii de concatenare sunt folositi pentru a uni (alatura) doua siruri de caractere intr‑unul singur. Desi operatorul (+) concateneaza doi operanzi de tip Text, in cazul in care unul dintre ei contine valoarea Null rezultatul concatenarii va fi valoarea Null. Din acest motiv, pentru concatenare se foloseste operatorul ampersand (&
Operator |
Descriere |
Separator intre nume de obiecte (exemplu: [Forms]![DataStart] |
|
Separator intre numele obiectului si o proprietate sau o metoda (exemplu: TextBox1.Font.Bold = True |
Operator |
Descriere |
Is |
Se foloseste impreuna cu valoarea logica Null pentru a determina daca o valoare este Null (sau Not Null daca nu este Null |
Like |
Se foloseste pentru a compara o valoare de tip sir de caractere cu un sablon si determina daca acesta incepe cu unul sau mai multe caractere (in sablon se foloseste caracterul de inlocuire - oricare, mai mute caractere sau - oricare, un singur caracter). |
Between |
Se foloseste pentru a determina daca o valoare numerica sau o data calendaristica se afla intre doua limite (intre cele doua limite se plaseaza cuvantul And |
In |
Se foloseste pentru a determina daca o valoare de tip sir de caractere se afla intr-o lista de valori. |
Pentru crearea expresiilor de selectie se folosesc trei tipuri de valori literale:
a) numere (inclusiv numere cu zecimale si numere in notatie stiintifica);
b) siruri de caractere (text). Cand se folosesc siruri de caractere in expresiile de selectie in grila de proiectare, Microsoft Access incadreaza automat sirurile de caractere cu ghilimele.
c) date calendaristice si ore incadrate de caractere diez (
Identificatorii sunt nume de obiecte care se folosesc in construirea expresiilor de selectie. De exemplu, daca expresia de selectie se bazeaza pe o valoare pe care utilizatorul a introdus-o intr-o caseta de text dintr-o forma, trebuie precizata clasa de obiecte (in acest caz, Forms) urmata de numele formei si de numele casetei de text (identificatorii vor fi separati prin operatori de identificare).
Exemplu
Se creeaza o interogare pentru tabela Cursanti care trebuie sa selecteze toti cursantii a caror data de nastere este mai mica decat data calendaristica furnizata prin intermediul unei forme. Forma se numeste frmSelectCursanti iar caseta de text in care se introduce data calendaristica se numeste DataNasterii. In celula Criteria pentru campul din interogare se introduce criteriul:
<[Forms]![frmSelectCursanti]![DataNasterii]
Functia |
Descriere |
Exemplu |
Date |
Intoarce data calendaristica curenta a calculatorului. |
Date() |
DateAdd |
Intoarce data calendaristica la care s-a adaugat un anumit interval: "d" (zile), "ww" (saptamani), "m" (luni), "q" (trimestre), "yyyy" (ani). |
DateAdd("m",6,#3/12/00#) |
DateDiff |
Intoarce numarul de intervale de timp dintre doua date calendaristice. Intervale de timp: "d" (zile), "ww" (saptamani), "m" (luni), "q" (trimestre), "yyyy" (ani). |
DateDiff("d", #3/12/00#,Date()) |
DatePart |
Intoarce partea specificata dintr-o data calendaristica. Partea specificata poate fi: "d" (ziua), "ww" (saptamana), "m" (luna), "q" (trimestrul), "yyyy" (anul). |
DatePart("q", #3/12/00#) |
Day |
Intoarce un numar intreg, intre 1 si 31, reprezentand numarul zilei dintr-o data calendaristica. |
Day(#3/12/00#) |
Month |
Intoarce un numar intreg, intre 1 si 12, reprezentand numarul lunii dintr-o data calendaristica. |
Month(#3/12/00#) |
Now |
Intoarce data calendaristica si ora curente ale calculatorului. |
Now() |
Weekday |
Intoarce un numar intreg reprezentand ziua din saptamana dintr-o data calendaristica (Sunday = 1, Saturday = 7) |
Weekday(#3/12/00#) |
Year |
Intoarce un numar intreg reprezentand anul dintr-o data calendaristica |
Year(#3/12/00#) |
Hour |
Intoarce un numar intreg, intre 0 si 23, reprezentand ora dintr-o data de tip ora. |
Hour(#12:23:43 PM#) |
Minute |
Intoarce un numar intreg, intre 0 si 59, reprezentand minutul dintr-o data de tip ora. |
Minute(#12:23:43 PM#) |
Second |
Intoarce un numar intreg, intre 0 si 59, reprezentand secunda dintr-o data de tip ora. |
Second(#12:23:43 PM#) |
Time |
Intoarce ora curenta a calculatorului. |
Time() |
Functie |
Descriere |
Exemplu |
Format |
Formateaza sirul de caractere conform sablonului specificat. |
Format(Date(),"dd.mm.yyyy") |
Left |
Intoarce numarul specificat de caractere din stanga unui sir de caractere. |
Left("Access",3) |
Len |
Intoarce numarul de caractere dintr-un sir de caractere. |
Len("Access") |
Mid |
Intoarce numarul specificat de caractere dintr‑un sir de caractere, pornind de la o anumita pozitie. |
Mid("Access",3,2) |
Right |
Intoarce numarul specificat de caractere din dreapta unui sir de caractere. |
Right("Access",3) |
LCase |
Intoarce sirul de caractere convertit in minuscule. |
LCase("Access") |
UCase |
Intoarce sirul de caractere convertit in majuscule. |
UCase("Access") |
In afara de simpla afisare a campurilor adaugate in grila de proiectare, intr-o interogare pot fi efectuate si calcule. Un camp calculat se refera fie la un calcul asupra unui camp din lista de campuri folosind functii de sumarizare furnizate de Microsoft Access (Sum Avg Count, etc.), fie la un camp nou adaugat in grila de proiectare in care sa se precizeze un calcul particularizat.
Cand se afiseaza rezultatul unui calcul, Microsoft Access nu-l memoreaza in tabel. In schimb, calculele sunt refacute de fiecare data cand se executa interogarea, astfel incat rezultatele se bazeaza pe cele mai recente date.
Observatie
Intr-o interogare, rezultatele dintr-un camp calculat nu pot fi actualizate manual!
Se deschide interogarea in fereastra Query Design
Se executa click pe instrumentul Totals din bara cu instrumente Query Design sau se alege View Totals (in grila de proiectare se afiseaza randul Total
Din listele asociate celulelor din randul Total se selecteaza functia de sumarizare dorita.
Sunt disponibile urmatoarele functii:
Sum - suma valorilor dintr-un camp;
Avg - media valorilor dintr-un camp;
Min - valoarea cea mai mica dintr-un camp;
Max - valoarea cea mai mare dintr-un camp;
Count - numarul valorilor diferite de Null dintr-un camp;
StDev - abaterea statistica standard a valorilor dintr-un camp;
Var - dispersia statistica a valorilor dintr-un camp;
First - valoarea campului din prima inregistrare;
Last - valoarea campului din ultima inregistrare.
Calculele particularizate se realizeaza cu valori numerice, cu siruri de caractere, cu date calendaristice si ore, folosind date din unul sau mai multe campuri. De exemplu, intr-un calcul particularizat pot fi inmultite, impartite, adunate sau scazute mai multe campuri, sau combinate intr-un singur camp mai multe campuri de tip Text
De multe ori, campurile calculate (particularizate) sunt folosite si pentru a preciza criterii de selectie. De exemplu, pentru ca o interogare sa selecteze din tabelul Cursanti inregistrarile cu cursantii nascuti in luna aprilie, in grila de proiectare se adauga, intr-o celula din randul Field, campul calculat DNastere:Month([DataNasterii]) iar in celula corespondenta din randul Criteria se introduce
Se deschide interogarea in fereastra Query Design
Intr-o celula goala din randul Field se introduce expresia campului calculat particularizat (de exemplu, DNastere: Month([DataNasterii])
In celula corespunzatoare din randul Criteria se introduce criteriul (de exemplu,
Sintaxa campului calculat:
nume_camp_calculat:expresie
Exemplu
PretCuTVA:[Pret]*1,19
Observatii
Daca expresia contine nume de campuri, ele trebuie scrise intre paranteze drepte.
Daca nu se introduce numele campului calculat, Microsoft Access va adauga automat un nume de camp: Expr1 pentru primul camp, Expr2 pentru al doilea, s.a.m.d. (cand cursorul se muta din campul respectiv). Aceste nume pot fi modificate de utilizator cu nume mai semnificative, sau poate fi setata proprietatea Caption a campului calculat.
Expresiile mai complicate pot fi create cu Expression Builder
In cazul in care in interogare au fost grupate campurile (este afisat randul Total), se selecteaza elementul Expression din lista asociata celulei din randul Total
In cazul campurilor calculate pe baza functiilor predefinite, cand se afiseaza rezultatul interogarii (cand interogarea este deschisa in modul de afisare Datasheet), Microsoft Access adauga automat nume acestor campuri. Un astfel de nume incepe cu numele functiei folosite, urmat de Of si de numele campului din tabel (exemple: CountOfMarca SumOfCantitate AvgOfNota
Pentru a schimba numele unui astfel de camp, se seteaza proprietatea Caption a campului respectiv in grila de proiectare (se afiseaza fereastra Field Properties a campului si se seteaza proprietatea Caption
In cazul campurilor in care se realizeaza calculate particularizate, schimbarea numelui se poate face prin setarea proprietatii Caption sau direct in grila de proiectare (in celula din randul Field). Proprietatea Caption are prioritate fata de numele introdus in grila de proiectare.
Microsoft Access sorteaza datele din rezultatul interogarii dupa unul sau mai multe campuri, de la stanga la dreapta, in functie de ordinea in care sunt plasate campurile in grila de proiectare. Pentru campurile care se sorteaza trebuie sa se selecteze Ascending sau Descending in randul Sort
In cazul in care in grila de proiectare campurile din tabel au fost adaugate global (nume_tabel.*), trebuie adaugate separat campurile dupa care se face sortarea.
Datele calendaristice si orele sunt sortate de la precedent la urmator pentru sortare crescatoare si invers pentru sortare descrescatoare.
Numerele memorate in campuri de tip Text sunt memorate ca siruri de caractere. Astfel, sirul de valori: 1, 2, 11, 22 va fi sortat ca 1, 11, 2, 22. In asemenea situatii, pentru a obtine o sortare corespunzatoare, valorile se introduc de dimensiune egala (exemplu: 01, 02, 11, 22).
Valorile Null sunt sortate primele in sortarea crescatoare si ultimele in sortare descrescatoare.
Pentru a afisa un camp in rezultatul unei interogari, se selecteaza caseta de pe randul Show (daca se deselecteaza caseta, campul nu va fi afisat). In unele cazuri, este necesara adaugarea unui camp in interogare numai pentru precizarea unui criteriu, dar campul respectiv nu este necesar sa apara in rezultatul interogarii (in acest caz, se deselecteaza caseta de pe randul Show
In unele interogari poate fi adaugat numai un singur camp pentru care sa se precizeze criterii, iar in rezultatul interogarii pot sa apara toate campurile din tabel.
Se deschide interogarea in fereastra Query Design
Se afiseaza foaia de proprietati a interogarii prin una din urmatoarele metode:
se executa click pe instrumentul Properties din bara cu instrumente Query Design
se executa dublu-click pe panoul superior al ferestrei Query Design
se executa right-click pe panoul superior al ferestrei Query Design apoi se selecteaza Properties
Se seteaza pe Yes proprietatea Output All Fields
Observatii
Campul sau campurile din grila de proiectare folosite pentru precizarea de criterii trebuie sa aiba caseta Show deselectata pentru a nu aparea de doua ori in rezultatul interogarii.
Intr-o forma sau intr-un raport care se bazeaza pe o interogare cu proprietatea Output All Fields setata pe Yes, sunt disponibile toate campurile din tabelul pe baza caruia a fost creata interogarea.
Interogarile de totalizare se folosesc pentru a grupa inregistrarile dupa valorile din anumite campuri si pentru a efectua calcule de totalizare pe grupuri. Pentru calcule, se folosesc functii de totalizare (agregare) predefinite (prezentate in capitolul Calcule asupra unui camp dintr-o interogare).
Se deschide interogarea in fereastra Query Design
Se executa click pe instrumentul Totals din bara cu instrumente Query Design sau se alege View Totals (in grila de proiectare se afiseaza randul Total cu valoarea Group By implicit selectata).
Pentru campul/campurile dupa care se face gruparea datelor, se pastreaza setarea Group By in randul Total
Pentru campurile in care se efectueaza calcule, se selecteaza functiile dorite (Sum Avg Min Max Count StDev Var First sau Last
Daca este nevoie, se introduc criterii de selectie in randul Criteria
Daca este nevoie, se sorteaza rezultatele.
Observatii
Daca in grila de proiectare se adauga un camp calculat a carui expresie include una sau mai multe functii de agregare, in celula Total corespunzatoare se selecteaza Expression (daca se selecteaza Group By, la afisarea rezultatului interogarii se afiseaza mesaj de eroare).
Pentru campurile in care au fost introduse criterii, se selecteaza Where in celulele Total corespunzatoare. Aceste campuri nu vor apare in rezultatul interogarii; caseta de pe randul Show corespunzatoare acestor campuri se deselecteaza automat.
Pentru a obtine totaluri generale (pe total inregistrari, nu pe grupuri), in grila de proiectare se adauga numai campurile pentru care se calculeaza totalurile generale (nici un camp nu trebuie sa aiba setarea Group By in celula Total
O interogare cu criteriu de selectie foloseste acelasi criteriu ori de cate ori este executata. Pentru a putea modifica criteriul de la o executie la alta, interogarea poate fi transformata intr-o interogare cu parametri. Un parametru se introduce, ca si un criteriu, intr-o celula din randul Field pentru campul corespunzator. Cand se executa interogarea, parametrul este solicitat prin intermediul casetei de dialog Enter Parameter Value
Se deschide interogarea in fereastra Query Design
In celula din randul Criteria a campului pentru care trebuie introdus criteriul, se introduce un text, intre paranteze rotunde, prin care se solicita ce valoare trebuie introdusa.
Se executa click pe instrumentul View din bara cu instrumente Query Design (se afiseaza caseta de dialog Enter Parameter Value
In caseta de text se introduce valoarea solicitata si se executa click pe OK
Observatii
In caseta de dialog Enter Parameter Value se afiseaza, deasupra casetei de text, textul precizat in grila de proiectare, in celula Criteria
Textul parametrului din celula Criteria nu trebuie sa fie identic cu numele campului. In cazul in care textul parametrului este identic cu numele campului, la executia interogarii nu mai este solicitata valoarea parametrului.
Exemple
1.) Se creeaza interogarea QDataNasterii pe baza tabelului Cursanti si se introduce un parametru pentru a selecta toti cursantii nascuti inainte de o anumita data (de exemplu, se introduce parametrul <[Nascuti inainte de:]
2) In cazul in care se doreste selectarea cursantilor nascuti intre anumiti ani (de exemplu, intre 1950 si 1965), se poate introduce un parametru care sa afiseze, pentru acelasi camp, de doua ori caseta de dialog Enter Parameter Value, pentru a solicita cei doi ani (de exemplu, se introduce parametrul Between [Nascuti dupa:] And [Nascuti inainte de:]
In acest exemplu, s-a creat un camp calculat (Expr1) care intoarce anul din data nasterii, iar parametrul a fost construit cu ajutorul operatorului Between si al operatorului And
Cand se executa interogarea, pe ecran se afiseaza de doua ori caseta de dialog Enter Parameter Value, prima data cu mesajul "Nascuti dupa:", iar a doua oara cu mesajul "Nascuti inainte de:".
Cand se introduce un parametru intr-o interogare, Microsoft Access ii asociaza automat tipul de data Text. In aceste conditii, exista riscul ca la executia unei interogari care contine un parametru pentru un camp care are tipul de data diferit de tipul text, utilizatorul sa introduca o valoare de tip text, caz in care, s-ar putea ca in rezultatul interogarii sa nu apara nici o inregistrare. Din acest motiv, este util ca pentru parametrii care au tipul de data diferit de tipul Text sa se precizeze tipul de data.
Se deschide interogarea in fereastra Query Design
Se alege Query Parameters (se afiseaza caseta de dialog Query Parameters
In coloana Parameter se introduce numele parametrului (identic cu cel din grila de proiectare, fara a fi incadrat de paranteze drepte).
In coloana Data Type, din lista asociata celulei de pe acelasi rand cu numele parametrului, se selecteaza tipul de data pentru parametru.
Se repeta pasii 3 si 4 pentru toti parametrii din interogare.
Se executa click pe OK
Observatii
Cand se executa interogarea iar in caseta Enter Parameter Value se introduce o valoare care nu este de tipul precizat pentru parametrul respectiv, Microsoft Access afiseaza caseta mesaj:
Cand se executa interogarea, parametrii sunt solicitati in ordinea in care au fost precizati in caseta de dialog Query Parameters. Parametrii pentru care nu s-a declarat tipul de data vor fi solicitati ultimii.
Pentru interogari crosstab cu parametri, precizarea tipului de data pentru parametri este obligatorie.
Valorile Null, daca nu sunt tratate corespunzator, pot influenta decisiv rezultatul interogarilor.
Un camp numeric necompletat va contine o valoare Null, in timp ce un camp Text Memo sau Hyperlink necompletat va contine o valoare Null sau sirul de lungime zero
Cand se leaga tabele intr-o interogare, asocierea implicita este inner join (asociere interna). Aceasta face ca rezultatul interogarii sa contina numai inregistrari care nu au valori Null in campurile de asociere (cheia principala si cheia externa). Daca se schimba tipul asocierii, de exemplu left outer join (asociere externa la stanga), in rezultatul interogarii pot apare si inregistrari care au in campul de asociere cheie externa valori Null
Daca se doreste ca in rezultatul interogarii sa apara toate inregistrarile care au valoarea Null intr-un anumit camp, in celula Criteria a campului respectiv se introduce criteriul Is Null
Daca se doreste ca in rezultatul interogarii sa apara toate inregistrarile care au ca valoare sirul de lungime zero intr-un anumit camp, in celula Criteria a campului respectiv se introduce drept criteriu o pereche de ghilimele (fara spatiu intre ele).
O functie de agregare (Sum Avg Count, etc.) folosita pentru un camp numeric nu va lua in calcul inregistrarile care au valori Null in campul respectiv. Exceptie face functia Count(*) care ia in considerare si valorile Null din campul respectiv.
Daca intr-o expresie de calcul se foloseste un operator aritmetic (+, -, *, /) iar unul din campurile din expresie contine o valoare Null, rezultatul expresiei de calcul va fi valoarea Null
Atat pentru cazul folosirii functiilor de sumarizare pentru campuri care contin valori Null dar si pentru expresii de calcul cu campuri care contin valori Null, poate fi folosita functia Nz care converteste valorile Null in zero (exemplu: Nz([Cantitate])*Nz([Pret])).
Pentru concatenarea valorilor de tip Text sunt disponibili doi operatori: si &. Atunci cand se concateneaza doua campuri de tip text, cu operatorul , iar unul dintre campuri contine o valoare Null, rezultatul concatenarii va fi o valoare Null. In aceiasi situatie, folosirea operatorului & nu va intoarce o valoare Null
Intr-o baza de date complexa, apare necesitatea aducerii impreuna a datelor memorate in tabele separate. Aceasta se realizeaza prin construirea interogarilor din mai multe tabele.
Cand utilizatorul adauga mai multe tabele intr-o interogare, trebuie sa se asigure ca listele de campuri din panoul superior al interogarii sunt unite prin linii de asociere, pentru ca Microsoft Access sa stie cum sa conecteze informatiile. Daca tabelele dintr-o interogare nu sunt asociate, Microsoft Access nu va sti care inregistrari se asociaza, astfel ca rezultatul interogarii va afisa produsul cartezian al inregistrarilor din tabelele interogarii. Daca tabelele care se adauga in interogare sunt legate in fereastra Relationships, Microsoft Access afiseaza automat liniile de asociere dintre tabele (in panoul superior din fereastra Query Design). In cazul in care s-a fortat integritatea referentiala, deasupra liniei de asociere se afiseaza " " langa tabelul principal si " " langa tabelul secundar. Chiar daca tabelele n-au fost legate in fereastra Relationships, Microsoft Access creeaza automat linii de asociere daca in interogare se adauga doua tabele care un camp care are acelasi nume si acelasi tip de data si daca intr-unul din cele doua tabele acest camp este cheie principala. In acest caz, simbolurile " si " " nu mai apar, intrucat n-a fost setata integritatea referentiala.
Se alege Tools Options (se afiseaza caseta de dialog Options
Se selecteaza tab-ul Tables/Queries
Se selecteaza (pentru activare) sau se deselecteaza (pentru dezactivare) caseta de control Enable AutoJoin
Observatie
Setarea are efect numai pentru interogarile care vor fi create dupa selectarea casetei de control Enable AutoJoin. Daca tabelele sunt legate in fereastra Relationships, dezactivarea casetei de control Enable AutoJoin nu are efect.
Dupa adaugarea tabelelor intr-o interogare si asocierea lor, Microsoft Access verifica corespondentele dintre campurile asociate pe baza asocierii implicite (tipul de asociere setat cand s-au legat tabelele in fereastra Relationships). Cand se gasesc corespondentele (perechile), cele doua inregistrari se combina si sunt afisate in rezultatul interogarii. Daca un tabel nu are o inregistrare care sa se potriveasca in celalalt tabel, in interogare nu se va afisa o inregistrare (cu exceptia cazului cand asocierea este left outer join sau right outer join
Daca doua tabele adaugate intr-o interogare nu sunt unite printr-o linie de asociere, asocierea poate fi facuta in panoul superior din fereastra Query Design, prin glisarea campului principal dintr-un tabel peste campul extern din celalalt tabel. Asocierea obtinuta astfel este de tip inner join, caz in care Microsoft Access selecteaza numai inregistrarile din cele doua tabele care au valorile din campurile asociate egale.
Se deschide interogarea in fereastra Query Design
Se executa right-click pe linia de asociere dintre cele doua tabele iar din meniul prescurtat care se afiseaza, se selecteaza Edit Relationship (se afiseaza caseta de dialog Edit Relationships
Se executa click pe butonul de comanda Join Type (se afiseaza caseta de dialog Join Properties
Se selecteaza:
butonul de optiune 1, pentru asociere interna (inner join
butonul de optiune 2, pentru asociere interna (left outer join
butonul de optiune 3, pentru asociere interna (right outer join
Observatie
Asocierile create in caseta de dialog Join Properties selecteaza inregistrari pe baza egalitatii dintre valorile din campurile de asociere. Pentru a crea asocieri care sa selecteze inregistrari cand valorile din campurile de asociere nu sunt egale, se folosesc interogari SQL
Interogarile Crosstab realizeaza o sinteza a datelor din tabele, afisandu-le pe randuri si coloane similar unei foi de lucru dintr-un produs de calcul tabelar.
Pentru realizarea unei interogari Crosstab este nevoie de:
un camp sau mai multe pentru antetul/antetele de randuri;
un camp pentru antetele de coloane;
un camp care sa furnizeze valorile de calcul.
In fereastra Database se executa click pe butonul Queries (din bara de obiecte) apoi pe butonul New (se afiseaza caseta de dialog New Query
Se selecteaza Crosstab Query Wizard si se executa click pe OK (se afiseaza caseta de dialog Crosstab Query Wizard (I)
Se selecteaza tabelul care va furniza campurile (exemplu: tabelul Conventii
Se executa click pe Next (se afiseaza caseta de dialog Crosstab Query Wizard (II)
Se selecteaza campul sau campurile (maxim 3) pentru antete de randuri (exemplu: SimbCurs
Se executa click pe Next (se afiseaza caseta de dialog Crosstab Query Wizard (III)
Se selecteaza campul pentru antete de coloane (exemplu: campul NrSerie
Se executa click pe Next (se afiseaza caseta de dialog Crosstab Query Wizard (IV)
Se selecteaza campul care va furniza valorile de calcul (exemplu: NrCursanti) si functia de sumarizare (exemplu: Sum
Pentru a include o coloana de totaluri pe randuri, se selecteaza caseta de control Yes, include row sums
Se executa click pe Next (se afiseaza caseta de dialog Crosstab Query Wizard (IV)
In caseta de text What do you want to name your query se introduce numele interogarii sau se accepta numele propus de Crosstab Query Wizard
Se selecteaza unul din cele doua butoane de optiune pentru a determina actiunea urmatoare dupa ce se executa click pe Finish
View the query, deschide interogarea in modul de afisare Datasheet
Modify the design, deschide interogarea in fereastra Query Design
Se executa click pe Finish
Daca la pasul 7 s-a selectat butonul de optiune View the query, cand se executa click pe Finish interogarea se deschide in modul de afisare Datasheet
Daca la pasul 7 s-a selectat butonul de optiune Modify the design, cand se executa click pe Finish interogarea se afiseaza in fereastra Query Design
In tabelul de mai jos se prezinta setarile posibile ale unui camp in celulele Crosstab si Total
Camp folosit pentru: |
Setarea Crosstab |
Setarea Total |
Antet de randuri |
Row Heading |
Group By |
Antete de coloane |
Column Heading |
Group By |
Functia de sumarizare |
Value |
O functie de sumarizare (Sum Avg Count, etc.) |
Totaluri pe randuri |
Row Heading |
O functie de sumarizare |
Criteriu de selectie |
(not shown) |
Where |
In fereastra Database se executa click pe tab-ul Queries apoi pe butonul New (se afiseaza caseta de dialog New Query
Se selecteaza Design View si se executa click pe OK (se afiseaza fereastra Query Design si caseta de dialog Show Table
Se adauga tabelul/tabelele in interogare (exemplu: tabelele Cursanti si Unitati
Se adauga campurile in grila de proiectare (exemplu: CodCurs Domiciliu IDCursant CodUnit si Studii
Se alege Query Crosstab Query (Microsoft Access afiseaza randurile Crosstab si Total in grila de proiectare).
Se fac urmatoarele setari:
Camp |
Folosit pentru: |
Setare Crosstab |
Setare Total |
CodCurs |
Antet de randuri |
Row Heading |
Group By |
Domiciliu |
Antete de coloane |
Column Heading |
Group By |
IDCursant |
Functia de sumarizare |
Value |
Count (sau alta functie de sumarizare) |
CodUnit |
Totaluri pe randuri |
Row Heading |
Count (sau alta functie de sumarizare) |
Studii |
Criteriu de selectie (se introduce "S" in randul Criteria |
(not shown) |
Where |
Se executa click pe instrumentul View din bara cu instrumente Query Design (pentru a afisa rezultatul interogarii).
Implicit, antetele de coloane sunt sortate alfabetic sau numeric (in functie de tipul de data al campului folosit in pentru antete de coloane). Daca se doreste ca antetele de coloane sa apara in alta ordine sau sa se limiteze numarul de coloane care sa se afiseze in rezultatul interogarii, se afiseaza caseta de dialog Query Properties View Properties) si se seteaza proprietatea Column Headings (exemplu: "Provincie Bucuresti"). Cand se modifica antetele de coloane, acestea trebuie sa aiba acelasi tip de data cu al campului care furnizeaza antetele de coloane.
Antetele de coloane se pot modifica si prin transformarea campului care furnizeaza antetele de coloane in camp calculat. De exemplu, in interogarea Conventii_Crosstab creata cu Crosstab Query Wizard se modifica antetele de coloane astfel incat sa se afiseze Seria 1 Seria 2 Seria 3, etc. Pentru aceasta, campul NrSerie, care furnizeaza antetele de coloane, se transforma in campul calculat: Expr1: "Seria " & [NrSerie]. Cand antetele de coloane se modifica prin transformarea campului ce le furnizeaza in camp calculat, se poate schimba tipul de data al acestora. De exemplu, in interogarea Crosstab creata in fereastra Query Design se pot schimba antetele de coloane astfel incat sa se afiseze pentru Bucuresti si pentru Provincie. Pentru aceasta, campul Domiciliu din interogare se transforma in campul calculat: Expr1: IIf([Domiciliu]='Bucuresti';1;2)
In cazul in care campul care furnizeaza antetele de coloane contine valori Null, intr-un antet de coloana se afiseaza <>. Pentru ca aceasta coloana sa nu se mai afiseze, se introduce criteriul Not Is Null pentru coloana care furnizeaza antetele de coloane (caz in care din rezultatul interogarii sunt excluse inregistrarile care au valoarea Null in campul care furnizeaza antetele de coloane), sau campul care furnizeaza antetele de coloane se transforma in camp calculat. De exemplu, in interogarea Conventii_Crosstab creata cu Crosstab Query Wizard campul NrSerie se transforma in campul calculat: Expr1: IIf(IsNull([NrSerie]);'Necunoscuta';'Seria ' & [NrSerie])
Observatie
Textul antetului pentru totalurile pe randuri poate fi modificat direct in grila de proiectare, in celula Field (exemplu: Total: CodCurs) sau prin setarea proprietatii Caption a campului in grila de proiectare.
Se creeaza interogarea de selectie in fereastra Query Design (precizand, daca este cazul, criterii de selectie).
Se testeaza interogarea (se executa click pe instrumentul View din bara cu instrumente Query Design
Se transforma interogarea de selectie in interogare de actiune: se alege tipul interogarii de actiune din meniul Query sau din instrumentul Query Type din bara de instrumente Query Design
Se testeaza din nou interogarea (se executa click pe instrumentul View din bara cu instrumente Query Design), pentru a vizualiza inregistrarile care vor fi actualizate.
Se executa interogarea de actiune creata: se alege Query Run sau se executa click pe instrumentul Run din bara cu instrumente Query Design
Se salveaza interogarea.
Se creeaza interogarea de selectie din tabelul care va furniza inregistrarile pentru un alt tabel. In cazul in care structura celor doua tabele (sursa si destinatie) este identica, in grila de proiectare (in prima celula Field) va fi glisat elementul (toate campurile)).
In interogare pot fi adaugate si alte tabele care pot furniza valori de adaugat sau pentru a preciza criterii.
Daca este necesar, se precizeaza criteriul/criteriile de selectie (daca adaugarea campurilor s-a facut cu elementul , se va adauga separat campul/campurile pentru criterii).
Se testeaza interogarea.
Se alege Query Append Query sau se executa click pe sageata instrumentului Query Type din bara cu instrumente Query Design apoi se selecteaza Append Query (se afiseaza caseta de dialog Append
Daca tabelul destinatie se afla in baza de date curenta, trebuie ca butonul de optiune Current Database sa fie selectat. Din lista Table Name se selecteaza numele tabelului in care vor fi adaugate inregistrarile.
Daca tabelul destinatie se afla in alta baza de date, se selecteaza butonul de optiune Another Database, se precizeaza numele bazei de date, inclusiv calea, in caseta de text File Name, (exemplu: C:EvidenteSalarii.mdb), iar in lista Table Name se selecteaza numele tabelului (lista va contine numele tabelelor din baza de date precizata in caseta de text File Name
Se executa click pe OK (in grila de proiectare se afiseaza randul Append To
Daca structura celor doua tabele este identica, in randul Append To se va afisa:
a) nume_tabel_destinatie.*, daca in grila de proiectare a fost glisat elementul * (toate campurile) din lista tabelului sursa.
b) numele campurilor pereche.
Daca structura celor doua tabele este diferita (numele campurilor corespondente sunt diferite), pentru fiecare camp din randul Field se selecteaza campul corespondent in randul Append To
Daca tabela sursa are o cheie principala de tip AutoNumber
a) daca cheia principala se adauga in grila de proiectare, in tabelul destinatie vor fi copiate valorile cheii principale din tabelul sursa;
b) daca cheia principala nu se adauga in grila de proiectare, in tabelul destinatie vor fi create valori noi pentru campul respectiv.
Se executa click pe instrumentul View din bara cu instrumente Query Design, pentru a vizualiza inregistrarile care vor fi adaugate.
Se alege Query Run sau se executa click pe instrumentul Run din bara de instrumente Query Design. Microsoft Access afiseaza o caseta mesaj care cere confirmarea adaugarii inregistrarilor. Daca se executa click pe Yes, inregistrarile vor fi adaugate in tabelul destinatie.
Pentru ca Microsoft Access sa nu mai ceara confirmarea adaugarii, se deselecteaza caseta de control Action queries din caseta de dialog Options (tab-ul Edit/Find
Observatie
Pentru campurile de criterii, se golesc celulele Append To, altfel, la executia interogarii Microsoft Access afiseaza mesajul de eroare "Duplicate output destination 'nume_camp'.
Se creeaza interogarea de selectie din tabelul/tabelele numai cu campurile care trebuie actualizate si cu cele pentru criterii.
Daca este necesar, se precizeaza criteriul/criteriile de selectie.
Se testeaza interogarea.
Se alege Query Update Query sau se executa click pe sageata instrumentului Query Type din bara cu instrumente Query Design apoi se selecteaza Update Query (in grila de proiectare se afiseaza randul Update To
In celula Update To a campului care trebuie actualizat se introduce:
a) valoarea sau expresia care va fi folosita pentru actualizarea campului, sau
b) campul unui tabel care furnizeaza valorile cu care se face actualizarea, folosind sintaxa:
nume_tabel nume_camp
unde:
nume_tabel reprezinta numele tabelului care furnizeaza campul;
nume_camp reprezinta numele campului care furnizeaza valorile de actualizat.
Tabelul care furnizeaza campul de actualizat trebuie sa fie adaugat in interogare si trebuie legat cu tabelul care se actualizeaza
Se executa click pe instrumentul View din bara cu instrumente Query Design. In rezultatul interogarii se afiseaza numai campurile care se actualizeaza. Pentru a afisa si alte campuri, acestea vor fi adaugate in celulele Field din grila de proiectare iar in celulele Update To se introduc aceleasi nume de campuri incadrate de paranteze drepte.
Se alege Query Run sau se executa click pe instrumentul Run din bara de instrumente Query Design. Microsoft Access afiseaza o caseta mesaj care cere confirmarea actualizarii inregistrarilor. Daca se executa click pe Yes, inregistrarile vor fi actualizate. Pentru ca Microsoft Access sa nu mai ceara confirmarea actualizarii, se deselecteaza caseta de control Action Queries din caseta de dialog Options (tab-ul Edit/Find
Observatie
In cazul in care se actualizeaza campul cheie principala, este obligatorie selectarea casetei de control Cascade Update Related Fields din caseta de dialog Edit Relationships
Interogarile de stergere se folosesc in cazul in care se sterge un numar mare de inregistrari. Avand in vedere faptul ca tabele din baza de date sunt legate, atunci cand se construiesc interogari de stergere trebuie cunoscuta pozitia tabelului in cadrul relatiei "1‑la‑n" (daca este tabel principal sau tabel secundar). Daca stergerea de inregistrari dintr-un tabel secundar nu are nici o influenta asupra tabelului principal, stergerea de inregistrari din tabelul principal este conditionata de starea de selectie a casetei de control Cascade Delete Related Records, cu exceptia cazului cand se sterg inregistrari care nu au inregistrari asociate in tabelul secundar. In cazul in care caseta de control Cascade Delete Related Records (din caseta de dialog Edit Relationships) este selectata, cand se sterge o inregistrare din tabelul principal, se sterg toate inregistrarile corespondente din tabelul secundar.
Se creeaza interogarea de selectie din tabelul care contine inregistrarile care vor fi sterse. In grila de proiectare se gliseaza elementul * (toate campurile) si eventual campul/campurile pentru criterii.
Daca este necesar, se precizeaza criteriul/criteriile de selectie.
Se testeaza interogarea.
Se alege Query Delete Query sau se executa click pe sageata instrumentului Query Type din bara cu instrumente Query Design apoi se selecteaza Delete Query (in grila de proiectare se afiseaza randul Delete
In celula Delete pentru campul specificat global (cu *) se afiseaza From iar pentru campul/campurile de criterii se afiseaza Where
Se executa click pe instrumentul View din bara cu instrumente Query Design pentru a vizualiza inregistrarile care vor fi sterse.
Se alege Query Run sau se executa click pe instrumentul Run din bara de instrumente Query Design. Microsoft Access afiseaza o caseta mesaj care cere confirmarea stergerii inregistrarilor. Daca se executa click pe Yes, inregistrarile vor fi sterse. Pentru ca Microsoft Access sa nu mai ceara confirmarea stergerii, se deselecteaza caseta de control Action Queries din caseta de dialog Options (tab-ul Edit/Find
Inainte de crearea interogarii, se verifica daca intre tabelul aflat in partea (care va fi adaugat in interogare) si tabelul/tabelele aflate in partea "n" a relatiei "1-la-n" starea de selectie a casetei de control Cascade Delete Related Records. Daca nu este selectata, se selecteaza. In continuare, se creeaza interogarea numai pe baza tabelului aflat in partea parcurgand aceleasi etape ca si in cazul stergerii inregistrarilor din tabelul aflat in partea "n" a relatiei "1‑la‑n".
Se creeaza interogarea de selectie din tabelul/tabelele care vor furniza inregistrarile pentru noul tabel. In grila de proiectare se adauga campurile care vor fi incluse in structura noului tabel si eventual campurile pentru criterii, daca nu se afla printre cele deja adaugate.
Daca este necesar, se precizeaza criteriul/criteriile de selectie. Pentru ca un camp din grila de proiectare (cu sau fara criteriu) sa nu apara in structura noului tabel, se deselecteaza caseta din randul Show pentru campul respectiv.
Se testeaza interogarea.
Se alege Query Make-Table Query sau se executa click pe sageata instrumentului Query Type din bara cu instrumente Query Design apoi se selecteaza Make-Table Query (se afiseaza caseta de dialog Make Table
Daca noul tabel se va crea in baza de date curenta, trebuie ca butonul de optiune Current Database sa fie selectat. In lista Table Name se introduce numele tabelului care va fi creat.
Daca noul tabel se va crea in alta baza de date, se selecteaza butonul de optiune Another Database, se precizeaza numele bazei de date, inclusiv calea, in caseta de text File Name (exemplu: C:EvidenteSalarii.mdb), iar in lista Table Name se introduce numele tabelului.
Se executa click pe OK
Se executa click pe instrumentul View din bara cu instrumente Query Design pentru a vizualiza inregistrarile noului tabel.
Se alege Query Run sau se executa click pe instrumentul Run din bara de instrumente Query Design. Microsoft Access afiseaza o caseta mesaj care informeaza cate inregistrari vor fi copiate in noul tabel si cere confirmarea crearii tabelului. Daca se executa click pe Yes, va fi creat noul tabel. Pentru ca Microsoft Access sa nu mai ceara confirmarea crearii, se deselecteaza caseta de control Action Queries din caseta de dialog Options (tab-ul Edit/Find). Daca se executa din nou interogarea, Microsoft Access afiseaza o caseta mesaj prin care cere confirmarea stergerii tabelului (existent de la executia anterioara a interogarii) inainte de crearea altui tabel cu acelasi nume. Daca se executa click pe Yes, tabelul existent este sters si noul tabel este creat.
Observatie
Pentru ca la urmatoarea executie a interogarii Microsoft Access sa nu mai ceara confirmarea stergerii tabelului, inainte de executia interogarii se afiseaza foaia de proprietati a interogarii (interogarea trebuie sa fie afisata in fereastra Query Design) si se seteaza proprietatea Destination Table cu numele noului tabel.
Campurile din tabelul nou creat nu mostenesc toate proprietatile campurilor din tabelul/tabelele sursa (doar proprietatile Data Type si Field Size). Din acest motiv, noului tabel trebuie sa i se declare cheia principala si celelalte proprietati.
Acest tip de interogare este util mai ales in cazul in care unui tabel nu i s-a declarat cheia principala inainte de introducerea datelor. In acest caz, exista posibilitatea ca in campul care va fi declarat cheie principala sa existe valori duplicat iar incercarea de a declara acest camp cheie principala esueaza. Pentru asemenea situatii, se creeaza o interogare care determina duplicatele in campul respectiv, se elimina acele duplicatele, apoi se poate declara cheia principala.
In fereastra Database se executa click pe butonul Queries (din bara de obiecte) apoi pe butonul New (se afiseaza caseta de dialog New Query
Se selecteaza Find Duplicates Query Wizard si se executa click pe OK (se afiseaza caseta de dialog Find Duplicates Query Wizard (I)
Se selecteaza numele tabelului din lista si se executa click pe Next (se afiseaza caseta de dialog Find Duplicates Query Wizard (II)
Se selecteaza campul in care se verifica valorile duplicat (se transfera din lista Available fields in lista Duplicate-value fields
Se executa click pe Next (se afiseaza caseta de dialog Find Duplicates Query Wizard (III)
Optional se pot selecta campuri suplimentare care sa se afiseze in interogare
Se executa click pe Next (se afiseaza caseta de dialog Find Duplicates Query Wizard (IV)
In caseta What do you want to name your query se introduce numele interogarii sau se accepta numele propus de Find Duplicates Query Wizard
Se executa click pe Finish
O astfel de interogare poate determina toate inregistrarile din tabelul principal care nu au inregistrari corespondente in tabelul secundar.
In fereastra Database se executa click pe butonul Queries (din bara de obiecte) apoi pe butonul New (se afiseaza caseta de dialog New Query
Se selecteaza Find Unmatched Query Wizard si se executa click pe OK (se afiseaza caseta de dialog Find Unmatched Query Wizard (I)
Se selecteaza tabelul principal (cel care contine inregistrarile pe baza carora se face verificarea).
Se executa click pe Next (se afiseaza caseta de dialog Find Unmatched Query Wizard (II)
Se selecteaza tabelul secundar (in care se face verificarea inregistrarilor).
Se executa click pe Next (se afiseaza caseta de dialog Find Unmatched Query Wizard (III)
Find Unmatched Query Wizard identifica singur campurile de legatura daca tabelele au fost legate in fereastra Relationship (daca nu, se selecteaza campurile de legatura din cele doua tabele si se executa click pe butonul ).
Se executa click pe Next (se afiseaza caseta de dialog Find Unmatched Query Wizard (IV)
Se selecteaza campurile care sa se afiseze in interogare.
Se executa click pe Next (se afiseaza caseta de dialog Find Unmatched Query Wizard (V)
In caseta de text What would you like to name your query se introduce numele interogarii sau se accepta numele propus de Find Unmatched Query Wizard
Se executa click pe Finish
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |