Sunteți pe pagina 1din 21

1.

Formulare

Similar cu formularele „pe hârtie”, formularele electronice servesc la preluarea datelor de la


utilizatori. În plus, se pot adăuga condiții suplimentare de validare a datelor.

1.1. Formularul de bază

Deschideți baza de date supermarket.accdb. Accesați schema bazei de date: Database Tools >
Relationships

Vom crea un formular pentru Bon, care va conține un sub-formular pentru a înregistra produsele în
tabela ContinutBon. Acest formular va fi implementat pe o casă de marcat, și va fi folosit de casier
pentru a înregistra vânzarea de produse.

Formularul principal va scrie datele în tabela Bon, iar sub-formularul va scrie datele în tabela
ContinutBon (evidențiind produsele și cantitățile de produse înregistrate în cadrul bonului).

Pentru a crea formularul principal, în imaginea de mai jos selectăm din bara din stânga tabela Bon
(1), apoi clic Create -> Form:
Se creează următorul formular:

Observați că Access a creat automat o sub-tabelă cu CodProdus și Cantitate, în baza legăturilor


dintre tabele. Acum ne găsim în modul de vizualizare „Layout” (2 în imaginea de mai sus). Apăsați pe
(3) ca să intrăm în modul Design (vezi imaginea de mai jos). Selectați apoi câmpul DataBon, și în
Property Sheet, la Default Value introduceți =Now() pentru a seta valoarea implicită la data curentă.

În mod similar setați valoarea implicită a lui CodMagazin la 1, și tot din câpmul de proprietăți a lui
CodMagazin, setați Locked -> Yes, pentru a nu permite editarea acestui câmp (în acest
exempludorim ca toate bonurile să fie emise în același magazin).

Pentru a vă verifica, puteți trece în modul de vizualizare Form (folosind butoanele din dreapta-jos).
1.2. Crearea subformularului

Intrați la loc în modul Design, selectați zona de tabelă și șteregeți-o (vezi imaginea de mai jos, click-
dreapta și delete). O vom înlocui imediat cu un subformular.

Apoi click pe butonul de creare a subformularului:

Și plasăm sub-formularul exact în zona de unde am șters mai devreme tabela:


