CATEGORII DOCUMENTE |
Asa cum se stie, interogarile sunt unelte care permit obtinerea unor informatii din baza de date. Interogarile actiune sunt interogari care permit schimbarea valorilor campurilor unor inregistrari (sau a tuturor inregistrarilor).
Definirea acestui tip de interogare se bazeaza pe faptul ca realizeaza o actiune, spre deosebire de o interogare simpla care selecteaza un grup de inregistrari si prezentat sub forma unui set de inregistrari. Prin definitie, actiune presupune a face ceva, a influenta sau a afecta ceva. Aceasta este ceea ce face o interogare actiune: realizeaza operatii specifice.
Interogarile de actiune creeaza noi tabele sau modifica datele din cele existente. In MSAccess sunt disponibile 4 tipuri de interogari actiune:
Interogarile de actiune generatoare de tabele creeaza noi tabele din datele continute in seturile de rezultate ale interogarilor. Una dintre cele mai obisnuite aplicatii ale interogarilor generatoare de tabele este crearea tabelelor pe care le pot exporta alte aplicatii. O interogare de acest fel ofera o modalitate comoda de copiere a unei tabele intr-o alta baza de date. In unele cazuri, interogarile generatoare de tabele pot fi utilizate pentru accelerara activitatii de creare a formelor multiple si a rapoartelor bazate pe o singura interogare complicata;
Interogarile care adauga noi inregistrari in tabelele de date create de ele
Interogarile care sterg din tabele inregistrarile care corespund randurilor sterse in setul de rezultate;
Interogarile care actualizeaza valorile din campurile existente in inregistrarile tabelului, corespunzatoare randurilor din setul de rezultate al interogarii.
Atunci cand se creeaza o interogare, MSAccess creeaza in mod automat o interogare de selec'ie (select query). Pentru a specifica faptul ca interogarea este de tip actiune, se modifica tipul acesteia apeland la meniul Query si alegand tipul de actiune dorit: Make Table, Update, Append... si Delete.
Spre deosebire de interogarile select, interogarile actiune nu creeaza un set de inregistrari rezultat (dynaset) care sa poata fi vizualizat, ci pur si simplu realizeaza o actiune.
O interogare actiune poate fi identificata prin caracterul "!" plasat inaintea numelui interogarii.
Interogarile actiune modifica, adauga sau sterg date. Din aceasta cauza, este bine ca la realizarea unor astfel de interogari sa se tina cont de urmatoarele reguli practice:
O tabela se va salva sub alt nume, eliminandu-se astfel posibilitatea pierderii datelor disponibile inainte de aplicarea inteogarii actiune;
Se va crea o interogare select si se va vizualiza rezultatul inainte de a rula o interogare actiune;
Datorita faptului ca actiunea unei interogari actiune este ireversibila, crearea unei astfel de interogari presupune trei faze:
se creeaza o interogare select, specificand campurile si criteriul de selectie;
se converteste interogarea la o interogare actiune si se ruleaza;
se verifica schimbarile realizate de actiunile acesteia prin reconvertirea la interogarea select sau prin vizualizarea noilor tabele create.
Se presupune ca pentru angajatii veniti in firma inainte de data de 12 decembrie 1997 se va realiza o crestere a sumei de plata pe ora cu 50%. In acest sens, se vor urmari urmatoarele etape:
se va realiza interogarea de selectie corespunzatoare (figura 7);
figura 7. Interogarea de selectie
Se verifica faptul ca rezultatul interogarii indelineste conditiile dorite;
Se revine in modul Design;
Se selecteaza Query, Update Query din meniul corespunzator;
Se completeaza celula Update To a campului SumaPlataOra cu [SumaPlataOra]*1,5;
figura 8. Modul Design al interogarii actiune
Se ruleaza interogarea; MSAccess va informa asupra numarului de randuri asupra carora se va face actualizarea; sunt afisate butoanele OK, Cancel, Help;
Se apasa pe butonul OK pentru a realiza actualizarea;
Dupa realizarea actualizarii se poate vizualiza efectul ei; in acest sens se selecteaza Query, Select Query si apoi se apasa butonul Datasheet;
Interogarile actiune pot fi utilizate pentru a crea noi tabele, pe baza unor criterii de selectie. Acest paragraf descrie modalitatea de a realiza o astfel de actiune. Se presupune ca se doreste ca sa se realizeze un nou tabel cu clientii carora li s-au implementat diverse sisteme (deci numele proiectului incepe cu Sistem) si a caror date de predare (DataStop) este mai mica decat 1 martie 2001.
Prin urmare, este nevoie sa se realizeze un nou tabel, pe baza tabelelor Clienti si Proiect. In acest sens se va construi o interogare actiune, proces care consta in doua etape:
Crearea unei interogari de selectie;
Conversia acesteia la o interogare actiune.
Se creeaza interogarea de selectie corespunzatoare (figura 9)
figura 9. Interogarea de selectie pentru crearea unei noi tabele
Se verifica setul de inregistrari rezultat in urma rularii interogarii;
Pe baza interogarii selectie create se va obtine interogarea actiune; de remarcat ca in setul de inregistrari rezultat apar numai proiectele ale caror denumiri incep cu "Sist";
Se revine in modul Design;
Tinand cont ca numai acele campuri care au marcata optiunea Show vor fi copiate in noua tabela, se pot adauga sau sterge alte campuri. De exemplu, campul DataStop ar putea fi deselectat;
Se selecteaza optiunea Query, Make Table Query, in urma acestei operatii fiind afisata urmatoarea cutie de dialog (figura 10); de remarcat ca numele interogarii din bara de titlu se modifica, incluzand si Make Table Query; daca se da numele unei tabele deja existente, utilizatorul va fi informat asupra acestei situatii;
figura 10. Cutia de dialog pentru crearea unei noi tabele
Se executa interogarea si se verifica existenta noii tabele in baza de date a aplicatiei.
Observatii:
Atunci cand se creeaza mai multe astfel de interogari, este nevoie de reselectarea optiunii Query, Make Table Query pentru redenumirea interogarii. Daca nu se reselecteaza aceasta optiune, MSAccess presupune ca se doreste inlocuirea tabelei, situatie asupra careia utilizatorul este avertizat;
Atunci cand se creeaza o noua tabela cu o interogare actiune, campurile din noua tabela vor avea aceleasi tipuri si aceleasi dimensiuni ca si cele din tabelele din care provin. Totusi, in afara de acestea, nu mai sunt transferate alte campuri sau proprietati. Daca se doreste sa se specifice o cheie primara sau alte proprietati, este nevoie sa se intre in modul de proiectare si sa se realizeze aceste operatii.
Asa cum sugereaza si denumirea, o astfel de interogare actiune adauga inregistrari la o tabela specificata. Aceste inregistrari sunt adaugate din tabela care este utilizata la momentul respectiv, tabela la care trebuie sa se adauge, trebuind sa existe (sa fie creata). Inregistrarile pot fi adaugate in aceeasi baza de date sau intr-una diferita. De regula, acest tip de interogare este utilizat pentru arhivarea articolelor unui tabel specificat.
Interogarile de actiune pentru adaugarea inregistrarilor sunt foarte utile mai ales atunci cand adaugarea se face pe baza unor criterii. Totusi, aceste interogari actiune care adauga inregistrari nu sunt intotdeauna cel mai rapid mijloc de a realiza acest lucru. De exemplu, daca se doreste sa se adauge toate inregistrarile dintr-o tabela in alta, interogarea actiune corespunzatoare nu este cel mai rapid mijloc, putandu-se utiliza Copy and Paste.
Inregistrarile pot fi adaugate unei tabele deschise, nefiind necesara inchiderea acesteia inaintea rularii interogarii actiune. Totusi, unele versiuni MSAccess nu realizeaza un refresh automat al tabelelor carora li s-au adaugat inregistrari. Pentru a realiza acest lucru, se apasa combinatia de taste Ctrl+F9.
Atunci cand se lucreaza cu interogari actiune care adauga inregistrari trebuie respectate urmatoarele reguli:
Daca tabela careia i se adauga inregistrari are o cheie primara, inregistrarile care se adauga nu trebuie sa aiba valori Null sau valori duble ale cheii primare;
Daca se adauga inregistrari la o alta baza de date, trebuie sa se cunoasca locul unde este plasata si numele bazei de date;
Daca se utilizeaza campul "*" in randul Query by Exemple, nu se pot utiliza campuri individuale pentru aceeasi tabela. MSAccess nu va adauga aceste inregistrari, deoarece se considera ca se incearca adaugarea continutului unui camp de doua ori aceleiasi inregistrari;
Daca se adauga inregistrari care au un camp de tip contor, acest camp nu se va include la adaugare daca tabela careia i se adauga inregistrarile are de asemenea un astfel de camp. De asemenea, nu se va utiliza un astfel de camp daca inregistrarile se adauga unei tabele fara inregistrari si daca se doreste ca noua tabla sa aiba un nou contor bazat pe un criteriu.
Cand se adauga inregistrari prin intermediul unei interogari actiune, vor fi adagate numai campurile care se regasesc in cele doua tabele. De exemplu, daca se dispune de Tabela1 cu 6 campuri si Tabela2 cu 9 campuri, Tabela2 avand numai 5 campuri ce se regasesc in Tabela1, si daca se adauga inregistrari la Tabela2 din Tabela1, vor fi adagate numai cele 5 campuri ale inregistrarilor, celelalte ramanand goale.
Pentru exemplificare, se considera ca se doreste arhivarea inregistrarilor de cheltuieli materiale de pe anul 1999, in tabela tblArhCheltuieli. In acest scop, se va construi mai intai o interogare de selectie pentru a vizualiza inregistrarile corespunzatoare (figura 11):
figura 11. Interogarea de selectie
Se alege din meniul Query optiunea Append Query si se specifica tabela destinatie (figura 12):
figura 12. Specificarea destinatiei
Se ruleaza interogarea, dupa care se vizualizeaza rezultatul, prin consultarea tabelei tblArhCheltuieli (daca aceasta contine mai multe inregistrari, se va construi o interogare de selectie pentru cheltuielile pe anul 1999).
Interogarea Delete sterge diferite articole dintr-o tabela (daca se doreste stergerea continutului anumitor campuri, atunci se va utiliza o interogare de tip Update, in care noul continut se initializeaza cu Null - valoare nula). Daca tabela in care se executa stergerea este implicata in diverse relatii cu alte tabele (adica tabela se gaseste in partea unu a unei relatii unu la mai multi), atunci articolele associate celor sterse pot fi de asemenea sterse. Acest lucru are loc numai daca in momentul stabilirii relatiei intre cele doua tabele au fos validate stergerile in cascada a articolelor associate Cascade Delete Related Records.
Etapele urmarite sunt urmatoarele:
Se creeaza o interogare de selectie, pe baza selectiei tabelei/tabelelor din care se vor sterge inregistrari, specificandu-se criteriile de stergere. De exemplu, din tabela chMateriale se doreste stergerea inregistrarilor care au fost arhivate anterior (figura 11);
Se verifica rezultatele interogarii;
Se efectueaza un clic pe butonul Query Type si din lista derulanta se alege optiunea Delete Query. In urma acestei actiuni, pe grila de iesire a interogarii va apare o noua linie, marcata Delete. Cele doua valori ce pot apare in celulele acestei linii sunt:
From - in campul Field aferent, simbolul "*" specifica faptul ca vor fi sterse toate campurile unei inregistrari;c
Where - in campul Field aferent se specifica un ctmp care este implicat in stabilirea criteriilor de stergere;
Se executa interogarea, aplicand un clic pe butonul Run. MSAccess afiseaza o ferestra in care specifica numarul inregistrarilor ce vor fi sterse din tabelul specificat si va cere confirmarea utilizatorului pentru efectuarea operatiei de stergere.
O interogare lansata in executie poate fi oprita prin apasarea combinatiei de taste Ctrl+Break.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1805
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved