|
|
Aplicații practice Microsoft Access 2019
Mod de lucru: realizați aplicațiile în ordinea propusă. Pentru fiecare bază de date creați tabelele în Vizualizare proiect, introduceți date de test, stabiliți relațiile, apoi construiți interogările, formularele și rapoartele. Salvați fiecare obiect imediat după creare.
Convenție: câmpurile care încep cu ID sunt identificatori. Cheia primară este de tip Numerotare automată; cheia externă corespunzătoare este de tip Număr, cu Dimensiune câmp = Întreg lung.
Aplicația 1 — Biblioteca începător
Obiectiv: evidența cărților și a autorilor, afișarea cărților disponibile cu prețul peste o valoare stabilită.
Etapa 1. Creați baza și tabelele
- Alegeți Fișier → Nou → Bază de date necompletată.
- Salvați fișierul cu numele
Biblioteca.accdb. - Alegeți Creare → Proiectare tabel și construiți tabelele de mai jos.
| Tabela Autori | Tip de date | Proprietăți |
|---|
| IDAutor | Numerotare automată | Cheie primară | | NumeAutor | Text scurt | Obligatoriu = Da | | Tara | Text scurt | Dimensiune 50 |
| Tabela Carti | Tip de date | Proprietăți |
|---|
| IDCarte | Numerotare automată | Cheie primară | | Titlu | Text scurt | Dimensiune 150; Obligatoriu = Da | | AnAparitie | Număr | Regulă: Between 1500 And Year(Date()) | | Pret | Monedă | Regulă: >=0 | | Disponibila | Da/Nu | Valoare implicită = Da | | Coperta | Atașare | Opțional | | IDAutor | Număr | Întreg lung |
Etapa 2. Introduceți datele — exemplu complet
Ordinea introducerii: completați mai întâi tabela Autori, apoi tabela Carti. Nu scrieți manual valorile din câmpurile de tip Numerotare automată; numerele de mai jos arată ID-urile obținute dacă introduceți înregistrările în această ordine.
Autori| IDAutor | NumeAutor | Tara |
|---|
| 1 | Ana Marinescu | România | | 2 | Mihai Popescu | România | | 3 | Radu Dumitrescu | România | | 4 | Elena Ionescu | România | | 5 | Jules Verne | Franța |
Carti| IDCarte | Titlu | AnAparitie | Pret | Disponibila | Coperta | IDAutor |
|---|
| 1 | Secretul bibliotecii | 2021 | 39,90 | Da | coperta_secretul.jpg | 1 | | 2 | Orașul de hârtie | 2019 | 28,50 | Da | — | 2 | | 3 | Grădina cu povești | 2020 | 32,75 | Da | — | 3 | | 4 | Umbre peste lac | 2022 | 45,00 | Nu | — | 4 | | 5 | Călătorie spre centrul Pământului | 1864 | 27,90 | Da | coperta_calatorie.jpg | 5 | | 6 | Insula misterioasă | 1874 | 36,50 | Da | — | 5 | | 7 | Algoritmi pentru începători | 2024 | 52,00 | Da | — | 2 | | 8 | Povești de seară | 2018 | 22,00 | Nu | — | 4 |
Control rapid: interogarea cu Pret > 30 și Disponibila = Da trebuie să returneze cărțile cu ID 1, 3, 6 și 7.
Etapa 3. Creați relația- Închideți tabelele și deschideți Instrumente bază de date → Relații.
- Adăugați Autori și Carti.
- Trageți Autori.IDAutor peste Carti.IDAutor.
- Bifați Impunere integritate referențială și apăsați Creare.
Etapa 4. Interogări
a) Carti_disponibile_peste_30_lei: câmpuri Titlu, NumeAutor, AnAparitie, Pret, Disponibila; criterii Pret >30 și Disponibila Da, pe același rând.
b) Carti_dupa_an: sub AnAparitie introduceți parametrul >=[Introduceți anul minim:].
c) Numar_carti_pe_autor: activați Totaluri, grupați după NumeAutor și aplicați Count asupra IDCarte.
Etapa 5. Formular și raport- Creați cu Expert formular un formular pentru Carti, numit
Formular_Carti. - Verificați afișarea câmpului Coperta.
- Creați un raport din prima interogare, sortat crescător după Titlu.
- Salvați-l ca
Raport_Carti_disponibile_peste_30_lei și verificați-l în Examinare înaintea imprimării.
Rezultat așteptat: baza conține două tabele legate 1–∞, trei interogări, un formular și un raport.
Aplicația 2 — Catalog școlar începător–mediu
Obiectiv: evidența elevilor, disciplinelor și notelor, calcularea mediilor și identificarea situațiilor sub 5.
Etapa 1. Structura bazei
| Tabela Elevi | Tip | Observație |
|---|
| IDElev | Numerotare automată | Cheie primară | | Nume | Text scurt | Obligatoriu | | Prenume | Text scurt | Obligatoriu | | Clasa | Text scurt | Exemplu: 10A | | DataNasterii | Dată/Oră | Format Dată scurtă |
| Tabela Discipline | Tip |
|---|
| IDDisciplina | Numerotare automată — cheie primară | | Denumire | Text scurt | | NumarOre | Număr |
| Tabela Note | Tip | Regulă |
|---|
| IDNota | Numerotare automată | Cheie primară | | IDElev | Număr | Întreg lung | | IDDisciplina | Număr | Întreg lung | | Nota | Număr | Between 1 And 10 | | DataNota | Dată/Oră | <=Date() |
Etapa 2. Relații și date — exemplu complet- Creați relațiile Elevi.IDElev → Note.IDElev și Discipline.IDDisciplina → Note.IDDisciplina.
- Activați integritatea referențială pentru ambele.
- Introduceți datele în ordinea Discipline, Elevi, Note. ID-urile se generează automat.
Discipline| IDDisciplina | Denumire | NumarOre |
|---|
| 1 | Informatică | 2 | | 2 | Matematică | 4 | | 3 | Limba română | 4 | | 4 | Fizică | 2 |
Elevi| IDElev | Nume | Prenume | Clasa | DataNasterii |
|---|
| 1 | Ionescu | Mara | 10A | 14.03.2010 | | 2 | Popa | Andrei | 10A | 22.07.2010 | | 3 | Stan | Elena | 10A | 09.11.2010 | | 4 | Dumitru | Vlad | 10A | 05.01.2010 | | 5 | Radu | Ioana | 10B | 18.05.2010 | | 6 | Marin | David | 10B | 30.08.2010 | | 7 | Pavel | Sofia | 10B | 12.12.2010 | | 8 | Enache | Tudor | 10B | 02.02.2010 |
Note| IDNota | IDElev | IDDisciplina | Nota | DataNota |
|---|
| 1 | 1 | 1 | 9 | 01.09.2026 | | 2 | 1 | 2 | 8 | 02.09.2026 | | 3 | 1 | 3 | 10 | 03.09.2026 | | 4 | 2 | 1 | 7 | 04.09.2026 | | 5 | 2 | 2 | 6 | 05.09.2026 | | 6 | 2 | 4 | 8 | 06.09.2026 | | 7 | 3 | 1 | 10 | 07.09.2026 | | 8 | 3 | 2 | 9 | 08.09.2026 | | 9 | 3 | 3 | 9 | 09.09.2026 | | 10 | 4 | 1 | 4 | 10.09.2026 | | 11 | 4 | 2 | 5 | 11.09.2026 | | 12 | 4 | 4 | 3 | 12.09.2026 | | 13 | 5 | 1 | 8 | 13.09.2026 | | 14 | 5 | 2 | 9 | 14.09.2026 | | 15 | 5 | 3 | 8 | 15.09.2026 | | 16 | 6 | 1 | 6 | 16.09.2026 | | 17 | 6 | 2 | 4 | 17.09.2026 | | 18 | 6 | 4 | 7 | 18.09.2026 | | 19 | 7 | 1 | 10 | 19.09.2026 | | 20 | 7 | 2 | 10 | 20.09.2026 | | 21 | 7 | 3 | 9 | 21.09.2026 | | 22 | 8 | 1 | 5 | 22.09.2026 | | 23 | 8 | 2 | 7 | 23.09.2026 | | 24 | 8 | 4 | 6 | 24.09.2026 | | 25 | 2 | 3 | 9 | 25.09.2026 |
Control rapid: Note_sub_5 trebuie să afișeze notele 4, 3 și 4; Medii_peste_8 îi include pe Mara, Elena, Ioana și Sofia.
Etapa 3. Interogări- Note_clasa: parametru în câmpul Clasa:
[Introduceți clasa:]; sortare după Nume și Prenume. - Note_sub_5: criteriu
<5 în câmpul Nota. - Medii_elevi: Totaluri; Group By după elev și Avg pentru Nota; redenumiți câmpul calculat
Media: Avg([Nota]). - Medii_peste_8: porniți de la Medii_elevi și aplicați criteriul
>=8 sub Media.
Etapa 4. Formular și raport- Creați un formular principal pentru Elevi și un subformular pentru Note.
- Verificați legătura câmpurilor master/child IDElev.
- Creați raportul
Raport_Medii_elevi, grupat după Clasa și sortat descrescător după Media. - Adăugați în subsol numărul elevilor folosind
=Count([IDElev]).
Verificare: modificarea unui elev în formular schimbă automat notele afișate în subformular.
Aplicația 3 — Magazin și gestiunea stocului mediu
Obiectiv: evidența produselor, furnizorilor și intrărilor în stoc; calcularea valorii stocului.
Etapa 1. Tabele
| Tabela Categorii | Tip |
|---|
| IDCategorie | Numerotare automată — cheie primară | | DenumireCategorie | Text scurt |
| Tabela Produse | Tip | Proprietate |
|---|
| IDProdus | Numerotare automată | Cheie primară | | DenumireProdus | Text scurt | Obligatoriu | | IDCategorie | Număr | Întreg lung | | PretUnitar | Monedă | >0 | | Stoc | Număr | >=0 | | StocMinim | Număr | Valoare implicită 5 |
| Tabela Furnizori | Tip |
|---|
| IDFurnizor | Numerotare automată — cheie primară | | NumeFurnizor | Text scurt | | Telefon | Text scurt | | Email | Text scurt |
| Tabela Aprovizionari | Tip |
|---|
| IDAprovizionare | Numerotare automată — cheie primară | | IDProdus | Număr — Întreg lung | | IDFurnizor | Număr — Întreg lung | | DataIntrare | Dată/Oră | | Cantitate | Număr; regulă >0 |
Etapa 2. Date de test completeIntroduceți în ordinea Categorii, Produse, Furnizori, Aprovizionari. ID-urile sunt generate automat.
Categorii| IDCategorie | DenumireCategorie |
|---|
| 1 | Birotică | | 2 | IT | | 3 | Papetărie | | 4 | Accesorii |
Produse| IDProdus | DenumireProdus | IDCategorie | PretUnitar | Stoc | StocMinim |
|---|
| 1 | Hârtie A4 | 1 | 29,90 | 4 | 10 | | 2 | Capsator metalic | 1 | 35,00 | 12 | 5 | | 3 | Tastatură USB | 2 | 89,90 | 3 | 5 | | 4 | Mouse wireless | 2 | 74,50 | 18 | 6 | | 5 | Caiet A4 | 3 | 12,50 | 5 | 8 | | 6 | Pix albastru | 3 | 3,20 | 40 | 15 | | 7 | Stick USB 64 GB | 4 | 45,00 | 2 | 4 | | 8 | Căști cu microfon | 4 | 120,00 | 9 | 3 |
Furnizori| IDFurnizor | NumeFurnizor | Telefon | Email |
|---|
| 1 | Office Plus | 0251 410 100 | comenzi@officeplus.ro | | 2 | Tech Distribution | 021 330 2020 | vanzari@techdistribution.ro | | 3 | Papetăria Sud | 0351 700 300 | contact@papetariasud.ro | | 4 | Digital Store | 031 555 4040 | office@digitalstore.ro |
Aprovizionari| IDAprovizionare | IDProdus | IDFurnizor | DataIntrare | Cantitate |
|---|
| 1 | 1 | 1 | 02.09.2026 | 20 | | 2 | 2 | 1 | 02.09.2026 | 10 | | 3 | 3 | 2 | 05.09.2026 | 8 | | 4 | 4 | 2 | 05.09.2026 | 15 | | 5 | 5 | 3 | 10.09.2026 | 30 | | 6 | 6 | 3 | 10.09.2026 | 100 | | 7 | 7 | 4 | 12.09.2026 | 12 | | 8 | 8 | 4 | 12.09.2026 | 10 | | 9 | 1 | 3 | 18.09.2026 | 15 | | 10 | 3 | 2 | 20.09.2026 | 6 | | 11 | 5 | 1 | 21.09.2026 | 20 | | 12 | 7 | 4 | 23.09.2026 | 8 |
Control rapid: Produse_de_comandat trebuie să returneze IDProdus 1, 3, 5 și 7.
Etapa 3. Relații- Categorii.IDCategorie → Produse.IDCategorie.
- Produse.IDProdus → Aprovizionari.IDProdus.
- Furnizori.IDFurnizor → Aprovizionari.IDFurnizor.
- Activați integritatea referențială.
Etapa 4. Interogări calculate- Valoare_stoc: adăugați câmpul
Valoare: [PretUnitar]*[Stoc]. - Produse_de_comandat: criteriu
<=[StocMinim] sub Stoc. - Aprovizionari_perioada: criteriu
Between [Data început:] And [Data sfârșit:]. - Total_aprovizionat: grupați după produs și calculați Sum pentru Cantitate.
Etapa 5. Formulare și rapoarte- Creați formularul Produse și transformați IDCategorie într-o casetă combinată care afișează denumirea categoriei.
- Creați formularul Furnizori cu subformularul Aprovizionari.
- Creați raportul Valoare_stoc, grupat după categorie.
- În subsolul raportului adăugați totalul general:
=Sum([Valoare]).
Aplicația 4 — Evidența împrumuturilor mediu
Obiectiv: urmărirea obiectelor împrumutate, termenelor de restituire și întârzierilor.
Etapa 1. TabeleCreați tabelele Persoane (IDPersoana, Nume, Telefon, Email), Obiecte (IDObiect, Denumire, Categorie, Disponibil) și Imprumuturi (IDImprumut, IDPersoana, IDObiect, DataImprumut, DataScadenta, DataRestituire). - DataImprumut: valoare implicită
Date(). - DataScadenta: regulă
>=[DataImprumut]. - DataRestituire poate rămâne necompletată până la returnare.
Etapa 2. Date de test completeIntroduceți mai întâi Persoane și Obiecte, apoi Imprumuturi. În coloana DataRestituire, gol înseamnă că nu introduceți nimic.
Persoane| IDPersoana | Nume | Telefon | Email |
|---|
| 1 | Ana Ionescu | 0712 111 101 | ana.ionescu@exemplu.ro | | 2 | Mihai Popescu | 0722 222 202 | mihai.popescu@exemplu.ro | | 3 | Elena Radu | 0733 333 303 | elena.radu@exemplu.ro | | 4 | Vlad Stan | 0744 444 404 | vlad.stan@exemplu.ro | | 5 | Ioana Pavel | 0755 555 505 | ioana.pavel@exemplu.ro | | 6 | David Marin | 0766 666 606 | david.marin@exemplu.ro |
Obiecte| IDObiect | Denumire | Categorie | Disponibil |
|---|
| 1 | Laptop Dell | IT | Nu | | 2 | Proiector Epson | Echipament | Nu | | 3 | Aparat foto Canon | Multimedia | Da | | 4 | Tabletă Samsung | IT | Nu | | 5 | Microfon wireless | Audio | Da | | 6 | Atlas geografic | Carte | Da | | 7 | Robot educațional | Educație | Nu | | 8 | Cameră video Sony | Multimedia | Da |
Imprumuturi| IDImprumut | IDPersoana | IDObiect | DataImprumut | DataScadenta | DataRestituire |
|---|
| 1 | 1 | 1 | 10.09.2026 | 17.09.2026 | gol | | 2 | 2 | 2 | 20.09.2026 | 27.09.2026 | gol | | 3 | 3 | 3 | 01.09.2026 | 08.09.2026 | 07.09.2026 | | 4 | 4 | 4 | 12.09.2026 | 19.09.2026 | gol | | 5 | 5 | 5 | 05.09.2026 | 12.09.2026 | 12.09.2026 | | 6 | 1 | 6 | 15.08.2026 | 22.08.2026 | 20.08.2026 | | 7 | 6 | 7 | 18.09.2026 | 25.09.2026 | gol | | 8 | 2 | 8 | 02.09.2026 | 09.09.2026 | 10.09.2026 | | 9 | 3 | 5 | 23.09.2026 | 30.09.2026 | 25.09.2026 | | 10 | 5 | 3 | 22.09.2026 | 29.09.2026 | 24.09.2026 |
Control la 26.09.2026: Imprumuturi_active returnează ID 1, 2, 4 și 7; Imprumuturi_intarziate returnează ID 1, 4 și 7. La o dată ulterioară, lista întârzierilor se actualizează automat.
Etapa 3. RelațiiPersoane 1–∞ Imprumuturi și Obiecte 1–∞ Imprumuturi, cu integritate referențială.
Etapa 4. Interogări
- Imprumuturi_active: criteriu
Is Null sub DataRestituire. - Imprumuturi_intarziate: criterii
<Date() sub DataScadenta și Is Null sub DataRestituire. - Zile_intarziere: câmp calculat
ZileIntarziere: Date()-[DataScadenta]. - Istoric_persoana: parametru
[Introduceți numele:] sub Nume.
Etapa 5. Formular de lucru- Creați formular pentru Imprumuturi.
- Înlocuiți IDPersoana și IDObiect cu liste derulante care afișează numele și denumirea.
- Adăugați un buton pentru înregistrare nouă și unul pentru închiderea formularului.
- Creați raportul Împrumuturi întârziate, sortat după numărul zilelor de întârziere.
Aplicația 5 — Cabinet medical mediu–avansat
Obiectiv: programarea pacienților la medici și obținerea listelor zilnice. Se folosesc numai date fictive.
Protecția datelor: nu introduceți date medicale reale în exercițiu.
Etapa 1. Tabele
| Tabel | Câmpuri |
|---|
| Pacienti | IDPacient, Nume, Prenume, DataNasterii, Telefon | | Medici | IDMedic, NumeMedic, Specializare | | Programari | IDProgramare, IDPacient, IDMedic, DataProgramare, OraProgramare, Motiv, Status |
Pentru Status creați o listă de valori: Programată;Efectuată;Anulată. Pentru DataProgramare folosiți regula >=Date() în momentul introducerii programării.
Etapa 2. Relații și date — exemplu complet- Pacienti.IDPacient → Programari.IDPacient.
- Medici.IDMedic → Programari.IDMedic.
- Introduceți Pacienti și Medici înainte de Programari.
Pacienti (toate datele sunt fictive)| IDPacient | Nume | Prenume | DataNasterii | Telefon |
|---|
| 1 | Ionescu | Ana | 12.04.1985 | 0712 100 101 | | 2 | Popescu | Mihai | 23.09.1978 | 0722 100 102 | | 3 | Radu | Elena | 05.02.1992 | 0733 100 103 | | 4 | Stan | Vlad | 19.11.2001 | 0744 100 104 | | 5 | Pavel | Ioana | 30.06.1969 | 0755 100 105 | | 6 | Marin | David | 08.01.1988 | 0766 100 106 | | 7 | Dumitru | Sofia | 14.08.1995 | 0777 100 107 | | 8 | Enache | Tudor | 21.03.1975 | 0788 100 108 | | 9 | Matei | Irina | 17.12.2004 | 0799 100 109 | | 10 | Georgescu | Paul | 02.05.1981 | 0700 100 110 |
Medici| IDMedic | NumeMedic | Specializare |
|---|
| 1 | Dr. Andrei Georgescu | Cardiologie | | 2 | Dr. Elena Marinescu | Dermatologie | | 3 | Dr. Radu Petrescu | ORL | | 4 | Dr. Ioana Stan | Medicină generală |
ProgramariExemplul este raportat la 26.09.2026. Dacă lucrați după această dată și regula >=Date() respinge valorile, mutați toate datele programărilor în viitor, păstrând aceleași intervale; pentru testarea interogării Programari_azi, puneți data curentă în primele patru rânduri.
| IDProgramare | IDPacient | IDMedic | DataProgramare | OraProgramare | Motiv | Status |
|---|
| 1 | 1 | 1 | 26.09.2026 | 09:00 | Control periodic | Programată | | 2 | 2 | 2 | 26.09.2026 | 09:30 | Erupție cutanată | Programată | | 3 | 3 | 3 | 26.09.2026 | 10:00 | Durere de ureche | Programată | | 4 | 4 | 4 | 26.09.2026 | 10:30 | Consultație generală | Efectuată | | 5 | 5 | 1 | 28.09.2026 | 08:30 | Tensiune arterială | Programată | | 6 | 6 | 2 | 28.09.2026 | 09:15 | Control dermatologic | Programată | | 7 | 7 | 3 | 28.09.2026 | 11:00 | Dureri în gât | Anulată | | 8 | 8 | 4 | 29.09.2026 | 08:45 | Analize uzuale | Programată | | 9 | 9 | 1 | 29.09.2026 | 10:15 | Palpitații | Programată | | 10 | 10 | 2 | 30.09.2026 | 09:00 | Control alunițe | Programată | | 11 | 1 | 3 | 01.10.2026 | 09:30 | Control auditiv | Programată | | 12 | 2 | 4 | 01.10.2026 | 11:30 | Stare de oboseală | Programată | | 13 | 3 | 1 | 02.10.2026 | 08:30 | Evaluare cardiacă | Programată | | 14 | 4 | 2 | 02.10.2026 | 10:00 | Iritație cutanată | Programată | | 15 | 5 | 3 | 05.10.2026 | 09:45 | Sinuzită | Programată | | 16 | 6 | 4 | 05.10.2026 | 12:00 | Control anual | Programată | | 17 | 7 | 1 | 07.10.2026 | 08:00 | EKG | Programată | | 18 | 8 | 2 | 07.10.2026 | 10:30 | Alergie | Anulată | | 19 | 9 | 3 | 09.10.2026 | 09:00 | Răgușeală | Programată | | 20 | 10 | 4 | 10.10.2026 | 11:00 | Consultație generală | Programată |
Control rapid: la 26.09.2026, Programari_azi afișează patru înregistrări, în ordinea 09:00, 09:30, 10:00 și 10:30.
Etapa 3. Interogări- Programari_azi: criteriu
Date() sub DataProgramare; sortare după OraProgramare. - Programari_medic: parametru sub NumeMedic.
- Programari_perioada: două valori parametrice pentru date.
- Numar_programari_medic: Group By după medic și Count pentru IDProgramare.
Etapa 4. Formular și raport- Creați formularul Programari cu liste derulante pentru pacient și medic.
- Adăugați un filtru pentru Status.
- Creați raportul Programări zilnice, grupat după medic și sortat după oră.
- În antet afișați data prin expresia
=Date().
Aplicația 6 — Agenție turistică avansat
Obiectiv: gestionarea clienților, destinațiilor și rezervărilor, cu calcularea valorii și a încasărilor.
Etapa 1. Tabele și relații
| Tabel | Câmpuri principale |
|---|
| Clienti | IDClient, NumeClient, Telefon, Email | | Destinatii | IDDestinatie, Tara, Localitate, PretPersoana, LocuriDisponibile | | Rezervari | IDRezervare, IDClient, IDDestinatie, DataRezervare, DataPlecare, NumarPersoane, Avans, Achitata |
- Clienti.IDClient → Rezervari.IDClient.
- Destinatii.IDDestinatie → Rezervari.IDDestinatie.
- Pentru NumarPersoane folosiți regula
>0. - Pentru Avans folosiți Monedă și regula
>=0.
Etapa 2. Date de test completeIntroduceți în ordinea Clienti, Destinatii, Rezervari. Datele sunt fictive, iar ID-urile sunt generate automat.
Clienti| IDClient | NumeClient | Telefon | Email |
|---|
| 1 | Ana Ionescu | 0712 201 101 | ana.ionescu@exemplu.ro | | 2 | Mihai Popescu | 0722 202 202 | mihai.popescu@exemplu.ro | | 3 | Elena Radu | 0733 203 303 | elena.radu@exemplu.ro | | 4 | Vlad Stan | 0744 204 404 | vlad.stan@exemplu.ro | | 5 | Ioana Pavel | 0755 205 505 | ioana.pavel@exemplu.ro | | 6 | David Marin | 0766 206 606 | david.marin@exemplu.ro | | 7 | Sofia Dumitru | 0777 207 707 | sofia.dumitru@exemplu.ro | | 8 | Tudor Enache | 0788 208 808 | tudor.enache@exemplu.ro |
Destinatii| IDDestinatie | Tara | Localitate | PretPersoana | LocuriDisponibile |
|---|
| 1 | Grecia | Creta | 1.800,00 | 25 | | 2 | Italia | Roma | 1.500,00 | 20 | | 3 | Spania | Barcelona | 2.100,00 | 18 | | 4 | Franța | Paris | 1.950,00 | 15 | | 5 | Turcia | Antalya | 1.600,00 | 30 | | 6 | Austria | Viena | 1.400,00 | 16 |
Rezervari| IDRezervare | IDClient | IDDestinatie | DataRezervare | DataPlecare | NumarPersoane | Avans | Achitata |
|---|
| 1 | 1 | 1 | 01.09.2026 | 15.10.2026 | 2 | 3.600 | Da | | 2 | 2 | 2 | 02.09.2026 | 18.10.2026 | 1 | 500 | Nu | | 3 | 3 | 3 | 03.09.2026 | 22.10.2026 | 2 | 4.200 | Da | | 4 | 4 | 4 | 04.09.2026 | 28.10.2026 | 3 | 2.000 | Nu | | 5 | 5 | 5 | 05.09.2026 | 05.11.2026 | 2 | 3.200 | Da | | 6 | 6 | 6 | 06.09.2026 | 10.11.2026 | 1 | 400 | Nu | | 7 | 7 | 1 | 07.09.2026 | 12.11.2026 | 4 | 7.200 | Da | | 8 | 8 | 2 | 08.09.2026 | 20.11.2026 | 2 | 1.000 | Nu | | 9 | 1 | 3 | 09.09.2026 | 03.12.2026 | 1 | 2.100 | Da | | 10 | 2 | 4 | 10.09.2026 | 08.12.2026 | 2 | 1.500 | Nu | | 11 | 3 | 5 | 11.09.2026 | 12.12.2026 | 3 | 4.800 | Da | | 12 | 4 | 6 | 12.09.2026 | 18.12.2026 | 2 | 800 | Nu | | 13 | 5 | 1 | 13.09.2026 | 15.01.2027 | 1 | 1.800 | Da | | 14 | 6 | 2 | 14.09.2026 | 20.01.2027 | 5 | 2.500 | Nu | | 15 | 8 | 3 | 15.09.2026 | 25.01.2027 | 19 | 5.000 | Nu |
Control rapid: Rezervari_neachitate returnează ID 2, 4, 6, 8, 10, 12, 14 și 15; interogarea-provocare semnalează rezervarea 15, deoarece 19 > 18.
Etapa 3. Interogări calculate
- Valoare_rezervari:
Valoare: [PretPersoana]*[NumarPersoane]. - Rest_de_plata:
Rest: [Valoare]-[Avans]. - Plecari_luna: criteriu
Month([DataPlecare])=[Introduceți luna:]. - Rezervari_neachitate: criteriu
Nu sub Achitata. - Incasari_destinatie: Group By după destinație și Sum pentru Valoare.
Etapa 4. Formular principal cu subformular- Creați formularul principal Clienti.
- Adăugați subformularul Rezervari și legați-l prin IDClient.
- În subformular transformați IDDestinatie într-o listă derulantă.
- Adăugați un control calculat pentru valoare și unul pentru restul de plată.
Etapa 5. Rapoarte- Creați raportul Plecări lunare, grupat după DataPlecare.
- Creați raportul Încasări pe destinații și adăugați total general.
- Verificați orientarea paginii și lățimea coloanelor.
- Exportați raportul final în PDF.
Provocare: creați o interogare care semnalează rezervările unde NumarPersoane depășește LocuriDisponibile.
Grilă de verificare pentru orice aplicație
- Fiecare tabel are cheie primară.
- Cheile externe au tipul Număr – Întreg lung.
- Relațiile au integritate referențială.
- Tipurile de date și regulile de validare sunt corecte.
- Interogările returnează rezultatele așteptate.
- Formularele permit navigarea și introducerea datelor.
- Rapoartele nu au câmpuri sau etichete trunchiate.
- Obiectele au denumiri clare și sunt salvate.
Înapoi la începutul paginii
|
|