Apare în mod automat Asistentul de creare a sub-formularului (dacă nu apare, încercați click-dreapta
și Build. Sub-formularul nostru va folosi o tabelă existentă pentru a stoca date, și anume tabela
ContinutBon. De accea, opțiunea implicită „Use existing Tables and Queries” corespunde scopului
nostru, și apăsăm Next.

Selectăm tabela ConținutBon, apăsăm butonul >> pentru a prelua toate câmpurile, apoi butonul
Next. Ecranul următor arată astfel:
Aici preluăm valoarea deja selectată, care va lega sub-formularul de formularul principal prin
intermediul câmpului CodBon – opțiune preluată în virtutea legăturilor dintre tabele.

Ultimul ecran al asistentului ne permite să re-denumim formularul (nu o vom face). Apăsăm Finish și
sub-formularul este gata pentru editare:
Trageți de colțul drepata-jos al formularului pentru a crea mai mult loc pentru câmpuri, apoi
extindeți în jos zona Form Footer.

Următorul pas este să creăm un Combo Box pentru CodProdus, astfel încât să nu fim nevoiți să
introducem de mână codurile de produse. Combo-box-ul ne permite să alegem denumirea
produsului dorit, în timp ce în tabela ContinutBon se stochează codul de produs, fără ca operatorul
să fie nevoit să memoreze codul produsului.

Primul pas este să selectăm Text-box-ul existent pentru CodProdus, apoi click-dreapta și Delete (nu
mai ilustrăm acest pas). Din meniul DESIGN (1 în imaginea de mai jos) apăsăm ComboBox (2), plasăm
ComboBox-ul în locul TextBox-ului șters, apoi apare asistentul de configurare (4):
În fereastra asistentului, alegem prima opțiune „I want the combo box to get the values from
another table…” deoarece valorile afișate pentru numele produselor vor proveni din tabela Produs.
Apăsăm apoi butonul Next.

După cum spuneam, denumirile produselor provin din tabela Produse. Selectați Table: Produs și
apoi apăsați Next.
În ecranul de mai sus, selectați câmpurile CodProdus și Nume pentru a fi folosite în Combo Box.
Numele va fi afișat pe ecran și tipărit pe bon, iar codul produsului va fi scris în tabela ConținutBon.
Apăsați apoi Next.

Ecranul de mai sus ne permite să alegem criteriul de ordonare al elementelor care apar în Combo
Box. Vom alege să ordonăm după Nume, astfel încât produsele să fie afișate în ordine alfabetică,
permițându-ne să navigăm ușor în listă. Apăsăm apoi Next și ajungem în ecranul următor:
În mod implicit, coloana-cheie este ascunsă – vezi bifa „Hide key column (recommended)”. Nu avem
nevoie să afișăm codurile de produse; acestea sunt doar stocate în tabela ConținutBon. Pe ecran
afișăm numele produselor, care au sens pentru casieră și pentru cumpărător. Deci lăsăm bifa
„Hide…” și apăsăm butonul Next.

Ecranul de mai sus definește ce dorim să facem cu valoarea selectată de utilizator. Nu uitați: deși
utilizatorul selectează un Nume de produs, de fapt în tabela ContinutBon stocăm codul produsului.
De aceea, alegem „Store that value in this field” și alegem CodProdus. Apoi apăsăm Next.
În ultimul ecran al asistentului, schimbăm numele etichetei: „NumeProdus” și apăsăm Finish.
Formularul trebuie să arate așa:
Verificați formularul intrând în modul Form cu butonul dreapta-jos; produsele trebuie să poată fi
alese prin intermediul Combo-Box-ului.

Mai întâi, schimbați data bonului pentru a „forța” codul bonului să se propage în sub-formular. Apoi,
alegeți „Ciocolata Voinicel” și treceți 10 bucăți. Mutați apoi cursorul pe linia următoare, Access va
salva datele în tabela ConținutBon. Deschideți tabela ConținutBon:

Observați că tabela conține: CodBon 24 -- care este exact codul bonului creat în tabela Bon, acesta s-
a propagat din form-ul principal. CodProdus 2 corespunde produsului „Ciocolata Voinicel”, pe care l-
am ales folosind Combo Box-ul, iar Cantitate 2 este ceea ce am introdus manual în formular.
Închidem tabela ContinutBon și Ne întoarcem la formular, în Design View.

1.3. Elemente suplimentare

Pentru confortul utilizatorilor care introduc date, pasul următor este să arătăm prețul pe linie pentru
fiecare produs. Pentru aceasta, trebuie să preluăm prețul din tabela Produs. Mai întâi, adăugăm
tabela Produs ca sursă de date a sub-formularului:
Facem clic în zona gri a subformularului, ne asigurăm că la Record Source apare Select… apoi clic pe
butonul „...” și ajungem în ecranul unde definim sursa de date a sub-formularului:

Facem clic-dreapta pe suprafața gri, apoi alegem Show Table, apoi din fereastra următoare alegem
tabela Produs și click pe Add pentru a adăuga tabela, apoi Close:
După acest pas, ecranul trebuie să arate în felul următor:

Apoi, în același ecran:

Facem dublu-clic pe Pret din tabela Produs (1), pentru a-l adăuga la sursa de date. După ce am
adăugat Pret, în coloana următoare introducem: TotalLinie: Cantitate * Produs (2) și închidem
ecranul, confirmând fereastra de dialog.
Acum câmpurile sunt disponibile pentru a fi adăugate în sub-formular:

Din Design apăsați butonul Add Existing Fields (2), apoi trageți Pret și TotalLinie în sub-formular.
Verificați-vă în Form View, formularul trebuie să arate așa:
1.4. Câmp calculat – totalul bonului

Pasul următor este să adăugăm totalul bonului, care se calculează ca sumă a totalurilor fiecărei linii și
se actualizează automat atunci când adăugăm produse.

Începem prin a plasa un Text Box în zona de subsol (footer) a sub-formularului și îi setăm Control
Source = Sum([TotalLinie]). (Vă aduceți aminte că TotalLinie = Cantitate * Pret). Schimbăm numele
Text Box-ului la TotalBon, astfel încât să-l regăsim ușor mai târziu.
Acum puteți trece în modul Form View și veți observa că… totalul nu este vizibil! Mergem înapoi în
Design View și apăsăm Save:

Apoi plasăm un nou Text Box în zona de subsol a formularului principal! (1 și2 mai jos). Acest nou
Text Box va copia valoarea totalului „invizibil”, pe care l-am creat mai devreme. Din Data Source a
noului Text Box apăsăm simbolul „…” pentru a specifica valoarea sa (3):

În fereastra care apare (Expression Builder) dorim să specificăm valoarea lui TotalLinie. Deoarece
acesta se găsește în sub-form, navigăm la ContinutBon subform (4), apoi îl găsim pe TotalBon din
coloana Expression Categories și dăm dublu-clic (dacă nu ați dat Save la pasul anterior, nu îl veți
găsi). Va apărea expresia [ContinutBon subform].Form![TotalBon] (6). Apăsăm butonul OK (7).
Formularul trebuie să arate așa:
Acum adăugăm un nou TextBox (1 și 2 mai jos) în care vom afișa numărul total de produse din sub-
formular.
Îi modificăm proprietățile astfel încât numele să fie NrArticole, iar la formulă trecem:

=DLookUp("Count(CodBon)","ContinutBon","CodBon=" & [CodBon])

Funcția DlookUp extrage o valoare dintr-o tabelă și are ca parametri de intrare:

 un câmp,
 o tabelă,
 condițiile pe care trebuie să le îndeplinească datele căutate.

Atragem atenția că nu putem afișa rezultatul unui Query într-un TextBox, deoarece un Query poate
returna mai multe valori, iar TextBox așteaptă doar o singură valoare (de aceea folosim DLookUp).

Verificând în Form View, veți observa că valoarea numărului de articole este corectă, dar nu se
actualizează atunci când adăugă sau se șterg articole (încercați și Dvs). De aceea vom adăuga acțiuni
care să se execute atunci când se adaugă sau se șterg linii în sub-formular.
În Design View, facem clic în zona sub-form-ului (1), apoi în tab-ul Event (2) modificăm
evenimentele After Update și On Delete și trecem în ambel instrucțiunea:

=[Forms]![Bon]![NrArticole].[Requery]

Am ajuns la finalul exercițiului, puteți verifica funcționarea corectă a formularului. Acum este rândul
Dvs să puneți în practică ce ați învățat!

1.5. Exerciții

1. Adăugați restricția Cantitate > 0, și faceți prețul ne-editabil, încât acesta nu trebuie editat de
casier;
2. Adăugați în sub-formular câmpurile Cota TVA (provenind din tabela Produs) și câmpul TVA
Linie, care calculează TVA-ul corespunzător liniei. Adăugați în zona de subsol un Text Box,
TOTAL TVA, care afișează totalul de TVA de pe bon. Atenție la formula de calcul a TVA-ului!
Vedeți imaginea de mai jos:
3. Modificați tabela Bon și adăugați-i un câmp de tip numeric, numit CodFidelitate. În zona
principală a formularului adăugați un Text Box denumit Cod Fidelitate, care va scrie datele în
câmpul nou creat. La înregistrarea unui bon nou, dacă este introdus un cod fidelitate, atunci
se acordă o reducere de 10%, și se afișează mesajul: „Client fidel – reducere 10%”. (În
practică, codul de fidelizate este scanat de pe cardul clientului).

4. Crearea de grafice:
 Creați un query de sinteză care să redea valoare produselor vândute pe fiecare magazin;
 Creați un formular nou;
 Din Form Design, selectați icoana pentru grafice și selectați în zona de detail al
formularului aria în care doriţi construirea graficului;
 Se deschide fereastra Chart Wizard. Precizaţi sursa datelor (interogarea), precizaţi
câmpurile ( ar trebui sa fie două – magazinul si valoarea), selectați tipul de grafic - Pie,
pot cere Preview (în fereastra Chart Wizard), precizez titlul graficului, vizualizarea
graficului se face în modul (Layout View). Se salvează formularul.

5. Creați o interfață pentru aplicația Access folosind butoane de comandă care să permită
executarea obiectelor Access create.
6. Fie tabelele:

Student (NrMatricol, Nume, Prenume, DataNastere)

Disciplina( Cod Disciplina, NumeDisciplina)

Examen(CodExamen, CodDisciplină, DataExamen, SalaExamen, TipExamen) – Tip = normal


sau restanta

Catalog(CodExamen, CodStudent, Nota)

Cerințe: Creați tabelele și introduceți date pentru Student și Disciplină. Apoi, creați un
formular pentru Examen. Într-un sub-formular, care scrie datele în Catalog, se selectează
dintr-un Combo Box studentul și se introduce nota. În subsolul formularului principal se
afișează, în 3 casete text:

 Media notelor la examen;


 Numărul de studenți promovați;
 Numărul de studenți ne-promovați.

Atenție la regulile de validare (nota>0 etc).

S-ar putea să vă placă și