+ All Categories
Home > Documents > 3 Form Cu Subform V05

3 Form Cu Subform V05

Date post: 02-Dec-2015
Category:
Upload: dragoi-mihai
View: 251 times
Download: 1 times
Share this document with a friend
Description:
ase
25
Deschid eți baza de date. 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 va include: Câmp calculat care afișează totalul prețului mărfurilor de pe bon Câmp calculat care afișează numărul de articole de pe bon Așadar: formularul principal va scrie datele în tabela Bon, iar sub- formularul va scrie datele în tabela ContinutBon. Pentru a crea formularul principal, în imaginea de mai jos selectăm din bara din stânga tabela Bon (1), apoi clic Create -> Form:
Transcript
Page 1: 3 Form Cu Subform V05

Deschideți baza de date. 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 va include:

Câmp calculat care afișează totalul prețului mărfurilor de pe bon Câmp calculat care afișează numărul de articole de pe bon

Așadar: formularul principal va scrie datele în tabela Bon, iar sub-formularul va scrie datele în tabela ContinutBon.

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:

Page 2: 3 Form Cu Subform V05

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 (dorim ca toate bonurile să fie emise în același magazin).

Page 3: 3 Form Cu Subform V05

Pentru a vă verifica, puteți trece în modul Form (folosind butoanele din dreapta-jos). Apoi intrați la loc în modul Design, selectați zona de tabelă și șteregeți-o (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:

Page 4: 3 Form Cu Subform V05

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.

Page 5: 3 Form Cu Subform V05

Deci, selectăm tabela ConținutBon, apăsăm butonul >> pentru a prelua toate câmpurile, apoi butonul Next. Ecranul urmor arată așa:

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.

Page 6: 3 Form Cu Subform V05

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, iar în tabelă 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):

Page 7: 3 Form Cu Subform V05

Î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 (ca să vă convingeți, uitați-vă la schema bazei de date). Deci selectați Table: Produs și apoi apăsați Next.

Page 8: 3 Form Cu Subform V05

Î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:

Page 9: 3 Form Cu Subform V05

Î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. Atenție: deși utilizatorul selectează un Nume de produs, de fapt în tabela DetaliiBon stocăm codul produsului. De aceea, alegem „Store that value in this field” și alegem CodProdus. Apoi apăsăm Next.

Page 10: 3 Form Cu Subform V05

În ultimul ecran al asistentului, schimbăm numele etichetei: „NumeProdus” și apăsăm Finish. Formularul trebuie să arate așa:

Page 11: 3 Form Cu Subform V05

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.

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. Deci pasul următor este să adăugăm această tabelă ca sursă de date a sub-formularului:

Page 12: 3 Form Cu Subform V05

Facem clic în zona gri a sub-form-ului, 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:

kj

Facem clic-dreapta pe suprafața gri, și alegem Show Table, apoi din fereastra următoare alegem tabela Produs și click pe Add pentru a adăuga tabela, apoi Close:

Page 13: 3 Form Cu Subform V05

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.

Page 14: 3 Form Cu Subform V05

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:

Page 15: 3 Form Cu Subform V05

Paul următor este să adăugăm totalul bonului, care se calculează ca sumă a totalurilor fiecărei linii. Î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:

Page 16: 3 Form Cu Subform V05

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:

Page 17: 3 Form Cu Subform V05

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.

Page 18: 3 Form Cu Subform V05

Î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 parametrii de intrare un câmp, o tabelă, și 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.

Page 19: 3 Form Cu Subform V05

Î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]

Suntem la finalul exercițiului. Acum este rândul Dvs să puneți în practică ce ați învățat!

TEMĂ

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:

Page 20: 3 Form Cu Subform V05

3. Modificați tabela Bon și adăugați-i un câmp de tip numeric, numit CodFidelizare. În zona principală a formularului adăugați un Text Box denumit Cod Fidelizare, care va scrie datele în câmpul nou creat. La înregistrarea unui bon nou, dacă este introdus un cod fidelizare, atunci se acordă o reducere de 10%, și se afișează mesajul: „Client fidel – reducere 10%”. (În practică, codul de fidelizare este scanat de pe cardul clientului).

4. Fie tabelele:

Student (NrMatricol, Nume, Prenume, DataNastere)

Disciplina( CodDisciplina, 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ă, in 3 casete text:

Page 21: 3 Form Cu Subform V05

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).

Succes!

Page 22: 3 Form Cu Subform V05

Recommended